Android 面试题 android中级---初级---知识点
// 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 異步任務的理解
為了方便我們在后臺線程中執行
操作,然后將結果發送給主線程,從而在主線程中進行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中
總結
以上是生活随笔為你收集整理的Android 面试题 android中级---初级---知识点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建无线监控云存储服务器,mac 篇二:
- 下一篇: 公司监控显示无网络连接服务器,监控显示无