久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【Android】每個(gè)Activity中加入引導(dǎo)界面

 蠢驢不笨驢不蠢 2014-04-05

參考文章

【1】http://www.cnblogs.com/beenupper/archive/2012/07/13/2589749.html

【2】http://www.cnblogs.com/beenupper/archive/2012/07/18/2597504.html

 

功能需求:在初次加載每個(gè)Activity時(shí),,頁面載入不同的引導(dǎo)界面。

思路:

1,、每個(gè)Activity動(dòng)作都一樣,,所以必須封裝一個(gè)BaseActivity,在onStart()方法中實(shí)現(xiàn)加載引導(dǎo)頁,,并對(duì)外提供加載接口,。其他Activity extends BaseActivity

2、只需要初次加載時(shí)顯示引導(dǎo)頁,,所以引入SharedPreferences,,用于保存該Activity是否為初次加載

由于引導(dǎo)過的界面就沒必要再次引導(dǎo)了。所以得保存記錄,。這里采用偏好設(shè)置保存,,如果該Activity被引導(dǎo)過了,就將它的類全名保存下,。

由于偏好設(shè)置只能保存鍵值(key-value)對(duì),,所以保存多個(gè)類名,我采用|a|b|c這種形式保存為value,。

3,、顯示引導(dǎo)頁其實(shí)就是展示一個(gè)全屏的ImageView,在UI上體現(xiàn)為FrameLayout動(dòng)態(tài)加載一個(gè)圖層,,當(dāng)不需要時(shí)remove

4,、怎樣獲取每個(gè)Activity這個(gè)啥啥FrameLayout?可以考慮使用DecorView(DecorView為整個(gè)Window界面的最頂層View,,相關(guān)介紹見參考文章【1】),。

只需要解決怎么找到那個(gè)Framelayout,我這里想到的辦法是給每個(gè)xml布局的根元素設(shè)置一個(gè)id,,通過findViewById找到咋們通過setContentView設(shè)置上布局,,

再通過View的view.getParent();得到它的父元素。它的父元素不就是咋們的要的FrameLayout嗎,?

然后創(chuàng)建一個(gè)ImageView設(shè)置上引導(dǎo)圖片加到FrameLayout就可以了

直接上代碼吧,。

(1)實(shí)現(xiàn)MyPreferences.java。實(shí)現(xiàn)保持Activity是否為初次加載,。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.amanda.guidetest;
import android.content.Context;
public class MyPreferences {
    //偏好文件名
    public static final String SHAREDPREFERENCES_NAME = "my_pref";
    //引導(dǎo)界面KEY
    private static final String KEY_GUIDE_ACTIVITY = "guide_activity";
     
    /**
     * 判斷activity是否引導(dǎo)過
     *
     * @param context
     * @return  是否已經(jīng)引導(dǎo)過 true引導(dǎo)過了 false未引導(dǎo)
     */
    public static boolean activityIsGuided(Context context,String className){
        if(context==null || className==null||"".equalsIgnoreCase(className))return false;
        String[] classNames = context.getSharedPreferences(SHAREDPREFERENCES_NAME, Context.MODE_WORLD_READABLE)
                 .getString(KEY_GUIDE_ACTIVITY, "").split("\\|");//取得所有類名 如 com.my.MainActivity
         for (String string : classNames) {
            if(className.equalsIgnoreCase(string)){
                return true;
            }
        }
          return false;
    }
     
    /**設(shè)置該activity被引導(dǎo)過了,。 將類名已  |a|b|c這種形式保存為value,因?yàn)槠弥兄荒鼙4骀I值對(duì)
     * @param context
     * @param className
     */
    public static void setIsGuided(Context context,String className){
        if(context==null || className==null||"".equalsIgnoreCase(className))return;
        String classNames = context.getSharedPreferences(SHAREDPREFERENCES_NAME, Context.MODE_WORLD_READABLE)
                 .getString(KEY_GUIDE_ACTIVITY, "");
        StringBuilder sb = new StringBuilder(classNames).append("|").append(className);//添加值
        context.getSharedPreferences(SHAREDPREFERENCES_NAME, Context.MODE_WORLD_READABLE)//保存修改后的值
        .edit()
        .putString(KEY_GUIDE_ACTIVITY, sb.toString())
        .commit();
    }
}

(2)修改BaseActivity.java,。實(shí)現(xiàn)動(dòng)態(tài)加載引導(dǎo)界面,,并提供接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.amanda.guidetest;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
public class BaseActivity extends Activity {
    private int guideResourceId=0;//引導(dǎo)頁圖片資源id
    @Override
    protected void onStart() {
        super.onStart();
        addGuideImage();//添加引導(dǎo)頁
    }
    /**
     * 添加引導(dǎo)圖片
     */
    public void <font color="#ff0000">addGuideImage</font>() {
        View view = getWindow().getDecorView().findViewById(R.id.my_content_view);//查找通過setContentView上的根布局
        if(view==null)return;
        if(MyPreferences.activityIsGuided(this, this.getClass().getName())){
            //引導(dǎo)過了
            return;
        }
        ViewParent viewParent = view.getParent();
        if(viewParent instanceof FrameLayout){
            final FrameLayout frameLayout = (FrameLayout)viewParent;
            if(guideResourceId!=0){//設(shè)置了引導(dǎo)圖片
                final ImageView guideImage = new ImageView(this);
                FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
                guideImage.setLayoutParams(params);
                guideImage.setScaleType(ScaleType.FIT_XY);
                guideImage.setImageResource(guideResourceId);
                guideImage.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        frameLayout.removeView(guideImage);
                        MyPreferences.setIsGuided(getApplicationContext(), BaseActivity.this.getClass().getName());//設(shè)為已引導(dǎo)
                    }
                });
                frameLayout.addView(guideImage);//添加引導(dǎo)圖片
                 
            }
        }
    }
     
    /**子類在onCreate中調(diào)用,,設(shè)置引導(dǎo)圖片的資源id
     *并在布局xml的根元素上設(shè)置android:id="@id/my_content_view"
     * @param resId
     */
    protected void <font color="#ff0000">setGuideResId</font>(int resId){
        this.guideResourceId=resId;
    }
}

 

(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()中調(diào)用接口setGuideResId(),設(shè)置要加載的引導(dǎo)界面圖片

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);//添加引導(dǎo)頁
    }

    @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)最后,,上幾張圖片吧

device-2012-12-03-145001 (有引導(dǎo)界面)device-2012-12-03-145730 (沒有引導(dǎo)界面)

 

    總結(jié)(重要部分,,已用紅色標(biāo)明):

(1)增加MyPreferences.java

(2)修改BaseActivity.java

(3)修改res/values/ids.xml

(4)在需要加載引導(dǎo)界面的Activity的布局文件中,在最頂層布局layout中加入id,,android:id="@id/my_content_view"

(5)在需要加載引導(dǎo)界面的Activity的java代碼中,,調(diào)用接口setGuideResId(),,如setGuideResId(R.drawable.yindao01)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多