package com.example.day13rk;
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;
public class MainActivity extends AppCompatActivity {
private ArrayList<ImageView> imageViews = new ArrayList();
private int[] imageResIds = {
R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d,
R.drawable.e,
};
//图片字符串数组String[]资源.
private String[] descs = {
"巩俐不低俗,我就不能低俗",
"扑树又回来啦!再唱经典老歌引万人大合唱",
"揭秘北京电影如何升级",
"乐视网TV版大派送",
"热血屌丝的反杀",
};
private LinearLayout ll_dot;
private TextView viewPager_tv;
private ViewPager viewPager_vp;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
viewPager_vp.setCurrentItem(viewPager_vp.getCurrentItem()+1);
break;
}
handler.sendEmptyMessageDelayed(0,2000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
//找可以设置点的容器LinearLayout的对象,进行点的添加
ll_dot = findViewById(R.id.ll_dot);
//找到文本的对象
viewPager_tv = findViewById(R.id.viewPager_tv);
//找到VIewPager对象.
viewPager_vp = findViewById(R.id.viewPager_vp);
for(int i = 0 ; i < imageResIds.length; i++){
//创建ImageView对象
ImageView imageView = new ImageView(this);
//通过该对象添加图片资源..setBackgroundResource方法
imageView.setBackgroundResource(imageResIds[i]);
//把控件添加到集合ImageViews中去,以方便在VIewPager的适配器里instantiateItem方法获取
imageViews.add(imageView);
//进行点的添加,其个数和图片的个数一致,因此放到该循环中
createDot();
}
//设置适配器
viewPager_vp.setAdapter(new MyViewpagerAdapter(MainActivity.this,imageViews));
//滑动监听
viewPager_vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
//同过getCurrentItem方法拿到当前用户所交互ViewPager的item位置.
int currentItem = viewPager_vp.getCurrentItem();
changeTextAndDot(currentItem%imageResIds.length);
}
@Override
public void onPageSelected(int i) {
int position = i % imageViews.size();
viewPager_tv.setText(descs[position]);
}
//和用户交互时,state就是ViewPager的状态
@Override
public void onPageScrollStateChanged(int state) {
//如果空闲状态就自动滑动
if(state == ViewPager.SCROLL_STATE_IDLE){
handler.sendEmptyMessageDelayed(0,2000);
}else{
handler.removeMessages(0);
}
}
});
//设置左右滑动
viewPager_vp.setCurrentItem(Integer.MAX_VALUE/2+3);
handler.sendEmptyMessageDelayed(0,2000);
/* viewPager_vp.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});*/
}
private void changeTextAndDot(int position) {
viewPager_tv.setText(descs[position]);
for(int i = 0; i < imageResIds.length; i++){
View childAt = ll_dot.getChildAt(i);
childAt.setBackgroundResource(i == position ?R.drawable.dot_focus:R.drawable.dot_normal);
}
}
private void createDot() {
View view = new View(this);
view.setBackgroundResource(R.drawable.dot_normal);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(8,8);
layoutParams.leftMargin = 8 ;
view.setLayoutParams(layoutParams);
ll_dot.addView(view);
}
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeMessages(0);
}
}