android常见手动和自动轮播图效果
程序员文章站
2022-05-27 10:07:45
本文实例为大家分享了android手动和自动轮播图效果的具体代码,供大家参考,具体内容如下
1、准备好需要的轮播图片,图片标题(初始化,声明)。
/**轮播图片...
本文实例为大家分享了android手动和自动轮播图效果的具体代码,供大家参考,具体内容如下
1、准备好需要的轮播图片,图片标题(初始化,声明)。
/**轮播图片*/ private int[] imageids=new int[]{ r.drawable.ic_launcher, r.drawable.simple_player_control_focused_holo, r.drawable.dot_player1_1, r.drawable.jt5, }; /**轮播图片的标题*/ private string[] titles=new string[]{ "我是一", "我是二", "我是三", "我是四", };
2、在你要轮播的布局里面加入下面的布局(相当于加入一个控件,看你想放哪里).
<framelayout android:layout_width="match_parent" android:layout_height="200dip" > <android.support.v4.view.viewpager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> <linearlayout android:layout_width="match_parent" android:layout_height="35dip" android:layout_gravity="bottom" android:background="#33000000" android:gravity="center" android:orientation="vertical" > <textview android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="图片标题" android:textcolor="@android:color/white" /> <linearlayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="3dip" android:orientation="horizontal" > <view android:id="@+id/dot_0" android:layout_width="5dip" android:layout_height="5dip" android:layout_marginleft="2dip" android:layout_marginright="2dip" android:background="@drawable/dot_focused"/> <view android:id="@+id/dot_1" android:layout_width="5dip" android:layout_height="5dip" android:layout_marginleft="2dip" android:layout_marginright="2dip" android:background="@drawable/dot_normal"/> <view android:id="@+id/dot_2" android:layout_width="5dip" android:layout_height="5dip" android:layout_marginleft="2dip" android:layout_marginright="2dip" android:background="@drawable/dot_normal"/> <view android:id="@+id/dot_3" android:layout_width="5dip" android:layout_height="5dip" android:layout_marginleft="2dip" android:layout_marginright="2dip" android:background="@drawable/dot_normal"/> </linearlayout> </linearlayout> </framelayout>
3、把图片和标题都设置控件里面。
/**显示的图片*/ images = new arraylist<imageview>(); for(int i=0;i<imageids.length;i++){ imageview imageview = new imageview(getactivity()); imageview.setbackgroundresource(imageids[i]); images.add(imageview); } /*显示的圆点 */ dots = new arraylist<view>(); dots.add(view.findviewbyid(r.id.dot_0)); dots.add(view.findviewbyid(r.id.dot_1)); dots.add(view.findviewbyid(r.id.dot_2)); dots.add(view.findviewbyid(r.id.dot_3)); /**轮播的标题*/ title = (textview) view.findviewbyid(r.id.title); title.settext(titles[0]);
4、findviewbyid到控件布局里面的viewpager,new 一个viewpageradapter(),通过setonpagechangelistener的方法来监听改变
viewpager = (viewpager) view.findviewbyid(r.id.viewpager); adapter = new viewpageradapter(); viewpager.setadapter(adapter); viewpager.setonpagechangelistener(new viewpager.onpagechangelistener() { @override public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) { title.settext(titles[position]); dots.get(position).setbackgroundresource(r.drawable.dot_focused); dots.get(oldposition).setbackgroundresource(r.drawable.dot_normal); oldposition = position; currentitem = position; } @override public void onpageselected(int position) { } @override public void onpagescrollstatechanged(int state) { } });
5、自定义一个viewpageradapter
/** * 自定义adapter * 内部类 */ private class viewpageradapter extends pageradapter { @override public int getcount() { return images.size();//传入的数据 } @override public boolean isviewfromobject(view arg0, object arg1) { return arg0 == arg1; } @override public void destroyitem(viewgroup view, int position, object object) { // todo auto-generated method stub // super.destroyitem(container, position, object); // view.removeview(view.getchildat(position)); // view.removeviewat(position); view.removeview(images.get(position)); } @override public object instantiateitem(viewgroup view, int position) { // todo auto-generated method stub view.addview(images.get(position)); return images.get(position); } }
6、这些自己看着改主要是线程池,handler,定时轮换
/** * 图片轮播任务 * */ private class viewpagetask implements runnable{ @override public void run() { currentitem = (currentitem + 1) % imageids.length; mhandler.sendemptymessage(0); } } /** * 接收子线程传递过来的数据 */ private handler mhandler = new handler(){ public void handlemessage(android.os.message msg) { viewpager.setcurrentitem(currentitem); }; }; @override public void onstop() { // todo auto-generated method stub super.onstop(); if(scheduledexecutorservice != null){ scheduledexecutorservice.shutdown(); scheduledexecutorservice = null; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 你明白了没有
下一篇: Android仿qq分组管理的第三方库