package mnc.com.cn; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class testViewPager extends Activity { private ViewPager myViewPager; private MyPagerAdapter myAdapter; private LayoutInflater mInflater; private List<View> mListViews; private View layout1 = null; private View layout2 = null; private View layout3 = null; private Button btn1; private Button btn2; private Button btn3; private Message msg; private BtnHandler btnhandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.viewpager_layout); myAdapter = new MyPagerAdapter(); myViewPager = (ViewPager) findViewById(R.id.viewpagerLayout); myViewPager.setAdapter(myAdapter); btnhandler = new BtnHandler(); btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn3 = (Button) findViewById(R.id.btn3); btn1.setBackgroundResource(Color.TRANSPARENT); // btn2.setBackgroundResource(Color.TRANSPARENT); btn2.setBackgroundResource(R.color.red); btn3.setBackgroundResource(Color.TRANSPARENT); mListViews = new ArrayList<View>(); mInflater = getLayoutInflater(); layout1 = mInflater.inflate(R.layout.layout1, null); layout2 = mInflater.inflate(R.layout.layout2, null); layout3 = mInflater.inflate(R.layout.layout3, null); mListViews.add(layout1); mListViews.add(layout2); mListViews.add(layout3); // 初始化当前显示的view myViewPager.setCurrentItem(1); // 初始化第二个view的信息 EditText v2EditText = (EditText) layout2.findViewById(R.id.editText1); v2EditText.setText("动态设置第二个view的值"); myViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { Log.d("k", "onPageSelected - " + arg0); // activity从1到2滑动,2被加载后掉用此方法 View v = mListViews.get(arg0); EditText editText = (EditText) v.findViewById(R.id.editText1); editText.setText("动态设置#" + arg0 + "edittext控件的值"); switch (arg0) { case 0: testViewPager.this.msg = testViewPager.this.btnhandler.obtainMessage(); testViewPager.this.msg.arg1=0; testViewPager.this.msg.sendToTarget(); break; case 1: testViewPager.this.msg = testViewPager.this.btnhandler.obtainMessage(); testViewPager.this.msg.arg1=1; testViewPager.this.msg.sendToTarget(); break; case 2: testViewPager.this.msg = testViewPager.this.btnhandler.obtainMessage(); testViewPager.this.msg.arg1=2; testViewPager.this.msg.sendToTarget(); break; default: break; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { Log.d("k", "onPageScrolled - " + arg0); // 从1到2滑动,在1滑动前调用 } @Override public void onPageScrollStateChanged(int arg0) { Log.d("k", "onPageScrollStateChanged - " + arg0); // 状态有三个0空闲,1是增在滑行中,2目标加载完毕 /** * Indicates that the pager is in an idle, settled state. The * current page is fully in view and no animation is in * progress. */ // public static final int SCROLL_STATE_IDLE = 0; /** * Indicates that the pager is currently being dragged by the * user. */ // public static final int SCROLL_STATE_DRAGGING = 1; /** * Indicates that the pager is in the process of settling to a * final position. */ // public static final int SCROLL_STATE_SETTLING = 2; } }); } private class MyPagerAdapter extends PagerAdapter { @Override public void destroyItem(View arg0, int arg1, Object arg2) { Log.d("k", "destroyItem"); ((ViewPager) arg0).removeView(mListViews.get(arg1)); } @Override public void finishUpdate(View arg0) { Log.d("k", "finishUpdate"); } @Override public int getCount() { Log.d("k", "getCount"); return mListViews.size(); } @Override public Object instantiateItem(View arg0, int arg1) { Log.d("k", "instantiateItem"); ((ViewPager) arg0).addView(mListViews.get(arg1), 0); return mListViews.get(arg1); } @Override public boolean isViewFromObject(View arg0, Object arg1) { Log.d("k", "isViewFromObject"); return arg0 == (arg1); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { Log.d("k", "restoreState"); } @Override public Parcelable saveState() { Log.d("k", "saveState"); return null; } @Override public void startUpdate(View arg0) { Log.d("k", "startUpdate"); } } private class BtnHandler extends Handler{ @Override public void handleMessage(Message msg) { switch (msg.arg1) { case 0: btn1.setBackgroundResource(R.color.red); btn2.setBackgroundResource(R.color.transparent); btn3.setBackgroundResource(R.color.transparent); // Toast.makeText(testViewPager.this, "0", 0).show(); break; case 1: btn2.setBackgroundResource(R.color.red); btn1.setBackgroundResource(R.color.transparent); btn3.setBackgroundResource(R.color.transparent); break; case 2: btn3.setBackgroundResource(R.color.red); btn2.setBackgroundResource(R.color.transparent); btn1.setBackgroundResource(R.color.transparent); break; default: break; } } } }