android實現界面滑動,Android 自動輪播圖+滑動效果

 2023-12-25 阅读 24 评论 0

摘要:話不多說,直接上圖: activity.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com

話不多說,直接上圖:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><android.support.v4.view.ViewPagerandroid:id="@+id/vp_advs"android:layout_width="match_parent"android:layout_height="250dp"android:layout_marginTop="40dp"></android.support.v4.view.ViewPager></LinearLayout>

MainActivity.java:

public class MainActivity extends AppCompatActivity {private ViewPager viewPager;private ImageView imageView1,imageView2,imageView3,imageView4;private List<ImageView> imageViewList;private AdvsViewPagerAdapter adapter;private Handler handler;int i;  //用來記錄判斷哪張輪播圖片@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager = findViewById(R.id.vp_advs);initImageViewList();        //  將圖片放到集合中保存起來adapter = new AdvsViewPagerAdapter(imageViewList);viewPager.setAdapter(adapter);i = 0;handler = new Handler(){@Overridepublic void handleMessage(Message msg) {//  更改輪播圖片viewPager.setCurrentItem(i % 4);i++;}};//頂部圖片輪播,還沒做手動切換之后的優化advsChange();}private void advsChange() {handler.post(new Runnable(){@Overridepublic void run() {//延時2shandler.postDelayed(this, 2000);handler.sendEmptyMessage(0);}});}private void initImageViewList() {//  先讓各個對象拿到資源imageView1 = new ImageView(this);imageView1.setBackgroundResource(R.drawable.ic_one);imageView2 = new ImageView(this);imageView2.setBackgroundResource(R.drawable.ic_twoi);imageView3 = new ImageView(this);imageView3.setBackgroundResource(R.drawable.ic_three);imageView4 = new ImageView(this);imageView4.setBackgroundResource(R.drawable.ic_four);//  再放入集合中imageViewList = new ArrayList<>();imageViewList.add(imageView1);imageViewList.add(imageView2);imageViewList.add(imageView3);imageViewList.add(imageView4);}
}

AdvsViewPagerAdapter.java:

public class AdvsViewPagerAdapter extends PagerAdapter {private List<ImageView> imageViewList ;     //  圖片都存在了集合中public AdvsViewPagerAdapter(List<ImageView> imageViewList) {super();this.imageViewList = imageViewList;}// 獲取要滑動的控件的數量,在這里我們以滑動的廣告欄為例,那么這里就應該是展示的廣告圖片的ImageView數量@Overridepublic int getCount() {return imageViewList.size();}// 當要顯示的圖片可以進行緩存的時候,會調用這個方法進行顯示圖片的初始化,我們將要顯示的ImageView加入到ViewGroup中,然后作為返回值返回即可@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {container.addView(imageViewList.get(position));return imageViewList.get(position);}// PagerAdapter只緩存三張要顯示的圖片,如果滑動的圖片超出了緩存的范圍,就會調用這個方法,將圖片銷毀@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {container.removeView(imageViewList.get(position));}// 來判斷顯示的是否是同一張圖片,這里我們將兩個參數相比較返回即可@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view == object;}
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/194820.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息