2014-09-08 3 views
0

Итак, в моем приложении у меня есть приветственный макет или макет справки, который показывает вам, как работает приложение и что он может делать, я бы хотел, чтобы он отображался только один раз, когда приложение установлено и затем никогда не показывать снова. И если это возможно, что это самый простой способ сделать это?android SDK, одноразовый приветственный макет

ответ

1

Вы можете попробовать что-то вроде this. Создайте два макета. Ваш основной макет и макет учебника накладываются поверх вашего основного вида. Имейте метод, чтобы проверить, если он первый раз, и покажите макет учебника, если он первый раз. Если это не первый раз, установите макет учебника как невидимый.

isFirstTime() Метод

private boolean isFirstTime() 
    { 
    SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
    boolean ranBefore = preferences.getBoolean("RanBefore", false); 
    if (!ranBefore) { 

     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putBoolean("RanBefore", true); 
     editor.commit(); 
     topLevelLayout.setVisibility(View.VISIBLE); 
     topLevelLayout.setOnTouchListener(new View.OnTouchListener(){ 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    topLevelLayout.setVisibility(View.INVISIBLE); 
    return false; 
    } 

       }); 


     } 
    return ranBefore; 

    } 

Схема XML-

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/main_layout" > 

    <!--Below activity widgets when the transparent layout is gone --> 

<RelativeLayout 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/gradient"> 

    <include 
     android:id="@+id/include1" 
     layout="@layout/actionbar" /> 

    <ImageView 
     android:id="@+id/ivDressshirt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tvLength" 
     android:layout_marginTop="55dp" 
     android:paddingLeft="@dimen/padding10dp" 
     android:src="@drawable/shirt" /> 

</RelativeLayout> 



    <!--Below is the transparent layout positioned at startup --> 
<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#88666666" 
     android:id="@+id/top_layout"> 

    <ImageView 
     android:id="@+id/ivInstruction" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:paddingTop="25dp" 
     android:layout_marginRight="15dp" 
     android:clickable="false" 
     android:paddingLeft="20dip" 
     android:scaleType="center" 
     android:src="@drawable/help" /> 

    </RelativeLayout> 

</FrameLayout> 

OnCreate()

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    topLevelLayout = findViewById(R.id.top_layout); 



    if (isFirstTime()) { 
     topLevelLayout.setVisibility(View.INVISIBLE); 
    } 
Смежные вопросы