今天新學知識總計,我的信息,僅供參考:android
item設置:數組
viewpager頁面設置:ide
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager1220"
android:layout_width="match_parent"
android:layout_height="200dp">
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignBottom="@id/viewpager1220"
android:padding="10dp"
>
<LinearLayout
android:id="@+id/point1220"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</RelativeLayout>佈局
adapter設置this
package com.example.administrator.test_1216.adapter;
public class PagerAdapter1220 extends PagerAdapter {
private List<ImageModel1220> list;
private Context context;
public PagerAdapter1220(List<ImageModel1220> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
/**
* 判斷是否由對象生成頁面
* @param view
* @param object
* @return
*/
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
/**
* 添加頁面
* @param container 將要顯示的頁面
* @param position 將要顯示頁面的位置
* @return
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
//添加子佈局
View view=View.inflate(context, R.layout.img1220_item,null);
//聲明控件並綁定id
ImageView img1220= (ImageView) view.findViewById(R.id.img1220);
//獲取圖片
img1220.setBackgroundResource(list.get(position%list.size()).getImages());
//將子佈局添加到視圖
container.addView(view);
return view;
}
/**
* 銷燬頁面
* @param container 將要銷燬的頁面
* @param position 將要銷燬的頁面的位置
* @param object
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
activity設置:spa
package com.example.administrator.test_1216;
/**
* Created by Administrator on 2016/12/20.
*/
public class PagerActivity1220 extends Activity implements ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private LinearLayout point;
private PagerAdapter adapter;
private List<ImageModel1220> list;
//圖片數組
private int[] imgs = {R.mipmap.main_page1, R.mipmap.main_page2, R.mipmap.main_page3, R.mipmap.main_page4, R.mipmap.main_page5};
//handdle機制處理定時任務
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
handler.sendEmptyMessageDelayed(0,3000); //設置時間間隔
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager1220_activity);
viewPager = (ViewPager) findViewById(R.id.viewpager1220);
point = (LinearLayout) findViewById(R.id.point1220);
//設置圖片滑動監聽
viewPager.setOnPageChangeListener(this);
//初始化集合
list = new ArrayList<ImageModel1220>();
//遍歷圖片數組
for (int i = 0; i < imgs.length; i++) {
ImageModel1220 model = new ImageModel1220();
model.setImages(imgs[i]);
list.add(model);
}
//初始化小圓點
for (int i = 0; i < list.size(); i++) {
//新建視圖
View v = new View(this);
//新建一個佈局參數,設置小圓點寬,高
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10, 10);
//設置小圓點的間距
if (i != 0) {
params.leftMargin = 10;
}
//設置小圓點視圖
v.setLayoutParams(params);
//給小圓點設置背景顏色
v.setBackgroundResource(R.drawable.points);
//將設置好的小圓點添加到佈局文件裏
point.addView(v);
}
//初始化適配器
adapter = new PagerAdapter1220(list, this);
//設置適配器
viewPager.setAdapter(adapter);
//設置當前的圖片位置
//將有用的View放到全部view中間,並將有用的View的第一個視圖放到第一個位置
viewPager.setCurrentItem(Integer.MAX_VALUE/2-(Integer.MAX_VALUE/2)%list.size());
changePoint();//動態改變小圓點
//設置自動時間爲3秒
handler.sendEmptyMessageDelayed(0,3000);
}
//動態改變小圓點
private void changePoint() {
//獲取當前頁面的位置
int currentPager = viewPager.getCurrentItem() % list.size();
//遍歷小圓點
for (int i = 0; i < point.getChildCount(); i++) {
//設置Enabled,獲取小圓點的焦點,當i==currentPager,小圓點是白色
point.getChildAt(i).setEnabled(i == currentPager);
}
}
/**
* 頁面滑動結束調用
*
* @param position 選中頁面的位置
*/
@Override
public void onPageSelected(int position) {
changePoint();
}
/**
* 此方法在頁面滑動的時候調用
*
* @param position:當前頁面的位置
* @param positionOffset:頁面偏移的百分比
* @param positionOffsetPixels:頁面偏移的像素
*/
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
/**
* 此方法在頁面狀態改變的時候調用
*
* @param state:state==0:什麼也沒作 state==1:正在滑動
* state==2:滑動結束
*/
@Override
public void onPageScrollStateChanged(int state) {
}
}
效果圖:3d