为了账号安全,请及时绑定邮箱和手机立即绑定

android"小白"手把手教你实现图片轮播

标签:
Android
    大家好我是“安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人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消