分享

Activity中多Fragment使用方案1

 火柴个人资料馆 2016-11-03
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./apk/res/android"
xmlns:tools="http://schemas./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);
}

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多