日拱一卒(二十)
4393 ワード
Androidレイアウトの最適化:
(1)できるだけ多くの使用Relativelayout;----------Androidの携帯電話のハードウェアが多いため、Relativelayoutは柔軟で異なるandroidデバイスに適応することができます.
(2)includeタグをできるだけ使用する;----------------------includeは、同じコンポーネントを抽出して、他のレイアウトで服用することができ、後期メンテナンスに有利である.
(3)mergeを使用してレイアウトのネストを減らす----------mergeには2つの使用方法がある.
①xmlファイルのルートレイアウトはFrameLayoutです.たとえば、activityのレイアウトmain.xmlルートノードの親ノードがFrameLayoutであり、main.xmlのルートノードもFrameLayoutと言う場合、Framelayoutの代わりにmergeを使用してFramelayoutを1回減らすことができます.
②includeラベルで共通レイアウトをインポートする場合、親レイアウトと子レイアウトルートノードが同じタイプである場合.
まずincludeのレイアウトcommonを見てみましょう.navi_right.xml:
しゅ
レイアウト:
common_navitationbar.xml
見える
common_navitationbar.xmlのincludeの親ノードとincludeのルートノードはすべてRelativieLayoutで、これはincludeのRelativieLayoutをmergeに書き換えることができて、階層を減らすことができます:
(4)
ラベルを使用して、一般的ではないレイアウトをロードします.
------------------
ViewStubはinflate()メソッドを呼び出したり、visibleを設定したりする前に、レイアウトスペースやシステムリソースを占有しません.≪ロード・インスタンス|Load Instance|emdw≫:ネットワークのタイムアウトを要求するレイアウト.
上記の例ではmsg_Layoutというレイアウトは,コードでinflate()を呼び出さなかったりvisibleを設定しなかったりした場合,空間を占有しない.
原文詳細アドレス
(1)できるだけ多くの使用Relativelayout;----------Androidの携帯電話のハードウェアが多いため、Relativelayoutは柔軟で異なるandroidデバイスに適応することができます.
(2)includeタグをできるだけ使用する;----------------------includeは、同じコンポーネントを抽出して、他のレイアウトで服用することができ、後期メンテナンスに有利である.
(3)mergeを使用してレイアウトのネストを減らす----------mergeには2つの使用方法がある.
①xmlファイルのルートレイアウトはFrameLayoutです.たとえば、activityのレイアウトmain.xmlルートノードの親ノードがFrameLayoutであり、main.xmlのルートノードもFrameLayoutと言う場合、Framelayoutの代わりにmergeを使用してFramelayoutを1回減らすことができます.
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@android:color/darker_gray"
android:layout_height="match_parent" >
<include layout="@layout/common_navitationbar" />
</merge>
②includeラベルで共通レイアウトをインポートする場合、親レイアウトと子レイアウトルートノードが同じタイプである場合.
まずincludeのレイアウトcommonを見てみましょう.navi_right.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Ok"
android:textColor="@android:color/black" />
</RelativeLayout>
しゅ
レイアウト:
common_navitationbar.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:padding="10dip" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Back"
android:textColor="@android:color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Title"
android:textColor="@android:color/black" />
<include layout="@layout/common_center" />
</RelativeLayout>
見える
common_navitationbar.xmlのincludeの親ノードとincludeのルートノードはすべてRelativieLayoutで、これはincludeのRelativieLayoutをmergeに書き換えることができて、階層を減らすことができます:
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Ok"
android:textColor="@android:color/black" />
</merge>
(4)
------------------
ViewStubはinflate()メソッドを呼び出したり、visibleを設定したりする前に、レイアウトスペースやシステムリソースを占有しません.≪ロード・インスタンス|Load Instance|emdw≫:ネットワークのタイムアウトを要求するレイアウト.
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@android:color/darker_gray"
android:layout_height="match_parent" >
<include layout="@layout/common_navitationbar" />
<ViewStub
android:id="@+id/msg_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout="@layout/common_msg" />
</merge>
上記の例ではmsg_Layoutというレイアウトは,コードでinflate()を呼び出さなかったりvisibleを設定しなかったりした場合,空間を占有しない.
原文詳細アドレス