参考文章 【1】http://www.cnblogs.com/beenupper/archive/2012/07/13/2589749.html 【2】http://www.cnblogs.com/beenupper/archive/2012/07/18/2597504.html
功能需求:在初次加载每个Activity时,页面载入不同的引导界面。 思路: 1、每个Activity动作都一样,所以必须封装一个BaseActivity,在onStart()方法中实现加载引导页,并对外提供加载接口。其他Activity extends BaseActivity 2、只需要初次加载时显示引导页,所以引入SharedPreferences,用于保存该Activity是否为初次加载
3、显示引导页其实就是展示一个全屏的ImageView,在UI上体现为FrameLayout动态加载一个图层,当不需要时remove 4、怎样获取每个Activity这个啥啥FrameLayout?可以考虑使用DecorView(DecorView为整个Window界面的最顶层View,相关介绍见参考文章【1】)。
直接上代码吧。 (1)实现MyPreferences.java。实现保持Activity是否为初次加载。
(2)修改BaseActivity.java。实现动态加载引导界面,并提供接口。
(3)修改Activity(例如MainActivity)的xml布局文件,在最顶层布局layout中加入id:my_content_view <RelativeLayout xmlns:android="http://schemas./apk/res/android" xmlns:tools="http://schemas./tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:id="@id/my_content_view"> <TextView android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" /> <Button android:id="@+id/btn_close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/txt" android:text="@string/btn_back"> </Button> </RelativeLayout> (4)修改res/values/ids.xml,增加id <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas./apk/res/android"> <item type="id" name="my_content_view"></item> </resources>
(5)在MainActivity.java的onCreate()中调用接口setGuideResId(),设置要加载的引导界面图片 package com.amanda.guidetest; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button)findViewById(R.id.btn_close); btn.setText(this.getString(R.string.btn_go)); btn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, SubActivity.class)); } }); setGuideResId(R.drawable.yindao01);//添加引导页 } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } (6)最后,上几张图片吧
总结(重要部分,已用红色标明): (1)增加MyPreferences.java (2)修改BaseActivity.java (3)修改res/values/ids.xml (4)在需要加载引导界面的Activity的布局文件中,在最顶层布局layout中加入id,android:id="@id/my_content_view" (5)在需要加载引导界面的Activity的java代码中,调用接口setGuideResId(),如setGuideResId(R.drawable.yindao01) |
|