系统控件组合式(案例二)

———————————————–案例效果————————————-

activity_main.xml

<RelativeLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent" ><android.support.v4.view.ViewPagerandroid:id="@+id/viewPager"android:layout_width="match_parent"android:layout_height="200dip" /><LinearLayoutandroid:gravity="center_horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignBottom="@id/viewPager"android:background="#44000000"android:orientation="vertical" ><TextViewandroid:singleLine="true"android:id="@+id/tv_msg"android:textColor="#ffffff"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="武媚娘传奇"android:textSize="18sp" /><LinearLayoutandroid:id="@+id/ll_point_group"android:padding="5dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ></LinearLayout></LinearLayout></RelativeLayout>drawable目录下有三个xml文件point_bg.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="" ><item android:state_enabled="false" android:drawable="@drawable/normal_point"></item><item android:state_enabled="true" android:drawable="@drawable/focused_point"></item></selector>normal_point.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android=""android:shape="oval" ><size android:width="10dip" android:height="10dip"/><solid android:color="#55000000"/></shape>focused_point.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android=""android:shape="oval" ><!– 椭圆 –><size android:width="10dip" android:height="10dip"/><solid android:color="#66ffffff"/></shape>MainActivity.javapackage com.atguigu.myviewpager;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;public class MainActivity extends Activity {// viewPager继承viewGroupprivate ViewPager viewPager;private TextView tv_msg;// 显示当前页的圆点标志布局视图private LinearLayout ll_point_group;/** * 图片的int数组集合 图片标题集合 图片集合 */private int[] ids = { R.drawable.a, R.drawable.b, R.drawable.c,R.drawable.d, R.drawable.e };private final String[] imageDescriptions = { "巩俐不低俗,,我就不能低俗","朴树又回来啦!再唱经典老歌引万人大合唱", "揭秘北京电影如何升级", "乐视网TV版大派送", "热血屌丝的反杀" };private ArrayList<ImageView> imageViews;// 上一次被高亮显示的位置private int lastIndex = 0;// 是否已经执行了Activity中的onDestroy true:执行 false:没有执行private boolean isDestroy = false;;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取viewPagerviewPager = (ViewPager) findViewById(R.id.viewPager);// 获取图片说明tv_msg = (TextView) findViewById(R.id.tv_msg);// 获取圆点线性布局ll_point_group = (LinearLayout) findViewById(R.id.ll_point_group);/** * 准备需要的数据 1、初始化圆点集合数据 2、获取图片集合数据 */imageViews = new ArrayList<ImageView>();for (int i = 0; i < ids.length; i++) {// 1、实例化图片,并且设置背景ImageView imageView = new ImageView(this);imageView.setBackgroundResource(ids[i]);// 把图片添加到集合中imageViews.add(imageView);// 2、设置圆点图片背景ImageView iv_point = new ImageView(this);iv_point.setBackgroundResource(R.drawable.point_bg);// 导入的包应该是父类的参数LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);iv_point.setLayoutParams(params);// 圆点之间有距离params.leftMargin = 10;// 默认第一个圆点是高亮显示(第一个图片被选中)if (i == 0) {iv_point.setEnabled(true);} else {iv_point.setEnabled(false);}ll_point_group.addView(iv_point);}/** * 创建并且设置适配器 */MyPagerAdapter adapter = new MyPagerAdapter();viewPager.setAdapter(adapter);// ????int item = Integer.MAX_VALUE / 2 – Integer.MAX_VALUE / 2% imageViews.size();// 22->11Log.e("TAG",item+"—–" );// 设置为中间????viewPager.setCurrentItem(item);// 设置默认文本信息String msg = imageDescriptions[0];tv_msg.setText(msg);// 监听页面改变viewPager.setOnPageChangeListener(new OnPageChangeListener() {/*** 当选择某个页面的时候回调 position:把选择的位置传过来*/@Overridepublic void onPageSelected(int position) {int myposition = position % imageViews.size();// 根据位置取出对应的文本String msg = imageDescriptions[myposition];tv_msg.setText(msg);ll_point_group.getChildAt(lastIndex).setEnabled(false);ll_point_group.getChildAt(myposition).setEnabled(true);lastIndex = myposition;}/*** 当页面滑动了或者滚动了的时候,回调这个方法 position:页面的下标 positionOffset:滑动的页面比* positionOffsetPixels:滑动了多少的像素*/@Overridepublic void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {}/*** 当页面滑动状态发送变化的时候回调这个方法*/@Overridepublic void onPageScrollStateChanged(int state) {}});// 发消息开始自动切换图片isDestroy = false;// 一加载页面,就先发一个3秒延迟消息handler.sendEmptyMessageDelayed(0, 3000);}/* * handler */private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {// 切换到下一个页面viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);// 循环显示图片-不断切换if (true) {// 每隔4秒图片切换一下-自己本身处理消息handler.sendEmptyMessageDelayed(0, 4000);}};};/** * 退出应用 */@Overrideprotected void onDestroy() {super.onDestroy();isDestroy = true;}/** * 适配器类 */class MyPagerAdapter extends PagerAdapter {// 得到数据的总条数@Overridepublic int getCount() {return Integer.MAX_VALUE;}// 相当于:getView(); container:就是一个容器,就是ViewPager// position:位置下标@Overridepublic Object instantiateItem(ViewGroup container, int position) {// 根据位置得到具体的页面Log.e("TAG",position+"" );Log.e("TAG",position % imageViews.size()+"" );ImageView imageView = imageViews.get(position % imageViews.size());// 把图片添加到ViewPager里面container.addView(imageView);return imageView;}/** * 比较view是否是由instantiateItem所实例化的 view 当前页面 object:instantiateItem方法返回的值 */@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}/** * 根据位置移除对应的被销毁的控件 */@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}}

微风吹过,海面上金光闪闪,泛起一道道美丽的浪花,

系统控件组合式(案例二)

相关文章:

你感兴趣的文章:

标签云: