《移動平臺開發實踐》第7周學習總結

20189208 2018-2019-2 《移動平臺開發實踐》第7周學習總結

教材學習內容總結

需求:java

  • 用戶需求:用戶提出的。
  • 產品需求:由用戶需求提煉出的需求。

需求分析通常步驟:android

  1. 挖掘真實需求;(更快的馬車)
    目標用戶
    使用場景
    想要解決的問題
  2. 提出解決方案
  3. 篩選和驗證方案

軟件項目需求分析git

  1. 收集需求
  2. 分析需求:表層需求→深層需求→底層需求
  3. 需求評價
  4. 需求設計
  5. 驗證需求

產品經理經常使用軟件app

  • Axure RP
  • 墨刀
  • 石墨文檔

第27章主要介紹了5種控件佈局方法:ide

  • LinearLayOut-水平垂直佈局,一維排列,相對與父佈局
  • RelativeLayOut-相對佈局,一維排列,相對於同級佈局
  • FrameLayOut-重疊重疊佈局,可上下重疊填白
  • TableLayOut-表格佈局,二維排列,相對於父佈局
  • GridLayOut-網格佈局-二維網格排列,相對於父佈局

第28章主要介紹瞭如何處理事件和編寫監聽器(event listener)監聽點擊、長按、觸碰、按鍵等。函數

  • OnClickListener-onClick()
  • OnLongClickLisner-OnLongClick()
  • OnFocusChangeListener-focusChange()
  • OnKeyListener-onKey()
  • OnTouchListener- onTouch()

第29章主要介紹了爲操做欄添加溢出、操做和下拉式導航、爲溢出添加操做,添加回退功能。
第30章主要介紹了菜單的三種類型佈局

  • 選項菜單-可添加到溢出,不需監聽器
  • 上下文菜單
  • 彈出式菜單

教材學習中的問題和解決過程

  • 問題0:GridLayOut的做用和TableLayOut的區別和優點?爲何不直接用TableLayOut?
  • 問題0解決方案:
TableLayout GridLayOut
平分 ×
水平&垂直 同時對齊 ×
跨行列布局 ×
控件自動換行 ×
空白網格 ×
直接使用 設置
extend LinarLayOut ViewGroup
  • 問題1:Bundle;
  • 問題1解決方案:
    Bundle類一個final類,是一個key-value對,「A mapping from String values to various Parcelable types.」
    兩個activity之間的通信能夠經過bundle類來實現
Bundle mBundle = new Bundle();   
//bundle類中加入數據(key -value的形式,另外一個activity裏面取數據的時候,就要用到key,找出對應的value)
mBundle.putString("Data", "data from TestBundle"); 
//新建一個intent對象,並將該bundle加入這個intent對象
Intent intent = new Intent(); 
ntent.setClass(TestBundle.this, Target.class);
intent.putExtras(mBundle);
  • 問題2:onTouch與onClick的關係?
  • 問題2解決方案:onTouch與onClick的關係
  • 問題3:log.d的做用,log的用法;
  • 問題3解決方案:
    Log日誌系統:經過logcat查看日誌
    Log.v 調試顏色-黑色,輸出-任何消息,v-verbose囉嗦的意思,使用-平時Log.v("","");
    Log.d 輸出顏色-藍色,輸出-調試、上層的信息,d-debug,使用-過濾起來能夠經過DDMS的Logcat標籤來選擇;
    Log.i 輸出顏色-綠色,輸出-通常提示性消息,顯示i、w和e的信息,不會輸出Log.v和Log.d的信息,i-information;
    Log.w 輸出顏色-橙色,輸出-Log.e的信息,w-warning警告,使用-通常須要咱們注意優化Android代碼;
    Log.e爲紅色,輸出-錯誤,e-error.
Log.d(tag, message);

/*快捷輸入 | 對應級別 
logv + Tab | verbose
logd + Tab | debug
logi + Tab | info
logw + Tab | warn
loge + Tab | error  */
  • 問題4:AppCompatActivity比Activity
  • 問題4解決方案:
    AppcompaActivity就是ActionBarActivity;
    Eclipse-自動繼承Activity;Android Studio-自動繼承AppCompatActivity;若修改AS的AppCompatActivity爲Activity並導入相關的包,則頂端ToolBar會消失。
    主界面帶有toolbar的標題欄;
    theme主題只能用
android:theme=」@style/AppTheme

(appTheme主題或者其子類),而不能用android:style。 不然會提示錯誤:學習

Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
/*
關係能夠這麼形容:AppCompatActivity————>FragmentActivity————>Activity。
*/
  • 問題5:Logcat
  • 問題5解決方案:根據log的TAG過濾消息,運行程序以前建立。
  • 問題6:setContentView(R.layout.activity_test_view);作了什麼?
  • 問題6解決方案:把佈局添加到了android.R.id.content對應的佈局中;
  • 問題7:onCreate中Bundle saveInstanceState的做用
  • 問題7解決方案:savedInstanceState-保存實例的狀態-保存着Activity的狀態。onsaveInstanceState方法是用來保存Activity的狀態。
    個遊戲在退出前,保存一下當前遊戲運行的狀態,當下次開啓時能接着上次的繼續玩下去。電子書程序,當一本小說被閱讀到第199頁後退出了(無論是內存不足仍是用戶自動關閉程序),當下次打開時,可以回到上次的位置。
public void onSaveInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInsanceState);
}

代碼調試中的問題和解決過程

  • 問題1:如何同時監聽多個button實現activity跳轉
  • 問題1解決方案:onClick()只能Override一次,可使用switch、case實現監聽做用。
private class ButtonListener implements View.OnClickListener {
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn1_1:
                    Intent a = new Intent(MainActivity.this, LinearLayOut1.class);
                    startActivity(a);
                    break;
                case R.id.btn1_2:
                    Intent b = new Intent(MainActivity.this, LinearLayOut2.class);
                    startActivity(b);
                    break;
                case R.id.btn1_3:
                    Intent c = new Intent(MainActivity.this, LinearLayOut3.class);
                    startActivity(c);
                    break;
                case R.id.btn2:
                    Intent d = new Intent(MainActivity.this, RelativeLayOut.class);
                    startActivity(d);
                    break;
                case R.id.btn3:
                    Intent e = new Intent(MainActivity.this, FrameLayOut.class);
                    startActivity(e);
                    break;
                case R.id.btn4:
                    Intent f = new Intent(MainActivity.this, TableLayOut.class);
                    startActivity(f);
                    break;
                case R.id.btn5
                    Intent g = new Intent(MainActivity.this, GridLayOut.class);
                    startActivity(g);
                    break;
                default:
                    break;}
        }}
  • 問題2:斷點調試時出現「Frames are not available.class代碼和xml代碼都沒問題
  • 問題2解決方案:低級錯誤,忘記在清單添加activity。

代碼託管

上週考試錯題總結

  • 錯題1:假以下面的類的private成員都有合適的public getter/setter,類的實例serialized and 和 deserialized後哪些成員會是null?
public class Zebra implements Serializable {
    private static final long serialUID = 1L;
    private transient String name = "George";
    private static String birthPlace = "Africa";
    private transient Integer age;
    private java.util.List<Zebra> friends = new java.util.ArrayList<>();
    private Object tail = null;
    { age = 10;}
    public Zebra() {
        this.name = "Sophia";}
    }   }//name age
    /*代碼編譯並運行沒有問題,alUID與serialVersionUID不一樣,serialVersionUID是推薦的修補,但不是必需的,這不構成任何編譯問題。序列化過程不會使用serialUID進行版本控制。能力和年齡變量都是瞬態的,這意味着它們的值不會被保存。Upon deserialization,默認的初始化和構造函數將是跳過,它們都將爲空.*/
  • 錯題2:有什麼理由必需要用字符流?
    處理字符數據的語法更方便
    自動化字符編碼
  • 錯題3:Which stream classes are high-level?
    ObjectInputStream、PrintStream、PrintWriter、ObjectOutputStream

學習進度條

             代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標         5000行                30篇            400小時                    
第一週              -----                 -----                -----                 
第二週       180/180              2/3            18/18                     
第三週       429/609            1/4            24/42                     
第四周       588/1197          2/6             30/72                     
第五週       548/1745          1/7             20/92                     
第六週       15934/17679    2/9            20/112                     
第七週 2390/20310 1/10 18/130

參考資料

相關文章
相關標籤/搜索