Android 竖直滚动广告条、上下滚动广告条,View滚动广告条;
生活随笔
收集整理的這篇文章主要介紹了
Android 竖直滚动广告条、上下滚动广告条,View滚动广告条;
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
四種方式實現仿淘寶滾動廣告條:
- TextView+Handler延時動畫 實現滾動效果;
- 自定義ViewFlipper 實現滾動效果;(用法簡單,推薦使用)
- RecyclerView+子線程延時 實現滾動效果;
- 豎直ViewPager+Handler延時 實現滾動效果;
項目已上傳Github:https://github.com/CuiChenbo/UpRollView;
其實最早寫這個效果是在16年的時候,現在拿出來整理一下,同時也看一下自己之前的代碼;
Android仿淘寶頭條滾動廣告條?, 之前寫的沒有傳源碼,也比較亂;
下面是一些實現功能的主要代碼,看全部代碼還是移步到UpRollView;
一、TextView+Handler延時動畫
private void TextViewRollAd() {TVADPOSITION++;handler.removeMessages(TVADWITH);handler.sendEmptyMessageDelayed(TVADWITH,2500);}private void TvAnimation() {TranslateAnimation downTranslateAnimation=new TranslateAnimation(0,0,0,-tv.getHeight());downTranslateAnimation.setDuration(500);downTranslateAnimation.setFillAfter(true);AlphaAnimation alphaAnimation=new AlphaAnimation(1,0);alphaAnimation.setDuration(500);AnimationSet animationSetOut=new AnimationSet(true);animationSetOut.addAnimation(downTranslateAnimation);animationSetOut.addAnimation(alphaAnimation);tv.startAnimation(animationSetOut);animationSetOut.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation){int iii = TVADPOSITION% mList_Tv_Ad.size();tv.setText(mList_Tv_Ad.get(iii));topTranslateAnimation();}@Overridepublic void onAnimationRepeat(Animation animation) {}});}private void topTranslateAnimation(){TranslateAnimation topTranslateAnimation=new TranslateAnimation(0,0,tv.getHeight(),0);topTranslateAnimation.setDuration(500);topTranslateAnimation.setFillAfter(true);AlphaAnimation alphaAnimation=new AlphaAnimation(0,1);alphaAnimation.setDuration(500);AnimationSet animationSetIn=new AnimationSet(true);animationSetIn.addAnimation(topTranslateAnimation);animationSetIn.addAnimation(alphaAnimation);tv.startAnimation(animationSetIn);animationSetIn.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation){}});}二、自定義ViewFlipper(推薦使用,用法最簡單)
public class UpRollView extends ViewFlipper {private Context content;public UpRollView(Context context) {super(context);init(context);}private int Interval = 3000;public UpRollView(Context context, AttributeSet attrs) {super(context, attrs);init(context);}private void init(Context context) {this.content = context;setFlipInterval(Interval);//設置時間間隔setInAnimation(context, R.anim.in);setOutAnimation(context, R.anim.out);}public void setInterval(int i){Interval = i;setFlipInterval(Interval);//設置時間間隔}/*** 設置循環滾動的View數組*/public void setViews(final List<View> views) {if (views == null || views.size() == 0) return;removeAllViews();for ( int i = 0; i < views.size(); i++) {final int finalposition=i;//設置監聽回調views.get(i).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (onItemClickListener != null) {onItemClickListener.onItemClick(finalposition, views.get(finalposition));}}});addView(views.get(i));}startFlipping();}private OnItemClickListener onItemClickListener;public void setOnItemClickListener(OnItemClickListener onItemClickListener) {this.onItemClickListener = onItemClickListener;}public interface OnItemClickListener {void onItemClick(int position, View view);} }三、RecyclerView+子線程延時
new PagerSnapHelper().attachToRecyclerView(rv); //一次滑動一頁private int cp;DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator();private void startRoll(){thread = new Thread(new Runnable() {@Overridepublic void run() {SystemClock.sleep(3000);if (!thread.isInterrupted()) {rv.smoothScrollBy(0, dp2px(60), decelerateInterpolator);// rv.smoothScrollToPosition(++cp);this.run();}}});thread.start();}四、豎直ViewPager+Handler延時
垂直viewpager:https://blog.csdn.net/qq_35605213/article/details/86467859
private void init() {VAdapter vAdapter = new VAdapter();vvp.setAdapter(vAdapter);handler.postDelayed(runnable, 3000);}private int currentPosition;private Handler handler = new Handler();private Runnable runnable = new Runnable() {@Overridepublic void run() {vvp.setCurrentItem(++currentPosition , true);handler.postDelayed(runnable, 3000);}};代碼已上傳,歡迎star:https://github.com/CuiChenbo/UpRollView
總結
以上是生活随笔為你收集整理的Android 竖直滚动广告条、上下滚动广告条,View滚动广告条;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HI,Bing,近期数字安全领域有什么热
- 下一篇: android10暗色适配,Androi