Android 應用界面開發筆記
第1, 2周
Before start
--All about GEEK!
立志成爲一隻技術Geek!
搭建環境
環境:JDK + Android SDK [ 配置環境變量,參考搜索出來的教程配置OK
開發工具Android Studio + Genymotion + ADT[ 由於自己是谷歌親兒子,直接用的真機調試
調試過程中遇到問題: Android Studio裏Android device monitor不顯示設備
根據搜索提示,確保了USB調試已打開,ADB設置正確,Bios下設置正確,最後通過在官網http://developer.android.com/sdk/win-usb.html#top 下載驅動,然後在設備管理器的Nexus5手動安裝後終於可以在Android device monitor顯示了設備
接下來就開始了Android學習之旅
第一個頁面 Activity
新建project [ 第一個project,還是挺激動的],應用名稱要注意首字母大寫,接下來選擇API Level,第一次那麼全面地認識Android小機器人從最開始的A到現在的M-Marshmallow,簡單瞭解了不同API/版本的OS的不同,看一眼躺在電腦旁升級到最新棉花糖的五兒子,雖然兩歲多了但是速度依舊飛快,好欣慰。。/扯遠了
AS有很多佈局模板,先從最基本的emptyactivity 開始第一個app //學習一段時間後一定要把所有的模板都試試
第一次看第一個視頻的時候,只覺好玩兒,其實還是不太理解的,再看的時候先把所有文件夾的不同子文件夾和子文件都看了一圈,明確了各個部分分別的作用和意圖,加深了理解。
1. Activity
每個activity即一個頁面,頁面上可以有很多控件,實現不同的功能
2. Layout
Layout文件下.xml 文件是一個頁面的佈局框架。注: xml文件的註釋不同java,是<!-- 這裏寫註釋--> 剛開始直接註釋按照java的寫,報錯了還不知道怎麼回事
.xml 下感覺最方便的就是design/text了,直觀一點直接在design下拖拽控件並預覽,在text下編輯控件,很是方便。
.xml 文件下的文本或者具體的屬性值,最好不要直接寫出來,把他們都放在res文件下,res下有drawable, strings, colors 等,都幫我們很有秩序地管理了代碼,看起來也規範清爽了很多。
剛開始在design下面拖拽玩兒的時候,還沒有發現頁面的佈局是RelativeLayout,所以東西隨便拖到哪個位置,看到視頻裏具體降到排列組合才意識到默認LinearLayout,當然可以直接改變layout方式來排列頁面上的內容。
3. Res
Res文件夾下包括Layout, drawable, values, mipmap (icon) 等,所有的資源都可以在這裏找到。
交互
- Button – onClick
Button 控件可以被點擊,onClick點擊觸發的行爲 [ findViewById(R.id.button).setOnClickListener(new View.OnClickListener() ],可以點擊顯示內容,可以點擊返回其他頁面,可以長按跳轉,可以點擊後長顯等等等,AS的提示功能非常強大,可以全都試一遍
APP的名字修改:res - values - strings.xml
版本號 在AndroidManifest.xml 的package裏面,輸入會提示version code, version name,以往在eclipse裏,是要讀取版本號和版本名的,但是在Android Studio裏,因爲是由Gradle去編譯的,所以就不需要這兩個屬性了,查找build.gradle即可
-Gradle可以幫我們構建android應用
添加啓動界面
先新建一個SplashActivity,並直接繼承於Activity, 新建class下的kind包括Class, Interface, Enum, Annocation, Singleton
繼承Activity後會自動import android.app.Activity;
創建OK後,創建一個onCreate,由於activity還是空的,需要和佈局進行關聯,我們可以創建一個佈局setContentView
setContentView(R.layout.activity_splash); //activity_splash 可以通過alt + enter直接進行創建
上面這串代碼即關聯了activity和其佈局
啓動界面
<TextView /> //文本控件,text 不要直接填寫文本,把文本內容放到values 下的strings裏,text = "@string/splash_text"
android:gravity="center" //在LinearLayout下面設置,讓內容居中
--設置啓動界面
manifest中application下第一個activity (MainActivity) 後面加上SplashActivity, 並且複製intent-filter -- 表示 系統應用的啓動頁面
<intent-filter>
<action android:name="android.intent.action.MAIN" /> //action
<category android:name="android.intent.category.LAUNCHER" /> //運行時第一個界面
</intent-filter>
修改背景顏色 即在佈局里加 在xml裏@,size調節同上, android:textColor="@color/white"
可以alt + enter在white上直接創建一個white resource
Activity間數據傳遞
previously, main activity automatically turn to splash activity, splash activity clicked to main activity
-- 1. automatically turn
do not use comment when u delete things, just in case.
- we delete the button of splash activity
''handler'' (os.login)
Handler m //在runnable中運行任務,寫一個內部類
import android.os.Handler;
public class SplashActivity extends Activity{
Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
//跳轉到mainActivity
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
}
},666);
}
}
--將啓動頁面的文字傳遞到下一個頁面
要先獲取文字
//splashActivity:
intent.putExtra("title",title);
|| TextView textView = (TextView)findViewById(R.id.title_text_view);
final String title = textView.getText().toString();
//mainActivity 先get title
Intent intent = getIntent();
if (intent != null){
String title = intent.getStringExtra("title");
顯示 title
setTitle(title);
//試試看傳遞一個對象
intent.putExtra(String name, Parcelable/Serializable value)--序列化 要傳遞一個對象要先對其序列化
生成構造器的快捷鍵 intert + alt
public class UserInfo {
private String mUserName;
private int mAge;
public UserInfo(String mUserName, int mAge) {
this.mUserName = mUserName;
this.mAge = mAge;
}
}
--序列化是一個可傳的對象-組裝
Intent intent = getIntent();
if (intent != null){
String title = intent.getStringExtra("title");
UserInfo userInfo = (UserInfo) intent.getSerializableExtra("userInfo");
setTitle(title);
}
}
在UserInfo里加幾個方法getter setter, 直接構造
提取xx變爲常量 ctrl+alt+c, 在mainActivity就可以直接引用常量
啓動了一個頁面,讓其再跳轉回來
startActivityForResult(intent, REQUEST_CODE);
--previous code,當前頁面跳回--改爲讓其關閉頁面
finish();
MainActivity:
onActivityResult //當頁面有結果的時候() Log.i("")
ctrl + alt + f 設置爲全局變量
activity 生命週期
onCreate
onStart
onResume
onPause
onStop
onDestroy
onRestart
寫Log是很好的調試方法 //*** 這一部分還需要強化
android中的控件 //課後要多試試,熟練使用
- 控件View的通用屬性: 寬高,顏色,邊距,是否可見,內容居中,點擊事件等
- TextView 顯示文本 CheckedTextView
- EditText 編輯框 hint password lines singlines maxlines phoneNumbers 等
- Button 點擊按鈕
設置文本寬度,用dp爲單位
設置文本大小,用sp爲單位
-都是根據像素(px)和屏幕大小來確定的
所有的內容,默認從上而下從左至右排列
gravity = center 可居中控件 控件屬性可以直接通過AS代碼提示功能來學習
簽名,打包,發佈
build - generate signed APK - sign (防止被覆蓋
.jks 文件
-------------------以上爲第一次筆記作業,自我反省,筆記很亂,條理性不強,習慣沒有很好養成,確實做筆記幫助自己更好理解和記憶,平時還是要養成好習慣,下一次要更加加油!