天天看點

用Viewpager+Fragment+RadioGroup實作APP的引導頁面

當使用者從應用程式市場下載下傳App後,第一次安裝的時候總要給使用者做引導提示,主要是判斷是不是第一次下載下傳就可以了

大緻的思路如下:

一、在引導頁面的Activity中放置viepager和radiogroup控件

GuideActivity的布局檔案

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.fch.android.guide.GuideActivity" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/transparent" />

    <RadioGroup
        android:id="@+id/advertise_point_group"
        android:layout_width="fill_parent"
        android:layout_height="35dip"
        android:layout_alignParentBottom="true"
        android:gravity="center"
        android:orientation="horizontal"
        android:visibility="visible" >

        <RadioButton
            android:id="@+id/dot01"
            style="@style/dot_style"
            android:checked="true" />

        <RadioButton
            android:id="@+id/dot02"
            style="@style/dot_style"
            android:layout_marginLeft="10dip"
            android:checked="false" />

        <RadioButton
            android:id="@+id/dot03"
            style="@style/dot_style"
            android:layout_marginLeft="10dip"
            android:checked="false" />

        <RadioButton
            android:id="@+id/dot04"
            style="@style/dot_style"
            android:layout_marginLeft="10dip"
            android:checked="false" />
    </RadioGroup>

</RelativeLayout>
           

二、GuideActivity的實作邏輯,初始化控件,為viewpager填充資料擴充卡

public class GuideActivity extends FragmentActivity {

	private ViewPager viewPage;
	private Fragment1 mFragment1;
	private Fragment2 mFragment2;
	private Fragment3 mFragment3;
	private Fragment4 mFragment4;
	private PagerAdapter mPgAdapter;
	private RadioGroup dotLayout;
	private List<Fragment> mListFragment = new ArrayList<Fragment>();
    private boolean isFirst= false;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_guide);
		SharedPreferences sp= getSharedPreferences("FirstLaunch",MODE_PRIVATE);
		isFirst=sp.getBoolean("FirstValue",true);//第一次擷取不到值,取預設值true
		if(isFirst){

		}else{
			Intent intent=new Intent(this,MainActivity.class);
			startActivity(intent);
		}

		initView();
		viewPage.setOnPageChangeListener(new MyPagerChangeListener());

	}

	private void initView() {
		dotLayout = (RadioGroup) findViewById(R.id.advertise_point_group);
		viewPage = (ViewPager) findViewById(R.id.viewpager);
		mFragment1 = new Fragment1();
		mFragment2 = new Fragment2();
		mFragment3 = new Fragment3();
		mFragment4 = new Fragment4();
		mListFragment.add(mFragment1);
		mListFragment.add(mFragment2);
		mListFragment.add(mFragment3);
		mListFragment.add(mFragment4);
		mPgAdapter = new ViewPagerAdapter(getSupportFragmentManager(),
				mListFragment);
		viewPage.setAdapter(mPgAdapter);

	}

	public class MyPagerChangeListener implements OnPageChangeListener {

		public void onPageSelected(int position) {

		}

		public void onPageScrollStateChanged(int arg0) {

		}

		public void onPageScrolled(int position, float positionOffset,
				int positionOffsetPixels) {
			((RadioButton) dotLayout.getChildAt(position)).setChecked(true);
		}

	}
}
           

三、擴充卡

public class ViewPagerAdapter extends FragmentPagerAdapter {

	private List<Fragment> fragmentList = new ArrayList<Fragment>();

	public ViewPagerAdapter(FragmentManager fm) {
		super(fm);
	}

	public ViewPagerAdapter(FragmentManager fragmentManager,
			List<Fragment> arrayList) {
		super(fragmentManager);
		this.fragmentList = arrayList;
	}

	@Override
	public Fragment getItem(int arg0) {
		return fragmentList.get(arg0);
	}

	@Override
	public int getCount() {
		return fragmentList.size();
	}

}
           

四、擴充卡隻要重寫兩個方法就可以了

Fragment中的代碼

public class Fragment1 extends Fragment {

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		super.onCreateView(inflater, container, savedInstanceState);
		return inflater.inflate(R.layout.fragment_1, container, false);
	}
           

五、最主要的是要更改MainActivity中的值,把true改為false,下次判斷直接進入MainActivity

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        SharedPreferences sp= getSharedPreferences("FirstLaunch",MODE_PRIVATE);
        sp.edit().putBoolean("FirstValue",false).commit();   //修改存儲的boolean值

    }
}
           

最後貼上源碼下載下傳位址 :http://download.csdn.net/detail/szq0792/9593755

點選打開連結

繼續閱讀