ActivityでのマルチFragment使用シナリオ1
25316 ワード
private NoScrollViewPager viewPager;
private RadioGroup radioGroup;
private void initView() {
viewPager = (NoScrollViewPager) findViewById(R.id.view_pager);
FragmentAdapter adapter = new FragmentAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
controlViewPagerSpeed();
radioGroup = (RadioGroup) findViewById(R.id.main_radio);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio_button0:
currentIndex = 0;
viewPager.setCurrentItem(0);
break;
case R.id.radio_button1:
currentIndex = 1;
viewPager.setCurrentItem(1);
break;
}
}
});
}
class FragmentAdapter extends FragmentPagerAdapter { public static final int TAB_COUNT = 2; public FragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int positon) { switch (positon) { case 0: suchaFragment = new SuchaFragment(); return suchaFragment; case 1: mineFragment = new MineFragment(); return mineFragment; } return null; } @Override public int getCount() { return TAB_COUNT; } } FixedSpeedScroller mScroller = null; /** * viewpager */ private void controlViewPagerSpeed() { try { Field mField; mField = ViewPager.class.getDeclaredField("mScroller"); mField.setAccessible(true); mScroller = new FixedSpeedScroller(viewPager.getContext(), new AccelerateInterpolator()); mScroller.setmDuration(0); mField.set(viewPager, mScroller); } catch (Exception e) { e.printStackTrace(); } } @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { //activity Fragment //super.onSaveInstanceState(outState, outPersistentState); }
xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.xgs.financepay.activity.MainActivity"> <RadioGroup android:id="@+id/main_radio" android:layout_width="match_parent" android:layout_height="55dp" android:layout_alignParentBottom="true" android:background="#F9f9f9" android:gravity="center_vertical" android:orientation="horizontal" > <com.xgs.view.DrawableLeftCenterRadioButton android:id="@+id/radio_button0" android:tag="radio_button0" android:text="@string/sucha" android:gravity="center_vertical" android:checked="true" android:layout_marginRight="80dp" /> <com.xgs.view.DrawableLeftCenterRadioButton android:id="@+id/radio_button1" android:tag="radio_button1" android:gravity="center_vertical" android:text="@string/mine" /> RadioGroup> <View android:layout_above="@id/main_radio" android:layout_width="match_parent" android:layout_height="1px" android:background="@color/black" /> <com.xgs.view.NoScrollViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> com.xgs.view.NoScrollViewPager> RelativeLayout>
/** * Created by Administrator on 2016/9/23. */ public class DrawableLeftCenterRadioButton extends RadioButton { public DrawableLeftCenterRadioButton(Context context) { super(context); } public DrawableLeftCenterRadioButton(Context context, AttributeSet attrs) { super(context, attrs); } public DrawableLeftCenterRadioButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onDraw(Canvas canvas) { Drawable[] drawables = getCompoundDrawables(); if(drawables != null){ Drawable drawableLeft = drawables[0]; if(drawableLeft != null){ float textWidth = getPaint().measureText(getText().toString()); int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = 0; drawableWidth = drawableLeft.getIntrinsicWidth(); float bodyWidth = textWidth + drawableWidth + drawablePadding; canvas.translate((getWidth() - bodyWidth) / 2, 0); } } super.onDraw(canvas); } }
public class NoScrollViewPager extends ViewPager { private boolean noScroll = true; public NoScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public NoScrollViewPager(Context context) { super(context); } public void setNoScroll(boolean noScroll) { this.noScroll = noScroll; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); } @Override public boolean onTouchEvent(MotionEvent arg0) { /* return false;//super.onTouchEvent(arg0); */ if (noScroll) return false; else return super.onTouchEvent(arg0); } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { if (noScroll) return false; else return super.onInterceptTouchEvent(arg0); } @Override public void setCurrentItem(int item, boolean smoothScroll) { super.setCurrentItem(item, smoothScroll); } @Override public void setCurrentItem(int item) { super.setCurrentItem(item); } }