Android利用viewpage建立引导页面

来源:互联网 发布:支付宝显示网络不给力 编辑:程序博客网 时间:2024/05/16 06:29

主要思想:

             1.建一个StartActivity作为入口。此页面主要任务,显示Splash页面 和 判断是否第一次进入此app,至跳转至引导页面。

                         1.1初始化后,在新线程沉睡1500,后发消息到handler.

                         1.2hander判断是否第一次进入。

                                    1.2.1 第一次,则跳转MainActivity。

                                    1.2.2以后,则跳转到FrameActivity。

            2.如果 IsFirstRun=true 跳转到 MainActivity,此页面主要有一个v4包下的viewpage,实现引导。

                        2.1找到viewpage

                        2.2对viewpage添加Adapter

                                    2.2.1创建FragmentPagerAdapter子类,并实现必须实现的3个方法。

                                                2.2.1.1构造器。

                                                2.2.1.2getItem(int position)方法。返回得到相应位置下的Fragment。

                                                2.2.1.3实现得到Fragment总数,getCount()

            3.由以上2.2.1.2我们需要Fragment子类,将实现的子类放到viewpage。

                        3.1实现onCrateView()方法,此方法在Fragment创建view创建时调用。

                                    3.1.1对view需要填充。View.inflate(context, resource, root); 需要context。所以,Fragment子类构造器必须添加context.

                                    3.1.2return view

                        3.2对构造器添加context


主要代码如下:


/** * 软件启动界面 * */public class StartActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fragment_my01);LinearLayout mLinear = (LinearLayout) findViewById(R.id.Fragment01Linear);mLinear.setBackgroundResource(R.drawable.ic_splash_screen);new Thread() {public void run() {try {Thread.sleep(1500);} catch (InterruptedException e) {e.printStackTrace();}Message msg = hand.obtainMessage();hand.sendMessage(msg);}}.start();};Handler hand = new Handler() {public void handleMessage(android.os.Message msg) {super.handleMessage(msg);if (isFristRun()) {Intent intent = new Intent(StartActivity.this,MainActivity.class);startActivity(intent);} else {Intent intent = new Intent(StartActivity.this,FrameActivity.class);startActivity(intent);}finish();};};private boolean isFristRun() {SharedPreferences sharedPreferences = this.getSharedPreferences("share", MODE_PRIVATE);boolean isFirstRun = sharedPreferences.getBoolean("isFirstRun", true);Editor editor = sharedPreferences.edit();if (!isFirstRun) {return false;} else {editor.putBoolean("isFirstRun", false);editor.commit();return true;}}public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {}return true;}}



/** * 软件新手指引界面 * */public class MainActivity extends FragmentActivity {private ViewPager mViewPager;// 定义一个自己的viewpager// ViewPager 和我们的listview差不多也要一个适配器@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {mViewPager = (ViewPager) findViewById(R.id.MyViewPager);ViewPagerAdapter myAdapter = new ViewPagerAdapter(this.getSupportFragmentManager(), MainActivity.this);mViewPager.setAdapter(myAdapter);}@Overrideprotected void onStop() {finish();super.onStop();}public boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (keyCode == KeyEvent.KEYCODE_BACK) {}return true;}}


public class ViewPagerAdapter extends FragmentPagerAdapter{private Context ctx;//FragmentManager fragment管理器 ,上下文public ViewPagerAdapter(FragmentManager fm,Context ctx) {super(fm);this.ctx = ctx;}//返回一个fragment//arg0 滑动到第几页@Overridepublic Fragment getItem(int arg0) {Fragment mFragment = null;if(arg0 == 0){mFragment = new MyFragmentone(ctx);}else if(arg0 == 1){mFragment = new MyFragmenttwo(ctx);}else if(arg0 == 2){mFragment = new MyFragmentthree(ctx);}return mFragment;}//返回适配数量@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 3;}}


@SuppressLint("ValidFragment")public class MyFragmentone extends Fragment {private Context ctx;// 从activity当中得到的上下文@SuppressLint("ValidFragment")public MyFragmentone(Context ctx) {super();this.ctx = ctx;}@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubsuper.onAttach(activity);// 初始化fragment时使用}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// fragment创建时使用}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// fragment创建view时使用// 返回的是一个view/** * LayoutInflater inflater 找我们的fragmentxml时实用的 ViewGroup * 使用inflater时宽高相对条件 bundler 可以通过我们的bundle在fragment创建view时传递参数 * */View view = null;view = View.inflate(ctx, R.layout.fragment_my01, null);return view;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);// activity创建时使用}@Overridepublic void onPause() {// TODO Auto-generated method stubsuper.onPause();// 暂停}@Overridepublic void onResume() {// TODO Auto-generated method stubsuper.onResume();// activity onresume 时使用}@Overridepublic void onStop() {// activity onStop()使用super.onStop();}@Overridepublic void onDestroyView() {// fragment销毁view时进入super.onDestroyView();}@Overridepublic void onDestroy() {// activity销毁super.onDestroy();}@Overridepublic void onDetach() {// fragment 被删除时进入super.onDetach();}}

@SuppressLint("ValidFragment")public class MyFragmenttwo extends Fragment {private Context ctx;public MyFragmenttwo(Context ctx) {super();this.ctx = ctx;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = null;view = View.inflate(ctx, R.layout.fragment_my01, null);LinearLayout mLinear = (LinearLayout) view.findViewById(R.id.Fragment01Linear);mLinear.setBackgroundResource(R.drawable.guidance_new2);return view;}}


@SuppressLint("ValidFragment")public class MyFragmentthree extends Fragment {private Context ctx;public MyFragmentthree(Context ctx) {super();this.ctx = ctx;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = null;view = View.inflate(ctx, R.layout.fragment_my03, null);ImageView mBtn = (ImageView) view.findViewById(R.id.MyLoginBtn);mBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {Intent intent = new Intent(ctx, FrameActivity.class);ctx.startActivity(intent);}});return view;}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 党委下属没有党支部了党委怎么办 发生日期大于制单日期怎么办 美的空调出现p0怎么办 薯片受潮不脆了怎么办 泡过的莲子煮不烂怎么办 绿豆有煮不熟的怎么办 吃了羊肉吃西瓜怎么办 吃了狗肉和绿豆怎么办 做的衣柜没有门怎么办 蒸馒头熟了会瘪怎么办 3dmax贴图太大了怎么办 嘴皮边缘颜色深怎么办 嘴巴周围肤色暗沉怎么办 中奖彩票被洗了怎么办 牙龈下面长米粒肉疙瘩怎么办 书画印章盖反了怎么办 金龙鱼一个月不吃东西怎么办 罗汉鱼头撞扁了怎么办 房顶开槽埋线白色不一样怎么办 顶上灯挪位置线怎么办 马蜂窝弄掉又来怎么办 蜂窝弄掉又有怎么办 2018年小龙虾底板脏怎么办 一本分数线擦边过怎么办 玩具塑料球扁了怎么办 胶皮与海绵开了怎么办 安卓不支持flash了怎么办 看视频要加载flash怎么办 下水道管子铁皮破了怎么办 炸金花牌一样大怎么办 玩棋牌游戏输了怎么办 苹果7插耳机外放怎么办 出国种菠菜抓了怎么办 在菲做菠菜抓到怎么办 3串1中两个怎么办 微博账号封停怎么办 阴阳师账号被永久封停怎么办 寒刃2账号被禁用怎么办 输了好多钱我该怎么办 亲朋打鱼别处在玩怎么办 做糯米蛋的蛋清怎么办