MainActivity
package com.example.viewpagerzidong;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
TextView text;
ViewPager viewpager;
LinearLayout button;
List<ImageView> imageViews = new ArrayList<>();
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int currentitem = viewpager.getCurrentItem();
currentitem++;
viewpager.setCurrentItem(currentitem);
handler.sendEmptyMessageDelayed(1,1000);
}
};
private int[] ints={
R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d,
R.drawable.e
};
private String[] strings={
"111",
"222",
"333",
"444",
"555"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.text);
viewpager = findViewById(R.id.viewpager);
button = findViewById(R.id.button);
inint();
}
private void inint() {
for (int x = 0 ; x < ints.length ; x++){
ImageView imageView = new ImageView(this);
imageView.setImageResource(ints[x]);
imageViews.add(imageView);
setButton();
}
MAdapter adapter = new MAdapter(this);
adapter.setdata(imageViews);
viewpager.setAdapter(adapter);
viewpager.setCurrentItem(Integer.MAX_VALUE/2-3);
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
int currentItem = viewpager.getCurrentItem();
text.setText(strings[currentItem % ints.length]);
for (int x = 0 ; x < ints.length ; x++){
View childAt = button.getChildAt(x);
childAt.setBackgroundResource(x == currentItem % ints.length ? R.drawable.dot_focus:R.drawable.dot_normal);
}
}
@Override
public void onPageSelected(int i) {
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
handler.sendEmptyMessageDelayed(1,1000);
viewpager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch(motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
handler.removeMessages(1);
break;
case MotionEvent.ACTION_MOVE:
handler.removeMessages(1);
break;
case MotionEvent.ACTION_UP:
handler.sendEmptyMessageDelayed(1,1000);
break;
default:
break;
}
return false;
}
});
}
private void setButton() {
ImageView view = new ImageView(this);
view.setImageResource(R.drawable.dot_normal);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(8, 8);
params.leftMargin=8;
view.setLayoutParams(params);
button.addView(view);
}
@Override
protected void onPause() {
super.onPause();
handler.removeMessages(1);
}
}
adapter
package com.example.viewpagerzidong;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
public class MAdapter extends PagerAdapter {
List<ImageView> list;
Context context;
public MAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setdata(List<ImageView> list){
this.list.clear();
this.list.addAll(list);
notifyDataSetChanged();
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view==o;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageview = list.get(position % list.size());
container.addView(imageview);
return imageview;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="150dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/viewpager"
android:layout_alignParentStart="true"
android:gravity="center_horizontal"
android:background="@color/colorAccent"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"/>
<LinearLayout
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</RelativeLayout>