mViewPager.setCurrentItem(2);
} else if (checkedId == R.id.btn3) {
_TranslateAnimation = new TranslateAnimation(
mCurrentCheckedRadioLeft, getResources().getDimension(
R.dimen.rdo3), 0f, 0f);
_AnimationSet.addAnimation(_TranslateAnimation);
_AnimationSet.setFillBefore(false);
_AnimationSet.setFillAfter(true);
_AnimationSet.setDuration(100);
// mImageView.bringToFront();
mImageView.startAnimation(_AnimationSet);
mViewPager.setCurrentItem(3);
} else if (checkedId == R.id.btn4) {
_TranslateAnimation = new TranslateAnimation(
mCurrentCheckedRadioLeft, getResources().getDimension(
R.dimen.rdo4), 0f, 0f);
_AnimationSet.addAnimation(_TranslateAnimation);
_AnimationSet.setFillBefore(false);
_AnimationSet.setFillAfter(true);
_AnimationSet.setDuration(100);
// mImageView.bringToFront();
mImageView.startAnimation(_AnimationSet);
mViewPager.setCurrentItem(4);
} else if (checkedId == R.id.btn5) {
_TranslateAnimation = new TranslateAnimation(
mCurrentCheckedRadioLeft, getResources().getDimension(
R.dimen.rdo5), 0f, 0f);
_AnimationSet.addAnimation(_TranslateAnimation);
_AnimationSet.setFillBefore(false);
_AnimationSet.setFillAfter(true);
_AnimationSet.setDuration(100);
// mImageView.bringToFront();
mImageView.startAnimation(_AnimationSet);
mViewPager.setCurrentItem(5);
}
mCurrentCheckedRadioLeft = getCurrentCheckedRadioLeft();// 更新当前蓝色横条距离左边的距离
Log.i("zj", "getCurrentCheckedRadioLeft="
+ getCurrentCheckedRadioLeft());
Log.i("zj", "getDimension=" + getResources().getDimension(R.dimen.rdo2));
// 让ScrollBar自动跟随点击的button位置而变动,否则你点击到最右侧了,右侧的条目不会自动显示出来,还要手动滑动ScrollBar
// 后面跟的x,y坐标,可以自己测试来给出,比如这里当你点击第1、2个按钮时x=-1、0,这里不可能存在负数,-1按0计,ScrollBar在最左侧即可,当你点击第3/4/5按钮时,ScrollBar适当右移100/200/300
mHorizontalScrollView.smoothScrollTo((int) mCurrentCheckedRadioLeft
- (int) getResources().getDimension(R.dimen.rdo2), 0);
}
/**
* 获得当前被选中的RadioButton距离左侧的距离
*/
private float getCurrentCheckedRadioLeft() {
// TODO Auto-generated method stub
if (mRadioButton1.isChecked()) {
// Log.i("zj",
// "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo1));
return getResources().getDimension(R.dimen.rdo1);
} else if (mRadioButton2.isChecked()) {
// Log.i("zj",
// "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo2));
return getResources().getDimension(R.dimen.rdo2);
} else if (mRadioButton3.isChecked()) {
// Log.i("zj",
// "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo3));
return getResources().getDimension(R.dimen.rdo3);
} else if (mRadioButton4.isChecked()) {
// Log.i("zj",
// "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo4));
return getResources().getDimension(R.dimen.rdo4);
} else if (mRadioButton5.isChecked()) {
// Log.i("zj",
// "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo5));
return getResources().getDimension(R.dimen.rdo5);
}
return 0f;
}
private void iniListener() {
// TODO Auto-generated method stub
mRadioGroup.setOnCheckedChangeListener(this);
mViewPager.setOnPageChangeListener(new MyPagerOnPageChangeListener());
}
private void iniController() {
// TODO Auto-generated method stub
mRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);
mRadioButton1 = (RadioButton) findViewById(R.id.btn1);
mRadioButton2 = (RadioButton) findViewById(R.id.btn2);
mRadioButton3 = (RadioButton) findViewById(R.id.btn3);
mRadioButton4 = (RadioButton) findViewById(R.id.btn4);
mRadioButton5 = (RadioButton) findViewById(R.id.btn5);
mImageView = (ImageView) findViewById(R.id.img1);
mHorizontalScrollView = (HorizontalScrollView) findViewById(R.id.horizontalScrollView);
mViewPager = (ViewPager) findViewById(R.id.pager);
}
/**
* ViewPager的适配器
*
* @author zj 2012-5-24 下午2:26:57
*/
private class MyPagerAdapter extends PagerAdapter {
@Override
public void destroyItem(View v, int position, Object obj) {
// TODO Auto-generated method stub
((ViewPager) v).removeView(mViews.get(position));
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mViews.size();
}
@Override
public Object instantiateItem(View v, int position) {
((ViewPager) v).addView(mViews.get(position));
return mViews.get(position);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
}
/**
* ViewPager的PageChangeListener(页面改变的监听器)
*
* @author zj 2012-5-24 下午3:14:27
*/
private class MyPagerOnPageChangeListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
/**
* ★别忘了!!!滑动ViewPager的时候,让上方的HorizontalScrollView自动切换
*/
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
// Log.i("zj", "position="+position);
if (position == 0) {
// 必须是写setCurrentItem(1),上边设置的是radiogroup的选择改变监听事件,而不是点击事件
// 你预先点击performClick,并不会实现把页面切回到A页面的操作
mViewPager.setCurrentItem(1);
// mRadioButton1.performClick();
} else if (position == 1) {
mRadioButton1.performClick();
} else if (position == 2) {
mRadioButton2.performClick();
} else if (position == 3) {
mRadioButton3.performClick();
} else if (position == 4) {
mRadioButton4.performClick();
} else if (position == 5) {
mRadioButton5.performClick();
} else if (position == 6) {
mViewPager.setCurrentItem(5);
// mRadioButton5.performClick();
}
}
}
}
* * *
**_布局_**
<LinearLayout xmlns:android="schemas.android.com/apk/res/and…"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="50dp"
android:fadingEdge="@null"
android:scrollbars="none"
android:background="#555555"
android:id="@+id/horizontalScrollView"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#33b5e5"
>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="fill_parent"
android:layout_height="49dp"
android:orientation="horizontal"
android:layout_alignParentTop="true"
>
<RadioButton
style="@style/radioButton"
android:text="one"
android:id="@+id/btn1"
/>
<RadioButton
style="@style/radioButton"
android:text="two"
android:id="@+id/btn2"
/>
<RadioButton
style="@style/radioButton"
android:text="three"
android:id="@+id/btn3"
/>
<RadioButton
style="@style/radioButton"
android:text="four"
android:id="@+id/btn4"
/>
<RadioButton
style="@style/radioButton"
android:text="five"
android:id="@+id/btn5"
/>
</RadioGroup>
<ImageView
android:id="@+id/img1"
android:layout_width="100dp"
android:layout_height="4dp"
android:background="#33b5e5"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
</HorizontalScrollView>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
* * *
**_item_**
_layout\_0_
<LinearLayout
xmlns:android="schemas.android.com/apk/res/and…"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray">
_layout\_1_
<LinearLayout
xmlns:android="schemas.android.com/apk/res/and…"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="A"
android:gravity="center"
android:textSize="240sp"
android:textColor="#33b5e5"
/>