個人技術部落格
由於本人在“人月神教”小組只要負責Android前端UI的工作,所以最近這段時間也一直在學習相關內容,算是有些收穫,至少感覺做APP還是一件很有意思的事。
Java
很羞愧的說,在做這項作業之前,我只學過C和C++,由於Android開發是基於Java的,所以我花了三天時間看完了慕課網的Java相關基礎教程,總結出來Java其實和C++非常類似,都是偏於物件導向的語言,強調類與方法,繼承多型介面等概念比較重要。由於時間有限並沒有深入學習Java,只是大致瞭解了一下Java的基本語法格式,主要做到能看得懂,不拖以後Android開發的後腿。
Android
鄙人寫安卓用的開發工具是Android Studio,之所以用Android Studio,是因為覺得eclipse+ADT比較老了,谷歌已經在慢慢淡化對eclipse的支援,甚至下架了ADT的下載連結,而Android Studio畢竟是谷歌親生IDE,之後也會成為Android開發的主流IDE。其實就是覺得Android Studio更高大上。而且是團隊大佬們定的規矩。給大佬遞茶。
下面說一些我在做UI時遇到的一些問題:
用SharedPreferences實現首次登入顯示引導介面
很多優秀的軟體都有引導介面,來引導使用者更好地使用APP,於是我感覺初次登陸的引導介面十分的關鍵。最開始做的時候非常頭疼,因為什麼都不會,一直想著如何判斷是否是第一次登陸,終於查閱了多方教程找到了用SharedPreferences實現首次登入顯示引導介面的方法。
SharedPreferences類,它是一個輕量級的儲存類,特別適合用於儲存軟體配置引數,如儲存使用者密碼等資訊的時候就可以用到,當然也可以用來記錄是否是首次登入。
首先,新建一個SharedPreference類,用來返回或者修改儲存在本地的記錄資訊,我這裡的記錄資訊是isLogin,即是否初次登陸,下面是程式碼:
public class SharePreference {
Context context;
public SharePreference(Context context)
{
this.context = context;
}
/****設定狀態 false為安裝後第一次登入,true為已經登入過****/
public void setState()
{
SharedPreferences sp = context.getSharedPreferences("save", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("isLogin", true);
editor.commit();
}
/***獲取狀態***/
public boolean getState()
{
SharedPreferences sp = context.getSharedPreferences("save", Context.MODE_PRIVATE);
boolean b = sp.getBoolean("isLogin", false);
return b;
}
}
接著,就可以在相應要呼叫讀取SharedPreferences資訊的地方使用了,比如我的是歡迎頁點選按鍵根據是否首次登入跳到不同的頁面,程式碼如下:
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
SharePreference sp=new SharePreference(FirstActivity.this);
boolean isLogin = sp.getState();
if(isLogin){
Intent intent=new Intent(FirstActivity.this,MainActivity.class);
startActivity(intent);
}
else {
sp.setState(); //將登陸狀態設定為true;
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
}
});
用此種方法還可以實現記住密碼等儲存簡單使用者資料的功能。
給checkbox更換選中框樣式(PS:自帶的太醜)
- 首先肯定要先找兩張令自己滿意的選中框樣式圖,一張是選中的,一張是沒選中的,命名select和noselect,調整到合適的解析度(這很重要,不然最後選中框會變得和文字不協調,我一般文字大小50sp的話,選中框樣式大概調成35*35解析度大小的,調整解析度的話,建議用PS),然後把它們放入drawable資料夾中(Android的圖片素材統一放在這個資料夾裡)
- 接著右鍵res\drawable,新建drawable resourse file,然後在裡面新增
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:drawable="@drawable/select"
/>
<item
android:state_checked="false"
android:drawable="@drawable/noselect"
/>
</selector>
- 在values資料夾下面的style.xml檔案裡增添如下程式碼,style name的名字可以隨便取,但是item name須為: android:button(會有程式碼提示),
- 引用你定義的選擇器(有程式碼提示 Android Studio 程式碼提示快捷鍵為 "Ctrl+Alt+空格")
<style name="check_box">
<item name="android:button">
@drawable/checkbox
</item>
</style>
- 在layout資料夾下的對應的xml引用你所定義的style,即在checkbox屬性中新增
style="@style/你的style name
完成,選的圖片如果好看的話,那不知道比自帶的高到哪裡去
Android Studio介面隱藏標題欄
APP執行時如果需要臨時隱藏狀態列,只需要在該動作前加入
getSupportActionBar().hide();
即可,不過只有執行的時候才能看到標題欄被隱藏了,在IDE裡編輯的時候還是會有標題欄
無論何時都隱藏狀態列
網上找的教程多是eclipse版的,不適用於Android Studio。原因是Android Studio的Activity類繼承的是AppCompatActivity,這個是屬於support v7附加包的類。而eclipse使用的則是v4包,繼承的是Activity類。所以兩者的方法不通用,這裡介紹下Android Studio隱藏狀態列的方式:
- 修改AndroidMainfest.xml中的 theme為
android:theme="@style/AppTheme"
即預設設定
- 在values\style.xml中把
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
改為
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>