注明:转载请注明本文链接
MainActivity.java
package com.example.carr.advertisement;
import android.content.Intent;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Layout;
import android.util.Log;
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;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private TextView tv_title;
private boolean is_state = false;
private LinearLayout point_ll;
private ArrayList<ImageView> imageViews;
//点
ImageView point;
//记录上一次的位置
private int perPoint = 0;
//图片数组
private final int IMAGES[] = {R.drawable.x0, R.drawable.xa, R.drawable.xb, R.drawable.xc, R.drawable.xd, R.drawable.xe};
//标题数组
private final String TITLES[] = {"勇于创新", "探索求精", "代码狂人", "用代码点亮世界", "科技发展未来", "年薪30万"};
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int item = viewPager.getCurrentItem() +1;
viewPager.setCurrentItem(item);
handler.sendEmptyMessageDelayed(0,3000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
//查找控件
viewPager = findViewById(R.id.viewpager);
tv_title = findViewById(R.id.title);
point_ll = findViewById(R.id.point_ll);
imageViews = new ArrayList<>();
for (int i = 0; i < IMAGES.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(IMAGES[i]);
imageViews.add(imageView);
//添加点
point = new ImageView(this);
point.setBackgroundResource(R.drawable.point_red);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(32, 32);
if (i == 0) {
//如果为true点的颜色是红色
point.setEnabled(true);
tv_title.setText(TITLES[0]);
} else {
params.leftMargin = 8;
//为false点的颜色是灰色
point.setEnabled(false);
}
point.setLayoutParams(params);
point_ll.addView(point);
}
viewPager.setAdapter(new MyAdapter());
//监听ViewPager页面更改
viewPager.addOnPageChangeListener(new MyOnPageChangeListener());
int item=Integer.MAX_VALUE/2 - Integer.MAX_VALUE/2%imageViews.size();
viewPager.setCurrentItem(item);
handler.sendEmptyMessageDelayed(0,3000);
}
//图片轮播
class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
int relPosition = position%imageViews.size();
ImageView imageView = imageViews.get(relPosition);
container.addView(imageView);
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
handler.removeCallbacksAndMessages(null);
handler.sendEmptyMessageDelayed(0,3000);
break;
}
return true;
}
});
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
//控制点
class MyOnPageChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
int relPosition = position%imageViews.size();
//设置文本
tv_title.setText(TITLES[relPosition]);
//设置点颜色为灰色
point_ll.getChildAt(perPoint).setEnabled(false);
//设置点的颜色为红色
point_ll.getChildAt(relPosition).setEnabled(true);
//获取上一次的位置
perPoint = relPosition;
}
@Override
public void onPageScrollStateChanged(int state) {
if(state == ViewPager.SCROLL_STATE_DRAGGING){
is_state =true;
handler.removeCallbacksAndMessages(null);
}else if(state == ViewPager.SCROLL_STATE_IDLE){
is_state=false;
handler.removeCallbacksAndMessages(null);
handler.sendEmptyMessageDelayed(0,3000);
}else if(state == ViewPager.SCROLL_STATE_SETTLING){
}
}
}
}packag