最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android現(xiàn)有項(xiàng)目輕微改動(dòng)適配平板心得

 更新時(shí)間:2021年04月09日 10:34:32   作者:愛(ài)水的云  
這篇文章主要介紹了android現(xiàn)有項(xiàng)目輕微改動(dòng)適配平板心得,對(duì)android適配感興趣的同學(xué)可以參考下

最近已經(jīng)開(kāi)發(fā)好幾年的項(xiàng)目需要適配平板,同時(shí)平板上面需要橫豎屏進(jìn)行切換,還要在手機(jī)上能夠正常使用,經(jīng)過(guò)調(diào)研以后,在改動(dòng)最小的情況下,對(duì)項(xiàng)目進(jìn)行必要的修改,完成相應(yīng)的需求,現(xiàn)在將大概的思路和涉及到的內(nèi)容整理如下:

清單文件放開(kāi)強(qiáng)制橫豎屏的限制

橫豎屏切換時(shí)頁(yè)面需要重繪,生命周期會(huì)重新走,為了防止多次重復(fù)走生命周期,在清單文件中進(jìn)行設(shè)置

android:configChanges="keyboardHidden|orientation|screenSize"

對(duì)界面進(jìn)行分屏處理

左右分屏,base中進(jìn)行橫向和豎向判斷,進(jìn)行全屏或者占屏幕幾份的處理(初次加載)

@Override
	protected void onStart() {
		super.onStart();
		setScreenDirection();
	}
 
	private void setScreenDirection() {
		boolean screenDirection = ScreenDirectionUtil.getInstance().getScreenDirection(this);
		if (screenDirection) {
			ScreenDirectionUtil.getInstance().setScreenProportion(this,1,1,2);
		}else {
			ScreenDirectionUtil.getInstance().setScreenProportion(this,5,3,2);
		}
	}

由于設(shè)置了configChanges,橫豎屏切換時(shí)生命周期不再走,在onConfigurationChanged中判斷橫豎屏方向,進(jìn)行屏幕占比動(dòng)態(tài)配置

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE) {
            // 橫屏
            ScreenDirectionUtil.getInstance().setScreenProportion(this,5,3,2);
        }else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT) {
            // 豎屏
            ScreenDirectionUtil.getInstance().setScreenProportion(this,1,1,2);
        }
    }

設(shè)置activity的穿透點(diǎn)擊,平板的左側(cè)一級(jí)頁(yè)面可以一直點(diǎn)擊

清單文件中給activity設(shè)置style

android:theme="@style/transparent_activity"
 
<style name="transparent_activity" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
    </style>

activity中設(shè)置可穿透點(diǎn)擊

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

屏幕的占比動(dòng)態(tài)設(shè)置方法

 /**
     * 設(shè)置屏幕的橫向比例
     *
     * @param context
     * @param proportion 屏幕分成幾份
     * @param number 占用屏幕份數(shù)
     * @param position 1: 左  2: 右
     */
    public void setScreenProportion(Activity context, int proportion,int number,int position) {
        // 為獲取屏幕寬、高
        Display display = context.getWindowManager().getDefaultDisplay();
        Window win = context.getWindow();
        win.getDecorView().setPadding(0, 0, 0, 0);
        WindowManager.LayoutParams lp = win.getAttributes();
        if (proportion > 1){
            lp.width = (int) (display.getWidth() * number / proportion);
        }else {
            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        }
        lp.height = WindowManager.LayoutParams.MATCH_PARENT;
        //設(shè)置對(duì)話框置頂顯示
        lp.gravity = Gravity.TOP;
        //設(shè)置對(duì)話框置頂顯示
        if (position == 1) {
            lp.gravity = Gravity.LEFT;
        }else {
            lp.gravity = Gravity.RIGHT;
        }
        win.setAttributes(lp);
    }

是否是平板的判斷方法

/**
     * 判斷是否是平板
     * @param context
     * @return true: 平板   false:不是平板
     */
    public boolean isPad(Context context) {
        return (context.getResources().getConfiguration().screenLayout
                & Configuration.SCREENLAYOUT_SIZE_MASK)
                >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    }

判斷是橫屏還是豎屏

/**
     * 獲取屏幕方向
     *
     * @param context
     * @return true: 豎屏 false: 橫屏
     */
    public boolean getScreenDirection(Context context) {
        DisplayMetrics d = context.getResources().getDisplayMetrics();
        if (d.heightPixels > d.widthPixels) {
            return true;
        }
        return false;
    }

上面的是主要涉及到的相關(guān)注意事項(xiàng)和用到的方法

以上就是android現(xiàn)有項(xiàng)目輕微改動(dòng)適配平板心得的詳細(xì)內(nèi)容,更多關(guān)于android現(xiàn)有項(xiàng)目適配平板的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android圖片裁剪功能實(shí)現(xiàn)代碼

    Android圖片裁剪功能實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Android圖片裁剪功能實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android自定義開(kāi)關(guān)按鈕源碼解析

    Android自定義開(kāi)關(guān)按鈕源碼解析

    這篇文章主要為大家詳細(xì)解析了Android自定義開(kāi)關(guān)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Android使用ScrollView實(shí)現(xiàn)滾動(dòng)效果

    Android使用ScrollView實(shí)現(xiàn)滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Android使用ScrollView實(shí)現(xiàn)滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • Android判斷SD卡是否已經(jīng)掛載的方法

    Android判斷SD卡是否已經(jīng)掛載的方法

    這篇文章主要介紹了Android判斷SD卡是否已經(jīng)掛載的方法,涉及Android監(jiān)聽(tīng)方法BroadcastReceiver的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Android獲取手機(jī)文件夾及文件列表的方法

    Android獲取手機(jī)文件夾及文件列表的方法

    這篇文章主要為大家詳細(xì)介紹了Android獲取手機(jī)文件夾及文件列表的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 談?wù)凙ndroid的三種網(wǎng)絡(luò)通信方式

    談?wù)凙ndroid的三種網(wǎng)絡(luò)通信方式

    Android平臺(tái)有三種網(wǎng)絡(luò)接口可以使用,他們分別是:java.net.*(標(biāo)準(zhǔn)Java接口)、Org.apache接口和Android.net.*(Android網(wǎng)絡(luò)接口)。本文詳細(xì)的介紹,有興趣的可以了解一下。
    2017-01-01
  • 詳解Android中通過(guò)Intent類(lèi)實(shí)現(xiàn)組件間調(diào)用的方法

    詳解Android中通過(guò)Intent類(lèi)實(shí)現(xiàn)組件間調(diào)用的方法

    Intent能夠?qū)崿F(xiàn)應(yīng)用間的數(shù)據(jù)交互與通訊,將實(shí)現(xiàn)者和調(diào)用者解耦,接下來(lái)就來(lái)詳解Android中通過(guò)Intent類(lèi)實(shí)現(xiàn)組件間調(diào)用的方法,需要的朋友可以參考下
    2016-05-05
  • Android Spinner與適配器模式詳解及實(shí)例代碼

    Android Spinner與適配器模式詳解及實(shí)例代碼

    這篇文章主要介紹了Android Spinner與適配器模式詳解相關(guān)資料,并附代碼實(shí)例,需要的朋友可以參考下
    2016-10-10
  • Android常用控件ImageSwitcher使用方法詳解

    Android常用控件ImageSwitcher使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android常用控件ImageSwitcher的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 淺談Android Studio 4.1 更新內(nèi)容

    淺談Android Studio 4.1 更新內(nèi)容

    這篇文章主要介紹了淺談Android Studio 4.1 更新內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論

海原县| 平顺县| 弋阳县| 民和| 大名县| 西宁市| 城口县| 舟山市| 斗六市| 长宁县| 三都| 湾仔区| 茌平县| 古交市| 肃南| 平武县| 闵行区| 卢氏县| 大方县| 金塔县| 上蔡县| 克什克腾旗| 涿鹿县| 阿瓦提县| 八宿县| 三亚市| 安多县| 吉首市| 凭祥市| 宁都县| 城口县| 平顶山市| 治县。| 温州市| 石泉县| 田东县| 北辰区| 壶关县| 阿拉善左旗| 重庆市| 乌苏市|