udacity android學習筆記: lesson 3,udacityandroid

來源:互聯網
上載者:User

udacity android學習筆記: lesson 3,udacityandroid
udacity android學習筆記: lesson 3

作者:乾貨店打雜的 /titer1 /Archimedes
出處:https://code.csdn.net/titer1
聯絡:1307316一九六八
聲明:本文採用以下協議進行授權: 自由轉載-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,轉載請註明作者及出處。
tips:https://code.csdn.net/titer1/pat_aha/blob/master/Markdown/android/

  • more activity learn
  • Intent framework
  • 內容作為學習筆記,估計後期將會分成三部分
理論

start baby steps

click item的事件響應

關鍵是ItemClickListener

調試利器 toast

有點類似mfc中的afxmessage(最近還遇到線程中如何?afxmessage的效果( ̄▽ ̄)”)哈

ItemClickListener + toast 代碼實踐

detail activity

lesson 3-8引出detail activity

實踐


當建立activity(DetailActvity)成功後,會增加以下檔案

  • new activity java file (eg:DetailActvity.java)
  • relative fragment(eg: fragment_deatil.xml)
  • relatvie layout(eg:activity_deatil.xml)
  • 其他如anroidManifest被改變
Intents framework

一個activity移動到另外一個activity時,使用startactivity,參數是intent

一種直覺,感覺intent封裝了類似c的線程間通訊(2個activity)+進程間通訊(2個app)

當進行到3-11課時,Rado講解內容如下:

intent內容應該含有:
- Not class name
- but action done by another activity
- and the data the action should be performed

lauch DeatilActivity 代碼實踐

取代以前的toast

擴充:隱藏式/顯式 intent區別

去除以前toast的代碼,換為intent
intent的初始化就是索引值對的初始化,這裡是顯式intent

和傳統的mfc事件編程相比,這裡站在更高的抽象層次。mfc是一個list item對應一種事件,我用過的mfc,每個事件和一個固定的Itemid綁定。

到此,只解決了intent填充內容,下一步我們要在detailActivity中,解析intent傳遞過來的內容

Display Content DetailActivity 代碼實踐
貌似 ctrl+o 提示 在這裡大顯身手,待實踐證明todo:在群上 有對工具的分享,alt+enter 自動類型轉換的提示


- 取得intent
- 在detailView中顯示

3_16課 很耍寶,( ̄▽ ̄)"當前setting 會不會工作啊,待實踐證明
setting UX

wire frame 圖

如果需要科學的做需求設計,可以參考如下:

上述流程圖會告訴你什麼可以做,什麼不可以做

shared preference

第一次聽,直覺是可以重用的系統setting?

android developer options 有很多setting 設計的參考


上面有代碼,直接取到系統的preference,
每一種prefence對應一個值,資料結構上就用索引值對來儲存。


要匯入系統的相關preference,上述圖告訴方法。

代碼上的變化:
- 增加settingActivity
- androidManifest
告知activity,還有parent
- string.xml

lauch setting Activity 代碼實踐
待補充

這樣的修改在mainActivity 和DetailActivity都有。

休息

3_23 停留

開工

第三節課 本質 就是
將 activity listener
還有shared setting

添加location perference 相關的xmlhard code style

style with string.xml

modify settingActivity
lesson 3-24 聲明原理lesson 3-25 只說到使用者自己參考api:use user's location prefence when fetching weather data from server
  • load preferences xml layout in settingsActivity
  • bind preference summary to value for loaction setting
中文解讀:1)讀取resource檔案中的 perperence layout2)為loation 設定 綁定事件響應bindPreferenceSummaryToValue
use shared preferences 代碼實踐

原理參考sdk網站,
主要代碼參考如下:

簡言之,就是從preference這個索引值對裡面取到我們需要的值,然後作為參數傳給天氣任務。

!! 真正的 refresh

我們要解決的問題是去除以前的dummy data,使用真資料。

資料的重新整理是updateWeather函數做得,
這個函數在 forcastFragment.java中。

我們來看哪些地方調用了它

onOptionsItemSelected    updateWeather
onStart    updateweather   

ok,主要是上面兩處,還有還要把forcastFragment中的 onCreateView的假資料都刪除

檢測方法是, 進入app,輸入新的location,看看有沒有資料變化。

temprature unit setting
理論 3-28實踐 3-29todo:爭取把其他使用代碼的圖給換成 真實的代碼 

關鍵詞,複習
要用一種新的 preference subclass(sharedpreference 的一種): listpreference,

途中,可以看到list preference的layout設定,
關於entryValue和entries的作用,我現在不是特別清楚,貌似前者常量,而非使用者不可見。

todo 關於entryValue和entries的作用

下面將設計顯示 氣溫單位 選項的代碼
主要是添加

settingActivity    onCreate        bindPreferenceSummaryToValue(getString(R.string.pref_units_key))

上述完成綁定。

決定 溫度顯示格式的代碼是

forecastFragment    formatHighLows(...)    {        If(轉換為imperial == ture)            ....        else            doNothing        ...//最高溫和最低溫放一個字串返回      }
!!調試技巧 debug breakpoint
3-30 詳細介紹這裡的內容

我不會告訴你,我當初找debug功能是找了半天的。
要調試,不僅要學會打Log,還要step by step 追蹤。
以這裡的preference 功能調試為例,我們將在setingActvitiy中以下兩處下斷點。

  • line 59: preference.setSummary(listPreference.get…)
  • line 63:
    preference.setSummay(stringValue);

如果設定成功的話,那麼每次在preference裡面設定的值都可以在上述某斷點查看到。
並且continue過後的話,將會在介面上更新。

關於調試的幾點擴充1.debug or relase exist2.條件斷點3.支援多線程嗎4.adb 模式如何調試5.可以加入framework 代碼 進行調試嗎6.可以支援jni代碼的調試? c? 位元組碼?7.一本iso書的代碼引入
launch implict intent
3-31 直覺:站在巨人的肩膀上,引用其他app功能3-32 深入分析3-33 solution


添加新的 setting item

請注意,同時要更新 strings.xml中的字串 action_map


上面是使用 Intent的代碼(代碼還不完整),主要是
加入 openPreferredLoactionInMap

todo 深入openPreferredLoactionInMap
rest time - 第三輪

It is time to have a rest
now 進行到 3-34
都用了兩小時了

intent resolution

每個app的actvitity都有如下的過濾器處理地圖相關的intent

<intent-filter>    <action = "android.intent.action.VIEW"/>    <data android:scheme ="geo"/></intent-filter>

簡言之,過濾器

share intent介紹

這是被開發人員使用得最多的Intent

  • 實現形式
    shareActionProvider的action_SEND操作

tips:使用ctrl+shift+左右 查看對應的主要畫面格連續按D/F 幀的粒度更小tips : when use potplayer,定製播放視窗初始化大小,還有視頻,詳細見x_tips_player.jpg

緊接著,我們來看看線框圖吧,輔助設計

所有的實現都在detail activity裡面展開。


以上我們的todo list

share intent 代碼實踐

這是課程3-36的內容。
首先來填個字串吧,就在strings.xml,標記action_share

然後我們新添加一個menu相關的xml,取名為detailfragment.xml,內容如下(本方法僅對android 4.0及以上版本有效),

第三步,修改 DetailFragment的內容,
添加log_tag,和一個標記字串,

第四步,這才是關鍵的,修改onCreateView,

每個activity都有自己的intent


- get intent
- filter extra_text
- set value to the orignal intent “EXTRA_TEXT”

第五步,繼續
剛點的INTENT是我們自己封裝的啊,

其中要注意的是:
- action_send類型的activity
- 不儲存狀態(分享出去的activity是不用儲存的)的標誌, flag_actvity_clear_when_task_reset
,如果不設定,那麼在退出這個activity將會遇到煩惱

第6步,就是使能操作,
往DeatailFragment的建構函式裡面添加

setHasOptionsMenu(true);

只有這個標誌位有了,才會調用onCreateOptionMenu() ,這可是最後一步的勞動成果

最後一步,建立我們的onCreateOptionMenu,

簡單說來,這就是我們的Menu響應函數

總結剛才內容,這是我第一次理解的層次(後面將會更新認識)
- (step 1+2)準備好布局
- (step3+4+5) 初始化intent
- (step 6/7)menu響應函數

小憩

尼瑪,先在大腦中各種intent奔走中,休息一會

broad intent
  • 系統發送資訊如充電等,是通過sendBroadcast方法實現的
3-37 原理介紹3-38 代碼架構+ 接受的兩種實現

這門課的乾貨,也比較多,主要就是將如何合適的接受廣播內容。

先放上一個經典的圖,

以下四個圖,分別從maniest方式 和 動態方式的介紹了 接收器代碼的 實現


下面我們就對剛才學到的廣播接收的原理,應用到充電事件的接受上,

裡程碑時間
  • How to create new activity
  • the relation with activities
    • 結構層次
    • 導航(Parent child)
  • how to use the INTENT

激動人心的activity 生命週期在下一節課。
- 資料儲存
- 資料庫
- contentProvider

其他,android play的介紹(高品質/穩定)

小節:

晚上用時 1個半小時

其他

what is frament ?

開源oj p.a.t app
middle:Dan
raydo ,
catherine

地點:上海大學寶山校區C區1樓某教室

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.