java代码:
package aa.lin_0805;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity implements View.OnClickListener, ViewPager.OnPageChangeListener {
private ViewPager vp;
private Button bt1;
private ArrayList<View> views;
//底部小点的图片
private ImageView[] points;
//记录当前选中位置
private int currentIndex;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.viewpager_yi);
views = new ArrayList<>();
adddata();
vp.setAdapter(new pageradapter());
//初始化底部小点
initPoint(4);
vp.setOnPageChangeListener(this);
}
private void adddata() {
LayoutInflater lf = LayoutInflater.from(MainActivity.this);
View v1 = lf.inflate(R.layout.yi_layout, null);
View v2 = lf.inflate(R.layout.er_layout, null);
View v3 = lf.inflate(R.layout.san_layout, null);
View v4 = lf.inflate(R.layout.si_layout, null);
views.add(v1);
views.add(v2);
views.add(v3);
views.add(v4);
}
/**
* 初始化底部小点
*/
private void initPoint(int views) {
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.point);
points = new ImageView[views];
//循环取得小点图片
for (int i = 0; i < views; i++) {
//得到一个LinearLayout下面的每一个子元素
points[i] = (ImageView) linearLayout.getChildAt(i);
//默认都设为灰色
points[i].setEnabled(true);
//给每个小点设置监听
points[i].setOnClickListener(this);
//设置位置tag,方便取出与当前位置对应
points[i].setTag(i);
}
//设置当面默认的位置
currentIndex = 0;
//设置为白色,即选中状态
points[currentIndex].setEnabled(false);
}
@Override
public void onClick(View v) {
}
public class pageradapter extends PagerAdapter {
// 要滑动视图的数量
public int getCount() {
return views.size();
}
/**
* 判断是否由对象生成界面
* 来判断显示的是否是同一张图片,这里我们将两个参数相比较返回即可
*/
public boolean isViewFromObject(View view, Object object) {
return (view == object);
}
// 删除多余的,因为viewpager默认缓存是三个视图
public void destroyItem(ViewGroup container, int position, Object object) {
// super.destroyItem(container, position, object);
container.removeView(views.get(position));
}
// 显示的视图
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position), 0);
return views.get(position);
}
}
/**
* 当当前页面被滑动时调用
*/
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
System.out.println("onPageScrolled()=>" + position);
}
/**
* 当新的页面被选中时调用
*/
public void onPageSelected(int position) {
System.out.println("onPageSelected()=>" + position);
//设置底部小点选中状态
setCurDot(position);
}
/**
* 当滑动状态改变时调用
*/
public void onPageScrollStateChanged(int state) {
System.out.println("onPageScrollStateChanged()=>" + state);
}
/**
* 设置当前的小点的位置
*/
private void setCurDot(int positon) {
if (positon < 0 || positon > 3 || currentIndex == positon) {
return;
}
points[positon].setEnabled(false);
points[currentIndex].setEnabled(true);
currentIndex = positon;
if (positon == 3) {
bt1 = (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "启动mainactivity", Toast.LENGTH_SHORT).show();
}
});
}
}
}
XML布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager_yi"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="24.0dip"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:padding="15.0dip"
android:src="@drawable/point" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:padding="15.0dip"
android:src="@drawable/point" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:padding="15.0dip"
android:src="@drawable/point" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:padding="15.0dip"
android:src="@drawable/point" />
</LinearLayout>
</RelativeLayout>
Selector代码:
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:drawable="@drawable/point_normal" />
<item android:state_enabled="false" android:drawable="@drawable/point_select" />
</selector>