當咱們使用的新的軟件的時候,咱們首先須要教用戶如何使用咱們的軟件,當用戶學習完使用教程,下次再登陸的時候,咱們應該直接跳到咱們的功能界面,下面我來展現一下我學習視頻作的效果圖:手機防盜這個功能模塊就是綁定SIM卡,而後經過檢測SIM卡開機的時候是否變動,來保護用戶的手機是否處於安全狀態,若是發現SIM卡變化,這樣就須要咱們的第二步,設置一個安全號碼,當發現SIM卡已經變化,這個時候手機會自動的發送報警短信提示用戶的手機已經處於不安全的狀態。當咱們看完教程仍不知如何操做咱們的軟件的時候,這個時候就須要設置一個功能,從新讓用戶再能夠看教程。這就是咱們防盜模塊的思想。android
設置中心模塊的中心思想就是一些經常使用的功能是否開啓和關閉。例如自動更新的設置,黑名單的設置。。。安全
固然咱們不單單須要知道這些設計思想,還須要把這些思想以及功能得以實現。ide
下面我來記錄一下,我學習到的知識點:佈局
先來講一下手機防盜那個頁面:學習
首先咱們用的應該是LinearLayout,還有RelativeLayout。spa
android:drawableLeft="@android:drawable/star_big_on"這個是Android開發自帶的星星圖片,能夠利用左右上下屬性來控制星星所在的位置
style="@style/TitleStyle" 當咱們的佈局文件中出現大量的重複性的代碼的時候,咱們應該學會把這些代碼抽取出來。放在values文件下面。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical" tools:context=".LostAndFindActivity" > <TextView style="@style/TitleStyle" android:text="手機防盜" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView style="@style/ContentStyle" android:text="安全號碼"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:layout_centerVertical="true" android:textColor="@color/black" android:textSize="20dp" android:text="111"/> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="2dp" android:background="@color/black" android:layout_marginTop="5dp"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView style="@style/ContentStyle" android:text="防盜保護是否開啓"/> <ImageView android:layout_width="25dp" android:layout_height="25dp" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:layout_centerVertical="true" android:src="@drawable/person"/> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="2dp" android:background="@color/black" android:layout_marginTop="5dp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:onClick="reEnterSetUp" android:padding="5dp" android:background="@drawable/btn_shape_selector" android:text="從新進入設置嚮導" android:textColor="@color/black" android:textSize="25sp"/> <View android:layout_width="match_parent" android:layout_height="2dp" android:background="@color/black"/> <TextView style="@style/ContentStyle" android:layout_width="match_parent" android:background="#bbf" android:layout_marginLeft="0dp" android:text="功能簡介"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:textSize="22sp" android:text="GPS追蹤:#*location*#"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:textSize="22sp" android:text="播放報警音樂:#*alarm*#"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:textSize="22sp" android:text="遠程刪除數據:#*wipedata*#"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:textSize="22sp" android:text="遠程鎖屏:#*lockscreen*#"/> </LinearLayout>
教程的第一步,咱們一樣用到了上面的一些類似的屬性嗎,以及控件的樣式。重點是:設計
android:src="@android:drawable/presence_online" 這是那四個小圓點的屬性,online是會出現相似於被點擊的效果,
android:src="@android:drawable/presence_invisible" 這是相似於沒有被點擊的效果。這個控件就相似於上面的星星同樣,也是自帶的效果
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/white" > <TextView style="@style/TitleStyle" android:text="1.歡迎使用手機防盜嚮導" /> <TextView style="@style/ContentStyle" android:text="您的手機防盜衛士"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:text="SIM卡變更報警"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:text="GPS追蹤"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:text="遠程數據銷燬"/> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center" android:text="遠程鎖屏"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_online"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/ic_launcher" /> <Button style="@style/NextPage"/> </RelativeLayout> </LinearLayout>
教程第二步:3d
下面這個內容是視頻當中最重要的內容:code
自定義屬性的步驟:orm
1.自定義命名空間:(使用自定義控件的佈局文件裏面寫)
xmlns:itheima(本身隨意命名)="http://schemas.android.com/apk/res/包名"
2.自定義屬性
在res目錄下的values目錄裏面,建立一個attrs.xml
聲明本身定義的屬性
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="SettingView"> <attr name="title" format="string" /> <attr name="descs" format="string" /> </declare-styleable> </resources>
屬性聲明完成之後就會在R文件裏面生成id。
3.xml佈局文件裏面配置這個屬性(在使用自定義控件的佈局文件裏面寫)
itheima:descs="SIM卡已綁定#SIM卡沒有綁定" itheima:title="點擊綁定SIM卡"
4.在代碼裏面獲取屬性(在自定義的Java代碼裏面寫)
String title = attrs.getAttributeValue("http://schemas.android.com/apk/res/com.itcast.mobilesafe58.activity","title");
String desc = attrs.getAttributeValue(命名空間, 屬性的名稱);
5.設置這個屬性的值 (在自定義的Java代碼裏面寫)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:itheima="http://schemas.android.com/apk/res/com.itcast.mobilesafe58.activity" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical" tools:context=".SetUp2Activity" > <TextView style="@style/TitleStyle" android:text="2.手機卡綁定" /> <TextView style="@style/ContentStyle" android:text="經過綁定SIM卡:"/> <TextView style="@style/ContentStyle" android:text="下次重啓手機,發現SIM卡變"/> <TextView style="@style/ContentStyle" android:text="化就會發送報警短信"/> <com.itcast.mobilesafe58.view.SettingItemView android:id="@+id/siv_bind" android:layout_width="match_parent" android:layout_height="wrap_content" itheima:descs="SIM卡已綁定#SIM卡沒有綁定" itheima:title="點擊綁定SIM卡"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_online"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/ic_launcher" /> <Button style="@style/NextPage"/> <Button style="@style/PreviousPage" /> </RelativeLayout> </LinearLayout>
下面還有一個知識點:就是手勢滑動的效果:
進入到下一個頁面:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="100%p" android:toXDelta="0"> </translate>
回到上一個頁面:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0" android:toXDelta="-100%p"> </translate>
而後在Java文件裏面調用這個方法:
overridePendingTransition(R.anim.translate_previous_in, R.anim.translate_previous_out);
最後還有注意的一點是添加權限的問題:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
因爲這個項目的代碼文件太長,我已經把文件上傳到我博客的文件中。