view pager

package com.example.test14_viewpager;


import java.util.ArrayList;


import android.app.Activity;
import android.net.NetworkInfo.State;
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.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity {
private ViewPager vp_main;
private TextView tv_main_title;
private LinearLayout ll_main_point_group;
private ArrayList<ImageView> imageViews;
//图片资源ID
private int[] imageIds={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e};
//图片标题集合
private String[] imgDescriptions={"有型有范","周末大放假","家电买一送一","预约赢新机","京东火锅节"};
//上一次高亮显示的位置
private int prePosition = 0;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
int item =vp_main.getCurrentItem()+1;
vp_main.setCurrentItem(item);
//延迟发消息
handler.sendEmptyMessageDelayed(0, 3000);
};
};
private boolean isDragging = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Viewpager的使用
//1.在不仅仅文件中定义Viewpager
//2.在代码中实例化Viewpager
vp_main=(ViewPager) findViewById(R.id.vp_main);
tv_main_title=(TextView) findViewById(R.id.tv_main_title);
ll_main_point_group=(LinearLayout) findViewById(R.id.ll_main_point_group);

//3.准备数据
imageViews=new ArrayList<ImageView>();
for (int i = 0; i < imageIds.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(imageIds[i]);
//添加到集合
imageViews.add(imageView);
//添加小圆点
ImageView point= new ImageView(this);
point.setBackgroundResource(R.drawable.point_selector);
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(8,8);
if (i==0) {
point.setEnabled(true);//红色
}else{
point.setEnabled(false);//黑色
params.leftMargin=8;
}
point.setLayoutParams(params);
ll_main_point_group.addView(point);
//添加到集合中
imageViews.add(imageView);
}
//4.设置适配器(PagerAdapter)-Item布局-绑定数据
vp_main.setAdapter(new MyPagerAdapter());

//设置监听ViewPager页面的改变
vp_main.setOnPageChangeListener(new MyOnPageChangeListener());
//设置中间位置,要保证是imageView的整数倍
int item= Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%imageViews.size();
vp_main.setCurrentItem(item);

tv_main_title.setText(imgDescriptions[prePosition]);
// 发消息
handler.sendEmptyMessageDelayed(0, 3000);
}


    class MyOnPageChangeListener implements OnPageChangeListener{
//静止》滑动 或  滑动》静止 或 静止》拖拽
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_DRAGGING) {
isDragging=true;
}else if(state == ViewPager.SCROLL_STATE_SETTLING){

}else if(state == ViewPager.SCROLL_STATE_IDLE && isDragging){
isDragging=false;
handler.removeCallbacksAndMessages(null);
handler.sendEmptyMessageDelayed(0, 3000);
}
}
//当页面滚动了的时候回调这个方法
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}
//当某个页面被选中了的时候回调
@Override
public void onPageSelected(int position) {
int realPosition = position % imageViews.size();
//设置对应的页面文本信息
tv_main_title.setText(imgDescriptions[realPosition]);
//把上一个高亮的设置为黑色
ll_main_point_group.getChildAt(prePosition).setEnabled(false);
//红色
ll_main_point_group.getChildAt(realPosition).setEnabled(true);
prePosition=realPosition;
}
   
    }
    
class MyPagerAdapter extends PagerAdapter{
        //得到图片的总数
@Override
public int getCount() {
return Integer.MAX_VALUE;//int类型的最大值
// return imageViews.size();
}
//相当于getView的方法
//container    ViewPager自身
//position     当前实例化页面的位置(下标)
@Override
public Object instantiateItem(ViewGroup container, int position) {
int realPosition = position % imageViews.size();
ImageView imageView = imageViews.get(realPosition);
container.addView(imageView);//添加到ViewPager中
imageView.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e("TAG","手指按下");
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_MOVE:
Log.e("TAG","手指移动");
break;
case MotionEvent.ACTION_CANCEL:
Log.e("TAG","事件取消");
// handler.removeCallbacksAndMessages(null);
// handler.sendEmptyMessageDelayed(0, 3000);
break;
case MotionEvent.ACTION_UP:
Log.e("TAG","手指抬起");
handler.removeCallbacksAndMessages(null);
handler.sendEmptyMessageDelayed(0, 3000);
}
return false;
}
});
imageView.setTag(position);
imageView.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
int position=(Integer) v.getTag() % imageViews.size();
String text=imgDescriptions[position];
Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
}
});
return imageView;
}



//比较View和Object是否是同一个实例
//view 页面
//object  是instantiateItem返回的结果
@Override
public boolean isViewFromObject(View view, Object object) {

return view==object;
}
//释放资源
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View) object);
}
}
}



1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >


    <android.support.v4.view.ViewPager
        android:id="@+id/vp_main"
        android:layout_width="match_parent"
        android:layout_height="180dp"
         />
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_alignBottom="@id/vp_main"
        android:background="#44000000"
        >
    <TextView 
        android:id="@+id/tv_main_title"    
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:gravity="center_horizontal"
        android:text="广告标题"
        android:textColor="#FFFFFF"    
        />
       <LinearLayout 
        android:id="@+id/ll_main_point_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"   
        android:orientation="horizontal"   
        android:layout_gravity="center_horizontal"   
           ></LinearLayout>       
    </LinearLayout>


</RelativeLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值