大家好我是“安xiaobai”。我一个人躲在角落里学些android很99999999了感觉是应该写点东西才行,嗯,对是要写点东西分享一下。今天“安xiaobai”就来分享一个自己写的小demo。
本人第一次在网络上分享,如果写的不好,或者对“俺”写的代码有问题的,欢迎大神指导。![图片描述][1]
好了上正文。
首先是布局文件代码:
<!-- 这里的LinearLayout可以不要,“安xiaobai”我是另有它用 -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="150dp"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/vp_advertise"
android:layout_width="fill_parent"
android:layout_height="150dp">
</android.support.v4.view.ViewPager>
</LinearLayout>
这里"安xiaobai"用的是viewPager这个组件来实现的
<?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:id="@+id/advertise_item"
android:orientation="vertical" >
</LinearLayout>
这里是另外的一个布局文件,这个布局文件是为了显示viewPager中每一张图片而准备的。
再是java文件
private ViewPager viewPager;
private View view;
private List<View> advertiseList;
private GuidePageAdapter adapter;
private AtomicInteger atomicInteger = new AtomicInteger();
/*
* 这里直接返回的是一个布局
*/
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.recommend,container,false);
//找到布局文件中的viewPager
viewPager = (ViewPager) view.findViewById(R.id.vp_advertise);
//创建广告数组对象
advertiseList = new ArrayList<View>();
//找到layout文件下的 advertise_item 布局文件
View viewxml = getActivity().getLayoutInflater().inflate(R.layout.advertise_item,null);
//将这个布局文件 转换成 view的控件
LinearLayout viewId = (LinearLayout) viewxml.findViewById(R.id.advertise_item);
//给控件添加背景图片
viewId.setBackgroundResource(R.drawable.t1);
//将控件添加到 广告数组中
advertiseList.add(viewId);
View viewxml2 = getActivity().getLayoutInflater().inflate(R.layout.advertise_item,null);
LinearLayout viewid2 = (LinearLayout) viewxml2.findViewById(R.id.advertise_item);
viewid2.setBackgroundResource(R.drawable.bg);
advertiseList.add(viewid2);
//这里是实例化一个 adapter
adapter = new GuidePageAdapter(getActivity(),advertiseList);
//给viewPager绑定adapter
viewPager.setAdapter(adapter);
//这里是事件监听
viewPager.addOnPageChangeListener(vp_listener);
//循环执行
new Timer().schedule(new TimerTask() {
public void run() {
//这里是将 viewpager 的下标发送出去
handler.sendEmptyMessage(atomicInteger.incrementAndGet()-1);
}
}, 1000,2000);
return view;
}
这段代码上面部分已经给出了很详细的解释了,这里就不废话了。最后那几行代码使用的是java提供的一个计时器工具。schedule()这个方法有三个参数,第一个参数是要重复执行的任务,第二个参数是程序启动后多久执行,第三个参数是每隔多长时间去重复执行。
在。
最后面有一个return view 这里“安xiaobai”是在一个Fragment里面写的,如果是要复制代码的同学请注意一下哦!!!!!一定要注意,一定要注意,一定要注意。
这里的计数器使用的是android AtomicInteger类提供的方法,这样做事为了线程的安全。
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg){
//接受handeler发送过来viewPager的 下标数据
viewPager.setCurrentItem(msg.what);
//判断 下标不能超过数组最大值,超过了就从0又开始逐渐增加
if (atomicInteger.get() == advertiseList.size()) {
atomicInteger.set(0);
}
};
};
这里这方法应该和前面oncreateView并行的。这个就是经典的异步执行,关于异步“安xiaobai”也还在努力的 学习中,现在"俺"只能简单的使用它来传递一些数据。
这是 "安xiaobai"的处女秀(我是一个汉子),如果写的不好欢迎各位大神指点。
喜欢就点个推荐呗o(^^)o!
另外我也想把效果图放上来,可是我是"安xiaobai"( - )( - )不会弄(--)b(--)b欢迎大神留言教学。
点击查看更多内容
21人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦