99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

android窗口,Android窗口指定位置

Android 多窗口模式(分屏模式)

1: 分屏模式:

成都創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站建設、網站設計、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的鶴慶網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

該模式可以在手機上使用, 該模式將屏幕一分為二, 同時顯示兩個應用界面

2: 畫中畫模式:

該模式主要用于TV, 在該模式下視頻播放的窗口可以一直在最頂端顯示。(視頻小窗口)

3: Freeform模式:

該模式類似于常見的桌面操作系統, 應用界面的窗口可以自由的拖動和修改大小

1:Manifest 新增屬性:

2: layout 新增屬性:

在freeform模式下定義的默認高度和寬度defaultWidthdefaultHeight, freeform模式下的初始Gravity, freeform模式下最小高度和寬度minWidthdefaultHeight。

3: 多窗口的API:

4: 分屏模式的生命周期:

很明顯, 從上圖的生命周期顯示, 在后臺將應用進入分屏模式的時候, 先執行destroy()的方法, 即在進入分屏之前, activity會被先銷毀,再調用onRestoreInstanceState方法恢復數據, 回調onMultiWindowModeChanged()

我們的 APP 進入分屏模式時,在 onMultiWindowModeChanged 方法中如果有對 UI 等的操作,經過之后的自動重建就沒有效果了。為了防止這種情況,需要在 AndroidManifest.xml 的 Activity 節點設置以下屬性:android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"

設置了這個屬性,在進入分屏模式時,Activity 就不會自動重建了。

5 跨Activity對View的拖拽:

Android 4.0 開始支持activity內容的拖拽, 在多窗口的模式下,Android也實現了activity間 實現內容的拖拽。在activity間僅限于內容的拖拽, 對view的拖拽也是沒辦法實現的 。

Android:窗口、自定義view、bitmap

1、ViewRoot 對應于 ViewRootImpl 類,它是連接 WindowManager 和 DecorView 的紐帶,View 的三大流程均是通過 ViewRoot 來完成的。在 ActivityThread 中,當 Activity 對象被創建完畢后,會將 DecorView 添加到 Window 中,同時會創建 ViewRootImpl 對象,并將 ViewRootImpl 對象和 DecorView 建立關聯

2、 自定義View-繪制流程概述

4、 Android Handler

6、 Android Bitmap

2、MeasureSpec:

3、一般來說,使用多進程會造成以下幾個方面的問題:

5、Window 概念與分類:

Window 是一個抽象類,它的具體實現是 PhoneWindow。WindowManager 是外界訪問 Window 的入口,Window 的具體實現位于 WindowManagerService 中,WindowManager 和 WindowManagerService 的交互是一個 IPC 過程。Android 中所有的視圖都是通過 Window 來呈現,因此 Window 實際是 View 的直接管理者。

6、window的三大操作:addView、upView、removeView

7、 Bitmap 中有兩個內部枚舉類:

保存圖片資源:

圖片壓縮:

基本使用:

8、Context 本身是一個抽象類,是對一系列系統服務接口的封裝,包括:內部資源、包、類加載、I/O操作、權限、主線程、IPC 和組件啟動等操作的管理。ContextImpl, Activity, Service, Application 這些都是 Context 的直接或間接子類

9、SharedPreferences 采用key-value(鍵值對)形式, 主要用于輕量級的數據存儲, 尤其適合保存應用的配置參數, 但不建議使用 SharedPreferences 來存儲大規模的數據, 可能會降低性能

10、SharedPreferences源碼有用synchronize進行加鎖同步

11、Handler 有兩個主要用途:

(1)安排 Message 和 runnables 在將來的某個時刻執行;

(2)將要在不同于自己的線程上執行的操作排入隊列。(在多個線程并發更新UI的同時保證線程安全。)

只有主線程能對UI進行操作,所以在對UI進行跟改之前,ViewRootImpl 對UI操作做了驗證,這個驗證工作是由 ViewRootImpl的 checkThread 方法完成:

12、ThreadLocal 是一個線程內部的數據存儲類,通過它可以在指定的線程中存儲數據,其他線程則無法獲取。Looper、ActivityThread 以及 AMS 中都用到了 ThreadLocal。當不同線程訪問同一個ThreadLocal 的 get方法,ThreadLocal 內部會從各自的線程中取出一個數組,然后再從數組中根據當前 ThreadLcoal 的索引去查找對應的value值:

13、Android 提供了幾種途徑來從其他線程訪問 UI 線程:

Android單線程模式必須遵守的規則:

14、HandlerThread 集成了 Thread,卻和普通的 Thread 有顯著的不同。普通的 Thread 主要用于在 run 方法中執行一個耗時任務,而 HandlerThread 在內部創建了消息隊列,外界需要通過 Handler 的消息方式通知 HanderThread 執行一個具體的任務。

15、IntentService 可用于執行后臺耗時的任務,當任務執行后會自動停止,由于其是 Service 的原因,它的優先級比單純的線程要高,所以 IntentService 適合執行一些高優先級的后臺任務。在實現上,IntentService 封裝了 HandlerThread 和 Handler。IntentService 第一次啟動時,會在 onCreatea 方法中創建一個 HandlerThread,然后使用的 Looper 來構造一個 Handler 對象 mServiceHandler,這樣通過 mServiceHandler 發送的消息最終都會在 HandlerThread 中執行。每次啟動 IntentService,它的 onStartCommand 方法就會調用一次,onStartCommand 中處理每個后臺任務的 Intent,onStartCommand 調用了 onStart 方法。可以看出,IntentService 僅僅是通過 mServiceHandler 發送了一個消息,這個消息會在 HandlerThread 中被處理。mServiceHandler 收到消息后,會將 Intent 對象傳遞給 onHandlerIntent 方法中處理,執行結束后,通過 stopSelf(int startId) 來嘗試停止服務。(stopSelf() 會立即停止服務,而 stopSelf(int startId) 則會等待所有的消息都處理完畢后才終止服務)。

16、RecyclerView 優化

Android 窗口Flags詳解

這里主要探討Touchable,Focusable,OutsideTouchable,TouchModal這四個混合使用的效果。

最簡單的Touchable,

為false,表示窗口不接受觸摸事件;

為true,表示窗口接受觸摸事件;

要窗口接收事件,必須為true。窗口不接受事件,意味著事件會透傳到下一個窗口。這里的窗口事件是指DOWN-UP,窗口是指窗口自身范圍,窗口外的ACTION_OUTSIDE與此設置無關。

為false,表示對ACTION_OUTSIDE事件不感興趣。

為true,表示對ACTION_OUTSIDE事件感興趣,此時, 如果新事件被另一個窗口消化 ,則會發送ACTION_OUTSIDE給該窗口。包括:

2.1. 如果窗口設置了Touchable為false。即使觸摸事件在窗口內,由于不處理事件,導致事件透傳,被另一個窗口消化,此時該窗口也會收到ACTION_OUTSIDE。

2.2 觸摸事件在窗口外面觸發,導致事件被另一個窗口消化,此時該窗口也會收到ACTION_OUTSIDE。

2.3 如果窗口設置了TouchModal和Focusable,導致窗口內外的事件被當前窗口截獲,由于不是被另一個窗口消化,所以即使設置了OutsideTouchable,也不會有ACTION_OUTSIDE。

為false,表示不會聚焦,所以不會有軟鍵盤。同時它的z-order可以在軟鍵盤之上,覆蓋軟鍵盤。如果你在不聚焦的情況下,還需要軟鍵盤,可以使用FLAG_ALT_FOCUSABLE_IM來修改。 如果為false,會放棄TouchModal原來的值,強制設置TouchModal為false

為true,表示窗口可以聚焦。

TouchModal的設置,只有在Focusable為true時才有效,Focusable為false,會忽略TouchModal的值

為true,當窗口Focusable為true時,無論窗口內外,事件都被當前窗口接收。

為false,當窗口Focusable為true時,只有窗口內的事件被當前窗口接收。窗口外,OutsideTouchable的設置決定了是否有ACTION_OUTSIDE事件。

為true,當窗口Focusable為false時,設置不生效。

為false,當窗口Focusable為false時,設置不生效。

FLAG_NOT_TOUCHABLE,意味著,默認是TOUCHABLE,必要時,才使用這個Flag關閉。

FLAG_NOT_FOCUSABLE,意味著,默認是FOCUSABLE,必要時,才使用這個Flag關閉。

FLAG_WATCH_OUTSIDE_TOUCH,意味著,默認是不關心,必要時,才使用這個Flag開啟。

FLAG_NOT_TOUCH_MODAL,意味著,默認是TOUCH_MODAL,必要時,才使用這個Flag關閉。

FLAG_NOT_FOCUSABLE的注釋是這樣的。This flag will also enable FLAG_NOT_TOUCH_MODAL whether or not that is explicitly set.

所謂的enable,就是使用這個Flag 。直接翻譯就是,使用了FLAG_NOT_FOCUSABLE這個Flag,就會同時使用FLAG_NOT_TOUCH_MODAL這個flag。

使用FLAG_NOT_FOCUSABLE就是關閉FOCUSABLE,使用FLAG_NOT_TOUCH_MODAL就是關閉TOUCH_MODAL。簡述就是,關閉了FOCUSABLE,會同時關閉TOUCH_MODAL。

比如,Touchable,當一個事件確實派發到窗口到時候,就看這個Flag,為true就是接受事件,為false就是不接受事件。你可以提前截獲不讓事件派發到窗口,但一旦派發到窗口,就是這個Flag來決定窗口是否接受事件。

比如,OutsideTouchable,你可以截獲事件不讓事件派發到另一個窗口,但一旦事件派發到另一個窗口,就是這個Flag決定當前窗口是否接受ACTION_OUTSIDE事件。

以下,窗口內外是指,觸點在窗口內/外。完整事件是指DOWN to UP事件流。ACTION_OUTSIDE事件只有一次。

總結, Touchable和OutsideTouchable分別控制了窗口內外的事件 。

總結, 當且僅當Focusable為true,TouchModal為true情況下,窗口內外事件才被當前窗口截獲;否則,都是窗口內才有完整事件,窗口外才有ACTION_OUTSIDE事件 。

Android四大組件 —— Activity(窗口)

Activity是一個 界面 的載體,可以把它與html頁面進行類比,html頁面由各種各樣的標簽組成,而Activity則可以由 各種控件 組成。

Activity的掌握重點主要在于:

a.Activity的生命周期?

b.Activity的啟動模式

? ? ? ? onCreate() :?

當Activity第一次被創建的時候調用此方法.一般在此方法中 進行控件的聲明,添加事件等初始化工作 .

onStart():

當Activity被顯示到屏幕上的時候調用此方法,執行完此方法后 界面可見

onResume():

當此Activity能夠被操作之前,也就是能夠獲得用戶的焦點之前調用此方法.

onRestart():

當Activity被停止后又被再次啟動之前調用此方法.接著將調用onStart()方法.

onPause():

當第一個Activity通過Intent啟動第二個Activity的時候,將調用第一個Activity的onPause()方法.然后調用第二個Activity的onCreate(),onStart(),onResume()方法,接著調用第一個Activity的onStop()方法.如果Activity重新獲得焦點,則將調用onResume()方法;如果此Activity進入用戶不可見狀態,那么將調用onStop()方法.

onStop():

當第一個Activity被第二個Activity完全覆蓋,或者被銷毀的時候回調用此方法.如果此Activity還會與用戶進行交互,將調用onRestart方法();如果此Activity將被銷毀,那么將調用onDestroy()方法.

? ???? ?注意:

a.home鍵返回,鎖屏,關閉界面肯定會調用onStop方法

b.但是開啟另一個Activity并不一定會調用onStop方法

onDestroy():

? ? ? ? ? ?Activity被銷毀之前調用此方法.或者是調用finish()方法結束Activity的時候調用此方法.可以在此方法中進行收尾工作,比如釋放資源等.

??? Active/Runing 一個新 Activity 啟動入棧后,它在屏幕最前端,處于棧的最頂端,此時它處于可見并可和用戶交互的激活狀態。

??? Paused ?當 Activity 被另一個透明或者 Dialog 樣式的 Activity 覆蓋時的狀態。此時它依然與窗口管理器保持連接,系統繼續維護其內部狀態,所以它仍然可見,但它已經失去了焦點故不可與用戶交互。

??? Stoped ?當 Activity 被另外一個 Activity 覆蓋、失去焦點并不可見時處于? Stop ed 狀態。

??? Killed ?Activity 被系統殺死回收或者沒有被啟動時處于? Killed 狀態。

在 manifest 文件中聲明 activity 時,利用activity元素的 launchMode 屬性來設定 activity 與 task 的關系。

launchMode?屬性 指明了 activity 啟動 task 的方式,默認 standard方式

??? standard(默認模式):

? ? 系統在啟動 activity 的 task 中創建一個新的 activity 實例,并把 intent 傳送路徑指向它。 該 activity 可以被實例化多次,各個實例可以屬于不同的 task,一個 task 中也可以存在多個實例。

??? singleTop:

? ? ?如果 activity 已經存在一個實例并位于當前 task 的 棧頂 ,則系統會調用已有實例的 onNewIntent() 方法把 intent 傳遞給已有實例,而不是創建一個新的 activity 實例。activity 可以被實例化多次,各個實例可以屬于不同的 task,一個 task 中可以存在多個實例(但僅當 back stack 頂的 activity 實例不是該 activity 的)。

? ?? singleTask:

系統將創建一個新的 task,并把 activity 實例 作為根 放入其中。但是,如果 activity 已經在其它 task 中存在實例,則系統會通過調用其實例的onNewIntent()?方法把 intent 傳給已有實例,而不是再創建一個新實例。 此 activity 同一時刻只能存在一個實例。

例如:可以用于關閉所有Activity或重新登錄等

singleInstance:

除了系統不會把其它 activity 放入當前實例所在的 task 之外,其它均與"singleTask"相同。activity 總是它所在 task 的唯一成員;它所啟動的任何 activity 都會放入其它 task 中

主要是startActivity(intent),或者帶值返回startActivityForResult(intent)?, Activity的跳轉方式? 。

當前標題:android窗口,Android窗口指定位置
文章源于:http://www.yijiale78.com/article24/dschice.html

成都網站建設公司_創新互聯,為您提供建站公司定制開發虛擬主機網站制作響應式網站品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設