android 中实现左右滑动图片,能自动播放,带点点
1.MainActivity.java中int count=0;int olddotindex=0;int images[]={R.drawable.ic_launcher_background,R.drawable.ic_launcher_background,R.drawable.ic_launcher_background};//网络图片定义String url="http://192.16
·
1.MainActivity.java中
int count=0; int olddotindex=0; int images[]={ R.drawable.ic_launcher_background, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background }; //网络图片定义 String url="http://192.168.x.x/wy/img/"; String netImages[]={"flow.jpg","img_1.jpg","img_2.jpg"}; ArrayList<View> dots; LinearLayout la; ArrayList<ImageView> imagesList; ViewPager pager; Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); pager.setCurrentItem(count); dots.get(olddotindex).setBackgroundResource(R.drawable.dot_nomal); dots.get(count).setBackgroundResource(R.drawable.dot_focus); olddotindex=count; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { pager=findViewById(R.id.viewpager); la=findViewById(R.id.yuandian); // 获取图片,配置给Viewpager getImageViewList(); // 获得小圆点 getDotList(); // 设置第一个圆点为选中状态 dots.get(0).setBackgroundResource(R.drawable.dot_focus); dots.get(1).setBackgroundResource(R.drawable.dot_nomal); dots.get(2).setBackgroundResource(R.drawable.dot_nomal); pager.setAdapter(new MyViewPageAdapter()); pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { if (i==0){ dots.get(0).setBackgroundResource(R.drawable.dot_focus); dots.get(1).setBackgroundResource(R.drawable.dot_nomal); dots.get(2).setBackgroundResource(R.drawable.dot_nomal); } if (i==1){ dots.get(0).setBackgroundResource(R.drawable.dot_nomal); dots.get(1).setBackgroundResource(R.drawable.dot_focus); dots.get(2).setBackgroundResource(R.drawable.dot_nomal); } if (i==2){ dots.get(0).setBackgroundResource(R.drawable.dot_nomal); dots.get(1).setBackgroundResource(R.drawable.dot_nomal); dots.get(2).setBackgroundResource(R.drawable.dot_focus); } } @Override public void onPageScrollStateChanged(int i) { } }); // 自动滑动效果 Timer timer=new Timer(); timer.schedule(new TimerTask() { @Override public void run() { count++; if (count==3){ count=0; } mHandler.sendEmptyMessage(count); } },3000,2000); } private void getDotList() { dots=new ArrayList<>(); for (int i=0;i<images.length;i++){ // 加载布局 View view= LayoutInflater.from(this).inflate(R.layout.dot,null); // 得到布局中的dot组件 View dot=view.findViewById(R.id.dotview); dots.add(dot); la.addView(view); } } //获得网络图片,配置给ViewPage private void getImageViewList() { imagesList=new ArrayList<>(); for (int i=0;i<images.length;i++){ ImageView imageView=new ImageView(this); imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setImageResource(images[i]); imagesList.add(imageView); // 若为网络图片 // Glide.with(MainActivity.this).load(url+netImages[i]).into(imageView); // Log.i("TAG---->",url+netImages[i]); // imagesList.add(imageView); } } class MyViewPageAdapter extends PagerAdapter{ @Override public int getCount() { return imagesList.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object o) { return view==o; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { ImageView im=imagesList.get(position); container.removeView(im); } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { container.addView(imagesList.get(position)); return imagesList.get(position); } } }
2.在activity_main.xml中
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context=".MainActivity"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewpager" > </android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/yuandian" android:gravity="center" android:orientation="horizontal" android:layout_alignParentBottom="true" > </LinearLayout> </RelativeLayout>
3.定义小圆点的布局文件(dot.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" > <View android:layout_width="8dp" android:layout_height="8dp" android:layout_margin="10dp" android:id="@+id/dotview" /> </LinearLayout>
4.图片未滑过时小圆点(dot_nomal.xml)
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#fff"/> <corners android:radius="8dip"/> </shape>
5.图片滑过时的小圆点(dot_nomal.xml)
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#f00"/> <corners android:radius="8dip"/> </shape>
6.若使用的是网络加载的图片,别忘了在guild.gradle中添加glide包
implementation 'com.github.bumptech.glide:glide:4.9.0'
在Androidmanifest.xml中添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
更多推荐
已为社区贡献3条内容
所有评论(0)