首页 > 学院 > 开发设计 > 正文

使用Handler+view实现轮播图效果

2019-11-09 16:05:38
字体:
来源:转载
供稿:网友

轮播图在项目开发中也是属于比较常见的UI实现,一般会采用ViewPager来实现,今天的博客我就不再随大流了,给大家介绍个简单的 实现方式,在此方式下你只需做简单的配置即可。下面有通过代码来带着大家一起来实现下这个简单的UI效果。

由于我介绍的这个轮播图是利用给View或者继承view的其他控件定期更换背景来实现的,所以在布局文件中,自然少不了这么一个View或者其子类(TextView,Imageview)等

布局

<?xml version="1.0" encoding="utf-8"?><FrameLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        >        <!--***********显示轮播图的View*************-->    <TextView        android:id="@+id/header_layout"        android:layout_width="match_parent"        android:layout_height="110dp"        android:background="@drawable/xycz_news_img_2"        />    <android.support.v4.widget.SwipeRefreshLayout        android:id="@+id/swipe_refresh"        android:layout_width="match_parent"        android:layout_height="match_parent">    <ListView        android:id="@+id/listView"        android:dividerHeight="2dp"        android:padding="5dp"        android:layout_width="match_parent"        android:layout_height="match_parent"        />    </android.support.v4.widget.SwipeRefreshLayout>    </LinearLayout><include layout="@layout/load_animation"/></FrameLayout>

java代码中自定义一个Runnable类继承自Runnable,通过handler发送延时消息

 PRivate int imgsRes [] = {R.drawable.xycz_news_img_1,R.drawable.xycz_news_img_2,R.drawable.xycz_news_img_3}; //轮播的图片资源    private int imgIndex;   //当前imgRes的角标索引    private MyRunable myRunable = new MyRunable();    class MyRunable implements Runnable {        @Override        public void run() {            imgIndex++;            imgIndex=imgIndex%3;            ((TextView) view.findViewById(R.id.header_layout)).setBackgroundResource(imgsRes[imgIndex]);            mHandler.postDelayed(myRunable,3000);        }    }在Java类的入口方法(onCreate、onCreateView)让该Runnable对象跑起来

 mHandler.postDelayed(myRunable,3000);    //通知线程更新轮播图

当然还需要有个Handler对象。到此为止整个功能就简单实现了,个人感觉在需求不是太苛刻时,用此方法比ViewPager要简单很多,可以省去很多繁琐的代码
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表