最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android RecyclerView打造自動循環(huán)效果

 更新時間:2016年12月05日 17:11:16   作者:Timmy_zzh  
這篇文章主要為大家詳細介紹了android RecyclerView打造自動循環(huán)效果,非常實用的循環(huán)滾動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

先看效果圖

主要處理的地方:
1、RecyclerView中Adapter的item個人可以無限輪詢.
2、RecyclerView自動滑動
3、手指按下時滑動停止,手指抬起后繼續(xù)自動滑動

public class AutoPollRecyclerView extends RecyclerView {
 private static final long TIME_AUTO_POLL = 16;
 AutoPollTask autoPollTask;
 private boolean running; //標示是否正在自動輪詢
 private boolean canRun;//標示是否可以自動輪詢,可在不需要的是否置false
 public AutoPollRecyclerView(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
  autoPollTask = new AutoPollTask(this);
 }
 static class AutoPollTask implements Runnable {
  private final WeakReference<AutoPollRecyclerView> mReference;
  //使用弱引用持有外部類引用->防止內(nèi)存泄漏
  public AutoPollTask(AutoPollRecyclerView reference) {
   this.mReference = new WeakReference<AutoPollRecyclerView>(reference);
  }
  @Override
  public void run() {
   AutoPollRecyclerView recyclerView = mReference.get();
   if (recyclerView != null && recyclerView.running &&recyclerView.canRun) {
    recyclerView.scrollBy(2, 2);
    recyclerView.postDelayed(recyclerView.autoPollTask,recyclerView.TIME_AUTO_POLL);
   }
  }
 }
 //開啟:如果正在運行,先停止->再開啟
 public void start() {
  if (running)
   stop();
  canRun = true;
  running = true;
  postDelayed(autoPollTask,TIME_AUTO_POLL);
 }
 public void stop(){
  running = false;
  removeCallbacks(autoPollTask);
 }
 @Override
 public boolean onTouchEvent(MotionEvent e) {
  switch (e.getAction()){
   case MotionEvent.ACTION_DOWN:
    if (running)
     stop();
    break;
   case MotionEvent.ACTION_UP:
   case MotionEvent.ACTION_CANCEL:
   case MotionEvent.ACTION_OUTSIDE:
    if (canRun)
     start();
    break;
  }
  return super.onTouchEvent(e);
 }
}

Adapter處理:主要處理getItemCount()和數(shù)據(jù)填充的onBindViewHolder()方法

public class AutoPollAdapter extends RecyclerView.Adapter<BaseViewHolder> {
 private final Context mContext;
 private final List<String> mData;
 public AutoPollAdapter(Context context, List<String> list) {
  this.mContext = context;
  this.mData = list;
 }
 @Override
 public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  View view = LayoutInflater.from(mContext).inflate(R.layout.item_auto_poll, parent, false);
  BaseViewHolder holder = new BaseViewHolder(view);
  return holder;
 }
 @Override
 public void onBindViewHolder(BaseViewHolder holder, int position) {
  String data = mData.get(position%mData.size());
  holder.setText(R.id.tv_content,data);
 }
 @Override
 public int getItemCount() {
  return Integer.MAX_VALUE;
 }
}

最后附上Activity調用的代碼

public class AutoPollRecyclerActivity extends BaseActivity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_auto_poll);
  initToolBar();
  initView();
 }
 private void initView() {
  AutoPollRecyclerView mRecyclerView = (AutoPollRecyclerView) findViewById(R.id.rv_recycleView);
  List<String> list = new ArrayList<>();
  for (int i = 0; i < 5; ) {
   list.add(" Item: " + ++i);
  }
  AutoPollAdapter adapter = new AutoPollAdapter(this, list);
  mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
  mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL_LIST));
  mRecyclerView.setAdapter(adapter);
  if (true) //保證itemCount的總個數(shù)寬度超過屏幕寬度->自己處理
   mRecyclerView.start();
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android開發(fā)之Parcel機制實例分析

    Android開發(fā)之Parcel機制實例分析

    這篇文章主要介紹了Android開發(fā)之Parcel機制,實例分析了Parcel機制的原理與實現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • Android實現(xiàn)雙擊返回鍵退出應用實現(xiàn)方法詳解

    Android實現(xiàn)雙擊返回鍵退出應用實現(xiàn)方法詳解

    這篇文章主要為大家詳細介紹了Android實現(xiàn)雙擊返回鍵退出應用的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Android:如何編寫“萬能”的Activity

    Android:如何編寫“萬能”的Activity

    本文主要介紹了編寫“萬能”的Activity的方法與步驟,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • cocos2d-2.0-x-2.0.3 交叉編譯到android報錯解決

    cocos2d-2.0-x-2.0.3 交叉編譯到android報錯解決

    我用的是cocos2d-2.0-x-2.0.3 之前弄了一天也沒成功 今天來了下載了最新的ndk8 更新了sdk 又重新是了一遍 居然成功了,不知道是工具的版本問題還是哪一步出錯誤了,在這里詳細的整理一下,感興趣的朋友可以了解下
    2013-01-01
  • Android編程實現(xiàn)通知欄進度條效果的方法示例

    Android編程實現(xiàn)通知欄進度條效果的方法示例

    這篇文章主要介紹了Android編程實現(xiàn)通知欄進度條效果的方法,結合實例形式較為詳細的分析了Android通知欄進度條效果的功能、布局相關實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2018-02-02
  • Android實現(xiàn)音頻錄音與播放

    Android實現(xiàn)音頻錄音與播放

    這篇文章主要為大家詳細介紹了Android實現(xiàn)音頻錄音與播放,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android TextView實現(xiàn)帶鏈接文字事件監(jiān)聽的三種常用方式示例

    Android TextView實現(xiàn)帶鏈接文字事件監(jiān)聽的三種常用方式示例

    這篇文章主要介紹了Android TextView實現(xiàn)帶鏈接文字事件監(jiān)聽的方法,結合實例形式分析了鏈接跳轉、setMovementMethod及布局屬性設置三種常用的實現(xiàn)方式,需要的朋友可以參考下
    2017-08-08
  • Android Compose remember的使用和原理詳解

    Android Compose remember的使用和原理詳解

    本文詳細介紹了Android Jetpack Compose中的remember函數(shù),它是優(yōu)化UI組件重組性能的重要工具,remember可以緩存數(shù)據(jù)或對象,避免每重組時重新計算,保持狀態(tài)不變,通過合理使用`remember`,可以提高應用的性能和流暢度,感興趣的朋友一起看看吧
    2025-03-03
  • Android 自定義view之畫圖板實現(xiàn)方法

    Android 自定義view之畫圖板實現(xiàn)方法

    本文重在對自定義view,以及其常用類,常用方法的初步了解,提供一個思路,效果是其次,畫板只是例子,需要的朋友可以參考下
    2018-01-01
  • Android?獲取實時網(wǎng)速實現(xiàn)詳解

    Android?獲取實時網(wǎng)速實現(xiàn)詳解

    這篇文章主要為大家介紹了Android?獲取實時網(wǎng)速實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

峨山| 通江县| 托克逊县| 团风县| 鄂温| 观塘区| 贵溪市| 奉贤区| 墨江| 镇安县| 普安县| 泉州市| 望城县| 八宿县| 綦江县| 孟村| 徐汇区| 宜兰市| 大厂| 广西| 中牟县| 弥勒县| 招远市| 淮阳县| 浮山县| 娄烦县| 历史| 兴隆县| 嘉义市| 留坝县| 文化| 咸丰县| 项城市| 江源县| 靖远县| 鄂伦春自治旗| 湖口县| 红河县| 开鲁县| 修武县| 余干县|