package com.example.joe.viewpager;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class GuideActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, View.OnClickListener {
private Button btn_guide_start_experience;
private List<ImageView> imageViewList;
ViewPager mViewPager;
private View mSelectPointView;
private LinearLayout llPointGroup;
private int pWidth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去标题, 需要在setContentView方法之前调用
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_guide);
initView();// 初始化控件
}
private void initView() {
mViewPager = (ViewPager) findViewById(R.id.vp_guide);
btn_guide_start_experience = (Button) findViewById(R.id.btn_guide_start_experience);
llPointGroup = (LinearLayout) findViewById(R.id.ll_guide_point_group);
mSelectPointView = findViewById(R.id.select_point);
initData();
GuideAdapter adapter = new GuideAdapter();
mViewPager.setAdapter(adapter);
mViewPager.addOnPageChangeListener(this);// 设置监听器
btn_guide_start_experience.setOnClickListener(this);// 按钮添加监听
}
/**
* TODO:初始化ViewPager数据 void
*/
private void initData() {
int[] imageResIDs = new int[]{R.drawable.i3, R.drawable.i2, R.drawable.i1};
imageViewList = new ArrayList<>();
ImageView iv;// 图片
View view;// 点
LinearLayout.LayoutParams params; // 参数类
// Log.e("", "initData: " + imageResIDs.length );
for (int i = 0; i < imageResIDs.length; i++) {
iv = new ImageView(this);
// Log.e("tag",i+"");
iv.setBackgroundResource(imageResIDs[i]);
imageViewList.add(iv);
// 根据图片的个数, 每循环一次向LinearLayout中添加一个点
view = new View(this);
view.setBackgroundResource(R.drawable.otheryuan);
// 设置参数
params = new LinearLayout.LayoutParams(30, 30);
if (i != 0) {
params.leftMargin = 30;
}
view.setLayoutParams(params);// 添加参数
llPointGroup.addView(view);
}
}
/**
* 当页面正在滚动时 position 当前选中的是哪个页面 positionOffset 比例 positionOffsetPixels 偏移像素
*/
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
Log.e("zejian","positionOffset:-->"+positionOffset);
Log.e("zejian","position:-->"+position);
//获取两个点间的距离,获取一次即可
if(pWidth==0) {
pWidth = llPointGroup.getChildAt(1).getLeft()
- llPointGroup.getChildAt(0).getLeft();
}
// 获取点要移动的距离
int leftMargin = (int) (pWidth * (position + positionOffset));
// 给红点设置参数
RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) mSelectPointView
.getLayoutParams();
params.leftMargin = leftMargin;
mSelectPointView.setLayoutParams(params);
}
/**
* 当页面被选中
*/
@Override
public void onPageSelected(int position) {
// 显示体验按钮
if (position == imageViewList.size() - 1) {
btn_guide_start_experience.setVisibility(View.VISIBLE);// 显示
} else {
btn_guide_start_experience.setVisibility(View.GONE);// 隐藏
}
}
/**
* 当页面滚动状态改变
*/
@Override
public void onPageScrollStateChanged(int position) {
}
/**
* 打开新的界面
*/
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "跳转新界面", Toast.LENGTH_SHORT).show();
}
class GuideAdapter extends PagerAdapter {
@Override
public int getCount() {
return imageViewList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
/*
* 删除元素
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv = imageViewList.get(position);
container.addView(iv);// 1. 向ViewPager中添加一个view对象
return iv; // guide_1. 返回当前添加的view对象
}
}
}
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class GuideActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, View.OnClickListener {
private Button btn_guide_start_experience;
private List<ImageView> imageViewList;
ViewPager mViewPager;
private View mSelectPointView;
private LinearLayout llPointGroup;
private int pWidth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去标题, 需要在setContentView方法之前调用
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_guide);
initView();// 初始化控件
}
private void initView() {
mViewPager = (ViewPager) findViewById(R.id.vp_guide);
btn_guide_start_experience = (Button) findViewById(R.id.btn_guide_start_experience);
llPointGroup = (LinearLayout) findViewById(R.id.ll_guide_point_group);
mSelectPointView = findViewById(R.id.select_point);
initData();
GuideAdapter adapter = new GuideAdapter();
mViewPager.setAdapter(adapter);
mViewPager.addOnPageChangeListener(this);// 设置监听器
btn_guide_start_experience.setOnClickListener(this);// 按钮添加监听
}
/**
* TODO:初始化ViewPager数据 void
*/
private void initData() {
int[] imageResIDs = new int[]{R.drawable.i3, R.drawable.i2, R.drawable.i1};
imageViewList = new ArrayList<>();
ImageView iv;// 图片
View view;// 点
LinearLayout.LayoutParams params; // 参数类
// Log.e("", "initData: " + imageResIDs.length );
for (int i = 0; i < imageResIDs.length; i++) {
iv = new ImageView(this);
// Log.e("tag",i+"");
iv.setBackgroundResource(imageResIDs[i]);
imageViewList.add(iv);
// 根据图片的个数, 每循环一次向LinearLayout中添加一个点
view = new View(this);
view.setBackgroundResource(R.drawable.otheryuan);
// 设置参数
params = new LinearLayout.LayoutParams(30, 30);
if (i != 0) {
params.leftMargin = 30;
}
view.setLayoutParams(params);// 添加参数
llPointGroup.addView(view);
}
}
/**
* 当页面正在滚动时 position 当前选中的是哪个页面 positionOffset 比例 positionOffsetPixels 偏移像素
*/
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
Log.e("zejian","positionOffset:-->"+positionOffset);
Log.e("zejian","position:-->"+position);
//获取两个点间的距离,获取一次即可
if(pWidth==0) {
pWidth = llPointGroup.getChildAt(1).getLeft()
- llPointGroup.getChildAt(0).getLeft();
}
// 获取点要移动的距离
int leftMargin = (int) (pWidth * (position + positionOffset));
// 给红点设置参数
RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) mSelectPointView
.getLayoutParams();
params.leftMargin = leftMargin;
mSelectPointView.setLayoutParams(params);
}
/**
* 当页面被选中
*/
@Override
public void onPageSelected(int position) {
// 显示体验按钮
if (position == imageViewList.size() - 1) {
btn_guide_start_experience.setVisibility(View.VISIBLE);// 显示
} else {
btn_guide_start_experience.setVisibility(View.GONE);// 隐藏
}
}
/**
* 当页面滚动状态改变
*/
@Override
public void onPageScrollStateChanged(int position) {
}
/**
* 打开新的界面
*/
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "跳转新界面", Toast.LENGTH_SHORT).show();
}
class GuideAdapter extends PagerAdapter {
@Override
public int getCount() {
return imageViewList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
/*
* 删除元素
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv = imageViewList.get(position);
container.addView(iv);// 1. 向ViewPager中添加一个view对象
return iv; // guide_1. 返回当前添加的view对象
}
}
}