Android 應用界面開發筆記

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 文件


-------------------以上爲第一次筆記作業,自我反省,筆記很亂,條理性不強,習慣沒有很好養成,確實做筆記幫助自己更好理解和記憶,平時還是要養成好習慣,下一次要更加加油!


發佈了38 篇原創文章 · 獲贊 9 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章