天天看點

Android AbsoluteLayout 絕對布局應用場景介紹

Android  AbsoluteLayout絕對布局。在做android手機開發的時候。發現這個布局真是一點用也沒有。因為手機螢幕的碎片化太嚴重。導緻螢幕的分辨率各不相同。而絕對布局。聽名字也能知道。他是根據絕對坐标點位去确定控件的位置的。如果說在手機上做app它是沒什麼用處的。那它到底用在哪裡合适呢。

絕對布局。适用于像電視廠家一樣做大螢幕或者觸摸或者廣告展示的場景。他不适合寫在xml裡。寫在xml是這樣寫的。

如圖:一個textview在絕對布局裡的寫法。

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.PlayMoreScreenActivity">

    <TextView
        android:layout_x="100px"
        android:layout_y="100px"
        android:background="@color/colorPrimary"
        android:layout_width="150px"
        android:layout_height="150px" />
</AbsoluteLayout>      
Android AbsoluteLayout 絕對布局應用場景介紹

layout_x   是他的 x 坐标的起始點。

layout_y   是他的 y坐标的起始點。寬高也都用px表示。

用xml寫的話這個布局很雞肋。沒有什麼實際用處。但是用動态布局去添加的話。他可以幫你解決很多問題。

假如:公司的産品。提出這樣一個需求。在web端。設計一個模闆。這個模闆有需要添加的控件的尺寸和位置。你拿到這個模闆以後。要根據這模闆去建立相關的控件。并且根據模闆的 x坐标。 y坐标。以及 寬高去添加布局。這時就可以用 absolutelayout了。

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.PlayMoreScreenActivity">

</AbsoluteLayout>      

根布局用absolutelayout. 在java檔案中動态擷取

AbsoluteLayout absoluteLayout = findViewById(R.id.rl);
ImageView view = new ImageView(this);
AbsoluteLayout.LayoutParams abslyp = new AbsoluteLayout.LayoutParams(1920, 1080, 0, 0);
abslyp.x = 50px;
abslyp.y = 50px;
abslyp.width = 100px;
abslyp.height = 100px;
view.setLayoutParams(abslyp);
view.setScaleType(ImageView.ScaleType.FIT_XY);
absoluteLayout.addView(view);      

 此時将一個Imageview動态添加到 一個絕對布局裡面了。根據AbsoluteLayout.LayoutParams 傳入父布局的寬高以及起始坐标點位。将new出的控件動态設定 x y  和寬高就可以。

注意:如果要從新添加一個視訊控件或者什麼控件。還需要重新寫一遍AbsoluteLayout.LayoutParams abslyp 再去給新控件設定寬高。否則設定的寬高是不生效的。

這樣就可以動态添加模闆裡相對應的控件了。