// Android 的中等知識理解
1 自定義控制元件
2 在android中跨行程之間通訊有那幾種 ?
3 RecyclerView 了解情況
4 Android Fragment和Fragment之間怎么傳遞資料的
5 Fragment 如何給 activity 傳遞資料
6 回呼介面 的通俗理解 ( 這塊我還是不是特別的清晰 )
7 Android中的幾種影片 ?
8 Android的通用設計模式???
9 自己沒有對自己寫過的代碼進行一個封裝 ?? 你是怎么封裝的 ?? 封裝的目的就是不為了讓代碼重復 ??
10 AsyncTask 異步任務的理解
11 相關的加密技術了解 ??
12 Android與Js互動 ?? Android 呼叫JS的方法, JS 呼叫 Android 方法;
13 RecyclerView復用機制 ??
==========================================================================================================================
(1) 自定義控制元件
測量- onMeasure 程序是用于測量視圖的大小
布局- onLayout 程序用于設定視圖在螢屏中顯示的位置
繪制- onDraw 程序主要用于利用前兩步得到的引數,將視圖顯示在螢屏上,到這里也就完成了整個的視圖繪制作業,
畫布Canvas的用法
Canvas提供了下列2類方法:
(1)在區域內部繪制圖形該類方法用來繪制各種基本幾何圖形,
(2)畫布的控制操作控制操作包括旋轉、縮放、平移以及存取畫布狀態的操作,
畫筆Paint的用法:
//鋸齒效果
//設定畫筆的顏色 //防抖動 //設定陰影 //設定畫筆的風格(空心或實心)
//設定空心邊框的寬度
(2) 在android中跨行程之間通訊有那幾種
其中Activity可以跨行程呼叫其他應用程式的Activity;
跨行程訪問Activity(訪問其他應用程式中的Activity)主要是通過一個Action來完成的,如果要傳遞資料,還需 要指定一個Uri,當然,
傳遞資料也可以通過Intent來完成,傳遞資料的程序可以是雙向的,如果要想從呼叫的Activity中回傳資料,就需要使用
startActivityForResult方法來啟動Activity了,
(3) RecyclerView 了解情況
RecyclerView提供了三種內置的LayoutManager
整體上看Recyclerview架構,提供了一種插拔式的體驗,高度的解耦,例外的靈活,通過設定它提供的不同
LinearLayoutManager:線性布局,橫向或者縱向滑動串列
GridLayoutManager:表格布局
StaggeredGridLayoutManager:流式布局,例如瀑布流效果
首先這邊我們需要繼承RecyclerView.Adaper類,然后實作兩個重要的方法onBindViewHodler0以及onCreateViewHlolder0,這邊我們看出來
區別,使用RecyclerView控制元件我
們就可以把Item View視圖創建和資料系結這兩步進行分來進行管理,用法就更加方便而且靈活了,并且我們
可以定制打造千變萬化的布局,同時這邊我們還需要創建一個!
ViewHolder類,該類必須繼承自Recyclerview.ViewHolder類,現在Google
也要求我們必須要實作ViewHolder來承載Item的視圖,
3.1 .RecyclerView分隔線實作(ItemDecoration)
3.2 RecyclerView (監聽事件處理)
,
對于RecyclerView來講,非常可惜的時候,該控制元件沒有給我們提供這樣的內置監聽器方法,不過我們可以進行改造實作
LayoutManager, ItemDecoration, ItemAnimator
RecyclerviewtbListView多兩級快取
(4) Android Fragment和Fragment之間怎么傳遞資料的
通過共同的Activity傳遞(主要方法)
在Activity里面添加一個欄位、來臨時保存要一些值,在Activity中定義一個欄位、然后添加set和get方法,
(7)Android的幾種影片
Android包含三種影片:
ViewAnimation、 Drawable Animation、 Property Animation
ViewAnimation (Tween Animation補間影片):
基于View的漸變影片,只改變了View的繪制效果,實際屬性值未變,在代碼中定義影片
DrawableAnimation(Frame Animation幀影片):
加載一系列Drawable資源來創建影片,這種傳統影片某種程度上就是創建不同圖片序列,順序播放,就像電影膠片,在代碼中定義影片幀
PropertyAnimation(屬性影片):
影片的物件除了傳統的View物件,還可以是Object物件,影片之后,Object物件的屬性值被實實在在的改變了,Property animation能夠通過改變View物件的實際屬性來實作View影片,任何時候View屬性的改變,View能自動呼叫invalidate()來重繪,
(10) AsyncTask 異步任務的理解
- AsyncTask是Android提供的一個助手類,它對Thread和Handler進行了封裝,方便我們使用,Android之所以提供AsyncTask這個類,就是
為了方便我們在后臺執行緒中執行
操作,然后將結果發送給主執行緒,從而在主執行緒中進行UI更新等操作,
2.AsyncTask,是android提供的輕量級的異步類,可以直接繼承AsyncTask,在類中實作異步操作,并提供介面反饋當前異步執行的程度(可以通
過介面實作UI進度更新),最后反饋執行
的結果給UI主執行緒.
3個泛型
當我們定義一個類來繼承AsyncTask這個類的時候,我們需要為其指定3個泛型引數:
AsyncTask <Params, Progress, Result>
Params:這個泛型指定的是我們傳遞給異步任務執行時的引數的型別,對應的方法是doinBackground(Params… params)
Progress:這個泛型指定的是我們的異步任務在執行的時候將執行的進度回傳給UI執行緒的引數的型別,對應的方法是publishProgress(Progress)
Result:這個泛型指定的異步任務執行完后回傳給UI執行緒的結果的型別,對應方法是onPostExecute(Result… esult)
4個步驟
當我們執行一個異步任務的時候,其需要按照下面的4個步驟分別執行
onPreExecute0:這個方法是在執行異步任務之前的時候執行,并且是在UI Thread當中執行的,通常我們在這個方法里做一些UI控制元件的初始
化的操作,例如彈出要給
ProgressDialog
,
dolnBackground(Params… params)在onPreExecute0方法執行完之后,會馬上執行這個方法,這個方法就是來處理異步任務的方法,Android操作系
統會在后臺的執行緒池當
中開啟一個worker thread來執行我們的這個方法,所以這個方法是在Worker thread當中執行的,這個方法執行完之后就可以
將我們的執行結果發送給我們的最后一個
onPostExecute 方法,在這個方法里,我們可以從網路當中獲取教據等一些耗時的操作
// pu rua 個 ruai si Progress
onProgressUpdate(Progess… values):這個方法也是在UI Thread當中執行的,我們在異步任務執行的時候,有時候需要將執行的進度回傳給我們的UI界面,例如下載一張網
絡圖片,我們需要時刻顯示其下載的進度,就可以使用這個方法來更新我們的進度,這個方法在呼叫之前,我們需要在 dolnBackground 方法中呼叫一個 publishProgress
(Progress)的方法來將我們的進度時時刻刻傳遞給 onProgressUpdate 方法來更新
onPostExecute(Result…result):當我們的異步任務執行完之后,就會將結果回傳給這個方法,這個方法也是在UI Thread當中呼叫的,我們可以將回傳的結果顯示在U控制元件上
,
(11) 相關的加密技術了解 ??
在Android開發中,一般只用到Base64,MD5,RSA,DES,
MD5、SHA、HMAC這三種加密演算法
MD5加密是一個比較經常使用的演算法,最常見的使用場景就是在帳號注冊時,用戶輸入的password經md5加密后,傳輸至server保存起來,
(12) Android與Js互動 ?? Android 呼叫JS的方法, JS 呼叫 Android 方法;
Android 呼叫 js方法
//加載本地htm檔案:
1 webView = findViewByld(Rid.webview);
//設定WebView允許呼叫js
2webView.getSettings0.setJavaScriptEnabled(true);
3 webview.IoadUr(“file:///android_ asset/show.html”);
js呼叫安卓方法:
首先,需要在activity中定義被呼叫的方法:
1 @JavascriptInterface
2 public void hello(String msg){
3
Toast.makeText(this, msg, Toast.LENGTH_SHORT),show0;
}
并且需要給webview系結 上java物件:
1 webView.addJavascriptinterface(this,“justTest”);
最后,在js中呼叫該方法:
1 呼叫安卓方法
@Override
protected void onCreate(Bundle savedinstanceState){
super.onCreate(savedinstanceState);
setContentView(R.layout:activity_main);
wview =(WebView) findViewByid(Rid.wView);
wiew.loadurl(“file:///android_asset/demo1.html”);
WebSettings webSettings = wiew.getSettings0;
//①設定WebView允許呼叫js
webSettings.setJavaScriptEnabled(true);
webSettings.setDefaultTextEncodingName(“UTF-8”);
//②設定支持js呼叫java
wiew.addlavascriptinterface(new AndroidAndISInterface0,“Android”";
Class AndroidAndJSInterface{
@Javascriptinterface
public void showToast(){
Toast.makeText(MainActivity.this,“我被js呼叫了”,Toast.LENGTH_SHORD).show0;
}
(13) RecyclerView復用機制
回收:當一個itemView從可見到不可見時,RecyclerView利用回識訓制,將它存放到了記憶體中,以便其他item出現時,不用每次都去
new一個新的itemView,而是只去 onBindViewHolder系結資料就行了.
復用:滑動程序中出現了新的itemView,不用每次都去new,而是優先從快取中去拿,快取不能滿足需求,再去 執行onCreateViewHolder
創建新的itemView并封裝到viewHolder中
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/375932.html
標籤:其他
