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

Android使用Recyclerview實(shí)現(xiàn)圖片水平自動循環(huán)滾動效果

 更新時(shí)間:2020年06月19日 11:01:30   作者:段合江  
這篇文章主要為大家詳細(xì)介紹了Android使用Recyclerview實(shí)現(xiàn)圖片水平自動循環(huán)滾動效果,實(shí)現(xiàn)精彩的跑馬燈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

簡介:

本篇博客主要介紹的是如何使用RecyclerView實(shí)現(xiàn)圖片水平方向自動循環(huán)(跑馬燈效果)

效果圖:

思路:

1.準(zhǔn)備m張圖片

1.使用Recyclerview實(shí)現(xiàn),返回?zé)o數(shù)個(gè)(實(shí)際Interge.MAXVALUE)item,第n個(gè)item顯示第n%m張圖片

3.使用recyclerview.scrollBy  每個(gè)一段時(shí)間水平滾動一段距離

4.通過layoutManager.findFirstVisibleItemPosition()獲取當(dāng)前顯示的第一個(gè)View是第幾個(gè)item,上面的ImageView顯示對應(yīng)de圖片

實(shí)現(xiàn)代碼:

XML文件

1.activity布局文件activity_recy.xml  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">
 <ImageView
  android:layout_width="300dp"
  android:layout_height="350dp"
  android:layout_gravity="center_horizontal"
  android:id="@+id/img"
  android:src="@drawable/p5"
  android:scaleType="fitXY"
  />

  <android.support.v7.widget.RecyclerView
   android:layout_width="match_parent"
   android:layout_height="150dp"
   android:layout_marginTop="10dp"
   android:id="@+id/recyclerview"
   ></android.support.v7.widget.RecyclerView>



</LinearLayout>

2.適配器布局item_horizon.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="match_parent"
 android:orientation="vertical"

 >
 <ImageView
  android:layout_width="100dp"
  android:layout_height="match_parent"
  android:id="@+id/img"
  android:layout_marginLeft="5dp"
  android:layout_marginRight="5dp"
  android:scaleType="fitXY"
  />

</LinearLayout>

Activity

public class HorizontalActivity extends AppCompatActivity implements RecyAdapter.OnItemClickListener {
 private String TAG="HorizontalActivity";

 @BindView(R.id.img)
 ImageView img;
 @BindView(R.id.recyclerview)
 RecyclerView recyclerview;


 private Integer[] mImgIds = {R.drawable.p1, R.drawable.p2, R.drawable.p3, R.drawable.p4, R.drawable.p5,
   R.drawable.pic1, R.drawable.pic5, R.drawable.pic6};
 private List<Integer> datas;
 private RecyAdapter recyAdapter;
 private Handler mHandler=new Handler();
 private LinearLayoutManager layoutManager;

 private int oldItem=0;


 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_recy);
  ButterKnife.bind(this);
  initData();
  initRecy();
  img.setImageResource(datas.get(0));
  recyAdapter.setOnItemClickListener(this);
 }


 Runnable scrollRunnable=new Runnable() {
  @Override
  public void run() {
   recyclerview.scrollBy(3,0);

//   int firstItem = layoutManager.findFirstVisibleItemPosition();
   int firstItem=layoutManager.findFirstVisibleItemPosition();
   if(firstItem!=oldItem&&firstItem>0){
    oldItem=firstItem;
    img.setImageResource(datas.get(oldItem%datas.size()));
   }

   Log.e(TAG, "run: firstItem:"+firstItem );


   mHandler.postDelayed(scrollRunnable,10);
  }
 };

 private void initRecy() {
  recyAdapter=new RecyAdapter(this,datas);

  layoutManager = new LinearLayoutManager(this);
  layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
  recyclerview.setLayoutManager(layoutManager);
  recyclerview.setAdapter(recyAdapter);
 }

 private void initData() {
  datas=new ArrayList<>();
  for (int i = 0; i <mImgIds.length ; i++) {
   datas.add(mImgIds[i]);
  }
 }

 @Override
 protected void onResume() {
  super.onResume();
  mHandler.postDelayed(scrollRunnable,10);
 }

 @Override
 protected void onStop() {
  super.onStop();
  mHandler.removeCallbacks(scrollRunnable);
 }

 @Override
 public void onItemClick(View view, int tag) {
  Toast.makeText(this,"第"+tag+"張圖片被點(diǎn)擊了",Toast.LENGTH_SHORT).show();
 }
}

適配器RecyAdapter

public class RecyAdapter extends RecyclerView.Adapter<RecyAdapter.ViewHolder> implements View.OnClickListener {

 private Context context;
 private List<Integer> datas;
 private OnItemClickListener onItemClickListener;

 public RecyAdapter(Context context, List<Integer> datas) {
  this.context = context;
  this.datas = datas;
 }

 @Override
 public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  View view = LayoutInflater.from(context).inflate(R.layout.item_horizontal, parent, false);
  ViewHolder vh=new ViewHolder(view);
  view.setOnClickListener(this);
  return vh;
 }


 @Override
 public void onBindViewHolder(ViewHolder holder, int position) {
  int newPos=position%datas.size();

  holder.img.setImageResource(datas.get(newPos));

  holder.itemView.setTag(position);


 }

 @Override
 public int getItemCount() {
  return Integer.MAX_VALUE;
 }

 @Override
 public void onClick(View view) {
  if(onItemClickListener!=null){
   onItemClickListener.onItemClick(view, (Integer) view.getTag());
  }
 }


 class ViewHolder extends RecyclerView.ViewHolder {
   ImageView img;
  public ViewHolder(View itemView) {
   super(itemView);
   img=itemView.findViewById(R.id.img);
  }
 }

 public void setOnItemClickListener(OnItemClickListener listener){
  this.onItemClickListener=listener;

 }
 interface OnItemClickListener{
  void onItemClick(View view,int tag);
 }

}

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

相關(guān)文章

  • Android中Intent組件的入門學(xué)習(xí)心得

    Android中Intent組件的入門學(xué)習(xí)心得

    Intent組件雖然不是四大組件,但卻是連接四大組件的橋梁,學(xué)習(xí)好這個(gè)知識,也非常的重要,下面這篇文章主要給大家介紹了關(guān)于Android中Intent組件的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Android Studio搜索功能(查找功能)及快捷鍵圖文詳解

    Android Studio搜索功能(查找功能)及快捷鍵圖文詳解

    這篇文章主要介紹了Android Studio搜索功能(查找功能)及快捷鍵圖文詳解,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2017-12-12
  • Android編程中PopupWindow的用法分析【位置、動畫、焦點(diǎn)】

    Android編程中PopupWindow的用法分析【位置、動畫、焦點(diǎn)】

    這篇文章主要介紹了Android編程中PopupWindow的用法,結(jié)合實(shí)例形式分析了PopupWindow控件位置、動畫、焦點(diǎn)等操作相關(guān)技巧,需要的朋友可以參考下
    2017-02-02
  • 在Android TextView中顯示圖片的4種方式詳解

    在Android TextView中顯示圖片的4種方式詳解

    這篇文章主要介紹了在Android TextView中顯示圖片的4種方式,需要的朋友可以參考下
    2018-03-03
  • Android檢測IBeacon熱點(diǎn)的方法

    Android檢測IBeacon熱點(diǎn)的方法

    這篇文章主要介紹了Android檢測IBeacon熱點(diǎn)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android開發(fā)之保存圖片到相冊的三種方法詳解

    Android開發(fā)之保存圖片到相冊的三種方法詳解

    這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)的保存圖片到相冊功能的三種方法,文中的示例代碼講解詳細(xì),有一定的參考價(jià)值,感興趣的可以了解一下
    2022-04-04
  • android gradle如何修改生成的apk名字

    android gradle如何修改生成的apk名字

    Gradle是當(dāng)前非?!皠疟钡脴?gòu)建工具,而這篇文章主要給大家介紹了關(guān)于android gradle如何修改生成的apk名字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • 詳解Android中OkHttp3的例子和在子線程更新UI線程的方法

    詳解Android中OkHttp3的例子和在子線程更新UI線程的方法

    本篇文章主要介紹了詳解Android中OkHttp3的例子和在子線程更新UI線程的方法 ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • Android實(shí)現(xiàn)懸浮窗效果

    Android實(shí)現(xiàn)懸浮窗效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)懸浮窗效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android實(shí)現(xiàn)字母導(dǎo)航控件的示例代碼

    Android實(shí)現(xiàn)字母導(dǎo)航控件的示例代碼

    這篇文章主要介紹了通過自定義View實(shí)現(xiàn)字母導(dǎo)航控件的示例代碼,文中的實(shí)現(xiàn)過程講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的可以學(xué)習(xí)一下
    2022-01-01

最新評論

陈巴尔虎旗| 遵义县| 万盛区| 遂昌县| 永兴县| 衡东县| 太谷县| 黄大仙区| 涿鹿县| 昔阳县| 寿光市| 泊头市| 遂宁市| 辽宁省| 钦州市| 阿拉善右旗| 浪卡子县| 泰和县| 壤塘县| 井陉县| 阳城县| 东海县| 绥芬河市| 定安县| 贵阳市| 永胜县| 年辖:市辖区| 沾化县| 乐清市| 隆安县| 社旗县| 白朗县| 翁源县| 东方市| 临沭县| 泗阳县| 太原市| 呈贡县| 龙井市| 夹江县| 黄浦区|