日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 竖直滚动广告条、上下滚动广告条,View滚动广告条;

發布時間:2024/1/8 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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滚动广告条;的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。