亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android Presentation雙屏異顯開發(fā)流程詳細講解

 更新時間:2023年01月31日 09:40:17   作者:氦客  
最近開發(fā)的一個項目,有兩個屏幕,需要將第二個頁面投屏到副屏上,這就需要用到Android的雙屏異顯(Presentation)技術(shù)了,研究了一下,這里做下筆記

1. 背景

我們那個副屏是一塊汽車的后視鏡(流媒體后視鏡),是一塊長條塊的屏幕,分辨率是400 * 1920 px,如何將需要顯示的內(nèi)容正確擺放地顯示到這塊屏幕上,也是我們開發(fā)中的一個重點。

并且,我們是使用平板橫屏進行開發(fā)的,對于橫屏情況下雙屏異顯的處理,也是我們開發(fā)中的一個重點。

2. 創(chuàng)建主屏布局

主屏就用MainActivity就好

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //...
    }
}

3. 創(chuàng)建副屏布局

這里,繼承了MyPresentation接口

class MyPresentation(outerContext: Context, display: Display) :
    Presentation(outerContext, display) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.dialog_normal)//綁定副屏顯示的布局
    }
	//顯示時調(diào)用
    override fun onStart() {
        super.onStart()
    }
    //消失時調(diào)用
    override fun onStop() {
        super.onStop()
    }
}

4. 將頁面投屏到副屏上

投屏到副屏上有多中方式,我們只需要在MainActivity中去調(diào)用這些代碼就可以了。

4.1 MediaRouter

MediaRouter mediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO);
if (route != null) {
    Display presentationDisplay = route.getPresentationDisplay();
    if (presentationDisplay != null) {
        MyPresentation myPresentation = new MyPresentation(MainActivity.this, presentationDisplay);
        myPresentation.show();
    }
}

4.2 DisplayManager

DisplayManager mDisplayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = mDisplayManager.getDisplays();
if (displays.length > 1) {
   //displays[0] 主屏,displays[1] 副屏
   MyPresentation myPresentation = new MyPresentation(MainActivity.this, displays[1]);
   myPresentation.show();
}

5. 橫屏狀態(tài)下雙屏異顯的處理

在我們那個副屏上,副屏的顯示邏輯是,主屏是豎屏,副屏就以副屏顯示,主屏是橫屏,副屏就以橫屏顯示。

如下圖所示

而我們想要達到的效果是,主屏是橫屏,而主屏是豎屏。

后來,我們想到了一個辦法,就是搞兩個ActivityActivity1負責顯示主屏的頁面,而Activity2負責副屏的顯示。

首先啟動Activity2,然后迅速啟動Activity1,當Activity1關(guān)閉的時候,也去關(guān)閉Activity1,這樣就可以實現(xiàn)主屏和副屏方向顯示不一樣的情況了。

6. 將需要顯示的內(nèi)容正確擺放到副屏上

由于我們的副屏是一塊長條塊的屏幕,分辨率是400 * 1920 px,我們現(xiàn)在主屏上是橫屏顯示,而副屏通過上述的操作,顯示的是豎屏。

而我們真正期望顯示的內(nèi)容是藍色這部分

所以,我們需要對View做一下旋轉(zhuǎn)并位移

val rotation: ObjectAnimator = 
	ObjectAnimator.ofFloat(binding.textureView, "rotation", 0f, 90f)
val translationX: ObjectAnimator =
    ObjectAnimator.ofFloat(binding.textureView, "translationX", 0f, -720F)
val translationY: ObjectAnimator =
    ObjectAnimator.ofFloat(binding.textureView, "translationY", 0f, 420F)
val animatorSet = AnimatorSet()
animatorSet.playSequentially(rotation, translationX, translationY)
animatorSet.duration = 0
animatorSet.start()

最終顯示為這樣

7. 其他

沒有副屏的情況下,如何調(diào)試 ?

如果手頭上沒有副屏,可以在開發(fā)者選項中,打開模擬輔助顯示設(shè)備

這里我們可以選擇1080P

顯示出來的虛擬副屏如下所示

這樣,我們就可以通過虛擬的副屏進行調(diào)試了。

參考

感謝

Android三種雙屏異顯實現(xiàn)方法介紹

Android Presentation實現(xiàn)雙屏異顯

Presentation 官方文檔

到此這篇關(guān)于Android Presentation雙屏異顯開發(fā)流程詳細講解的文章就介紹到這了,更多相關(guān)Android Presentation內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 5步學會使用VideoView播放視頻

    5步學會使用VideoView播放視頻

    這篇文章主要為大家詳細介紹了5步學會使用VideoView播放視頻的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android 按指定大小讀取圖片的實例

    Android 按指定大小讀取圖片的實例

    本文主要介紹Android 按指定大小讀取圖片,在Android開發(fā)過程中經(jīng)常會遇到圖片超過屏幕,或者圖片過小問題,這里給一個實例解決讀取圖片大小的問題,希望能幫助有需要的小伙伴
    2016-07-07
  • Android監(jiān)聽電池狀態(tài)實例代碼

    Android監(jiān)聽電池狀態(tài)實例代碼

    這篇文章給大家介紹Android監(jiān)聽電池狀態(tài)實例代碼,對android監(jiān)聽電池狀態(tài)相關(guān)知識感興趣的朋友一起學習吧
    2016-03-03
  • 解決Android Studio4.1沒有Gsonfomat插件,Plugin “GsonFormat” is incompatible的問題

    解決Android Studio4.1沒有Gsonfomat插件,Plugin “GsonFormat” is inco

    這篇文章主要介紹了解決Android Studio4.1沒有Gsonfomat插件,Plugin “GsonFormat” is incompatible (supported only in IntelliJ IDEA)的問題 ,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-12-12
  • Android如何設(shè)置圓角圖片

    Android如何設(shè)置圓角圖片

    這篇文章主要為大家詳細介紹了Android如何設(shè)置圓角圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android中初始化Codec2的具體流程

    Android中初始化Codec2的具體流程

    這篇文章主要介紹了Android中初始化Codec2的具體流程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 深入學習Kotlin?枚舉的簡潔又高效進階用法

    深入學習Kotlin?枚舉的簡潔又高效進階用法

    這篇文章主要為大家介紹了深入學習Kotlin?枚舉簡潔又高效的進階用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Android 異步加載圖片的實例代碼

    Android 異步加載圖片的實例代碼

    異步加載圖片主要是利用多線程進行下載、圖片弱引用緩存和Handler操作UI進行實現(xiàn)的。
    2013-05-05
  • Android 架構(gòu)之數(shù)據(jù)庫框架升級

    Android 架構(gòu)之數(shù)據(jù)庫框架升級

    上一篇講解了# Android 架構(gòu)之數(shù)據(jù)框架搭建 ,里面含有數(shù)據(jù)庫最基礎(chǔ)的增刪改查功能,不過只考慮了單數(shù)據(jù)庫,開發(fā)者可以舉一反三按照對應思路設(shè)計多數(shù)據(jù)庫架構(gòu)。 在本篇里,將會講解令開發(fā)者比較頭疼的數(shù)據(jù)庫升級,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Android水波紋載入控件CircleWaterWaveView使用詳解

    Android水波紋載入控件CircleWaterWaveView使用詳解

    這篇文章主要為大家詳細介紹了Android水波紋載入控件CircleWaterWaveView使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論