由于我做的项目需要 在网上查了 很多资料 也没看到一个比较完整的 方案
今天 我就把我写的 给大家分享一下
1.写一个activity作为引导图层
public class Guide_activity extends FragmentActivity {
private LinearLayout guide_image;
private ImageView guide_image1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide_image);
guide_image = (LinearLayout) findViewById(R.id.guide_image);
guide_image1 = (ImageView) findViewById(R.id.guide_image1);
String str = getIntent().getStringExtra("class");
if(str.equals("Products_fragment")){//用于判断是那个页面过来的 好支持不同的引导图
guide_image1.setImageResource(R.drawable.guide_products);
}else if(str.equals("MineFragment_new")){
guide_image1.setImageResource(R.drawable.guide_mine);
}
guide_image.setOnClickListener(new View.OnClickListener() {//设置点击事件 点击这关闭着个引导图activity
@Override
public void onClick(View v) {
finish();
}
});
}
}
引导图层的xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/guide_image">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="100dp"
android:id="@+id/guide_image1"
/>
</LinearLayout>
由于引导图是用的activity 但是activity 会遮住后面的 这就不是我们想要的效果了 所以需要自己写一个style
res/values/styles.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Transparent">
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
</resources>
在colors.xml文档 声明
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="transparent_background">#50000000</color>
</resources>
在androidManifest.xml文档 声明activity
<activity android:name=".ui.Guide_activity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Transparent" />
上面一部分引用了
http://norety.iteye.com/blog/648725的内容
2.写一个用于判断用户是否是第一次进入的工具类
public class ChangeLogHelper {
final static String FINANCIAL_KEY = "financial";
/**
*引导图
* @param context aaa用于存入Constants.version这个全局变量 这个变量是用于放版本号的 你也可也放别的标识 在下一个方法判断的时候用同样的就行
*/
public static void saveFinancial(Context context,String aaa) {
SharedPreferences preferences = context.getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(FINANCIAL_KEY, aaa);
editor.commit();
}
/**
* 获取是否第一次进入
* @param context
* @return
*/
public static boolean getFinancial(Context context) {
SharedPreferences preferences = context.getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE);
return preferences.getString(FINANCIAL_KEY, "").equals(Constants.version);
}
}
在需要用到引用图的界面代码
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(!ChangeLogHelper.getFinancial(getActivity())){//判断是否是第一次进入这页面 是第一次 显示引导图
startActivity(new Intent(getActivity(), Guide_activity.class).putExtra("class","Products_fragment"));
ChangeLogHelper.saveFinancial(getActivity(), Constants.version);//用于设置判断标识
}
}