當前位置:首頁 » 安卓系統 » androidinclude

androidinclude

發布時間: 2025-08-15 09:45:59

⑴ [Android] DataBinding 布局裡include的databinding刷新不生效

xml布局中,通過include嵌入其他綁定ViewModel的databinding布局,如:

通過刷新headerVM中的ObservableField的方式刷新布局,發現更新未生效。

普通的控制項,通過綁定ViewModel的ObservableField的方式,可以實時刷新,如:

更新數據後,重新綁定include的布局和ViewModel並執行databinding的executePendingBindings()方法。

⑵ 為什麼android.mk不走include$(build_prebuilt)

一、LOCAL_CFLAGS

LOCAL_CFLAGS-D,增加全局宏定義。
LOCAL_CFLAGS := -DUSE_JSC相當於在所有源文件中增加一個#define USE_JSC
LOCAL_CFLAGS := -DUSE_COPY_BIT=1相當於在所有源文件中增加一個#define USE_COPY_BIT 1
還有其它的像-W等,都是傳遞給編譯使用的。

比如:LOCAL_CFLAGS := Werror 就是傳給編譯使用

二、BUILD_PREBUILT

這種方式把文件當成編譯項目,在Android.mk中一個file

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS) \
LOCAL_MODULE := usb_modeswitch.conf \
LOCAL_MODULE_CLASS := ETC \
LOCAL_MODULE_PATH := $(TARGET_OUT)/etc \
LOCAL_SRC_FILES :=$(LOCAL_MODULE) \
include $(BUILD_PREBUILT)

上面的就是 usb_modeswitch.conf 文件到 OUT 下面的 etc目錄,這個目錄常用來存放配置相關文件。
上面所有的都說的是Copy File 但是如果需要 Copy 一個文件目錄下所有就需要另做操作了!

三、ACP

ACP描述的是一個Android專用的cp命令,在生成system.img鏡像文件的過程中是需要用到的。普通的cp命令在不同的平台(Mac OS X、MinGW/Cygwin和Linux)的實現略有差異,並且可能會導致一些問題,於是Android編譯系統就重寫了自己的cp命令,使得它在不同平台下執行具有統一的行為,並且解決普通cp命令可能會出現的問題。例如,在Linux平台上,當我們把一個文件從NFS文件系統拷貝到本地文件系統時,普通的cp命令總是會認為在NFS文件系統上的文件比在本地文件系統上的文件要新,因為前者的時間戳精度是微秒,而後者的時間戳精度不是微秒。Android專用的cp命令源碼可以參考build/tools/acp目錄。

⑶ android 除了include還有其他復用布局的方法么

盡管Android通過內置了各種各樣的控制項提供了微小、可復用的交互性元素,也許你需要復用較大的
組件 ---- 某些特定布局文件 。為了更有效率復用的布局文件,你可以使用<include />以及<merge />
標簽將其他的布局文件加入到當前的布局文件中。

復用布局文件是一種特別強大的方法,它允許你創建可復用性的布局文件。例如,一個包含「Yse」or「No」的
Button面版,或者是帶有文字說明的 Progressbar。復用布局文件同樣意味著你應用程序里的任何元素都能從
繁雜的布局文件提取出來進行單獨管理,接著你需要做的只是加入這些獨立的布局文件(因為他們都是可復用地)。
因此,當你通過自定義View創建獨立的UI組件時,你可以復用布局文件讓事情變得更簡單。

1、創建一個可復用性的布局文件

如果你已經知道復用布局的」面貌」,那麼創建、定義布局文件( 命名以」.xml」為後綴)。例如,這里是一個來自
G- Kenya codelab 的布局文件,定義了在每個Activity中都要使用的一個自定義標題 (titlebar.xml):由於這些
可復用性布局被添加至其他布局文件中,因此,它的每個根視圖(root View)最好是精確(exactly)的。

[java] view plainprint?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=」match_parent」
android:layout_height="wrap_content"
android:background="@color/titlebar_bg">

<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gafricalogo" />
</FrameLayout>

2、使用<include />標簽

在需要添加這些布局的地方,使用<include />標簽 。 例如,下面是一個來自G-Kenya codelab的布局文件,
它復用了上面列出的「title bar」文件, 該布局文件如下:

[java] view plainprint?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=」match_parent」
android:layout_height=」match_parent」
android:background="@color/app_bg"
android:gravity="center_horizontal">

<include layout="@layout/titlebar"/>

<TextView android:layout_width=」match_parent」
android:layout_height="wrap_content"
android:text="@string/hello"
android:padding="10dp" />

...

</LinearLayout>

你也可以在<include />節點中為被添加的布局文件的root View定義特別標識,重寫所有layout參數即可(任何
以「android:layout_」為前綴的屬性)。例如:

[java] view plainprint?
<include android:id=」@+id/news_title」
android:layout_width=」match_parent」
android:layout_height=」match_parent」
layout=」@layout/title」/>

3、使用<merge />標簽

當在布局文件中復用另外的布局時, <merge />標簽能夠在布局層次消除多餘的視圖元素。例如,如果你的
主布局文件是一個垂直地包含兩個View的LinearLayout,該布局能夠復用在其他布局中,而對任意包含兩個View的
布局文件都需要一個root View(否則, 編譯器會提示錯誤)。然而,在該可復用性布局中添加一個LinearLayout
作為root View,將會導致一個垂直的LinearLayout包含另外的垂直LinearLayout。內嵌地LinearLayout只能減緩
UI效率,其他毫無用處可言。
該復用性布局利用.xml呈現如下:

[java] view plainprint?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=」match_parent」
android:layout_height=」match_parent」
android:background="@color/app_bg"
android:gravity="horizontal">

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/delete"/>
</LinearLayout>

為了避免冗餘的布局元素,你可以使用<merge />作為復用性布局文件地root View 。例如:
使用<merge />標簽的布局文件:

[java] view plainprint?
<merge xmlns:android="http://schemas.android.com/apk/res/android">

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/delete"/>

</merge>

現在,當你添加該布局文件時(使用<include />標簽),系統忽略< merge />節點並且直接添加兩個Button去
取代<include />節點。

⑷ Android布局優化的幾種方式

1. include/merge

布局優化中常常用到include/merge標簽,include的含義類似C代碼中的include,意思是直接把指定布局片段包含進當前的布局文件。include適用於多個布局文件中存在相同的xml片段,比如說相同的標題欄、相同的廣告欄、相同的進度欄等等。

2. ViewStub

在一個頁面上根據不同條件展示不同的控制項,我們常常會設置控制項的可視屬性,比如調用指定控制項的setVisibility方法,若需展示則設置View.VISIBLE,若需隱藏則設置View.GONE。不過gone的控制項只是看不到罷了,實際UI渲染時還是會被載入。要想事先不載入,在條件符合時才載入,就得用到標簽ViewStub。

3. style樣式

樣式在res/values/styles.xml中定義,它適用於下面幾種情況:
1、布局文件中存在多個具有相同風格的控制項,比如說統一的文本框TextView,都是白底黑字、中號字體、居中顯示,這時我們便可在styles.xml定義一種文本樣式,然後在各文本框處聲明它的style屬性。好處一個是減少了布局文件的大小,另一個是方便以後統一修改風格。

2、某些控制項在代碼中聲明時需要手工指定style,例如自定義對話框需要在構造函數中指定樣式;另一個例子是彈窗PopupWindow在設置伸縮動畫方法setAnimationStyle時需要指定動畫樣式。
3、定義頁面的主題風格,然後應用到Activity頁面。代碼中設置主題可通過「setTheme(R.style.)」完成,布局中設置可在AndroidManifest.xml的activity節點下添加theme屬性,如「android:theme=」@style/「」。

4. Theme主題

主題是一種特殊的樣式,主題專用於頁面,而樣式一般運用於控制項。主題定義一般放在themes.xml,樣式定義一般放在styles.xml。
Android定義了一些系統主題,完整定義的參見sdk自帶的themes.xml,常用的幾種說明如下:
Theme.NoTitleBar : 不顯示標題欄,即隱藏ActionBar
Theme.Light : 白色背景
Theme.Holo : 淺灰背景
Theme.Black : 黑色背景
Theme.Wallpaper : 壁紙
Theme.Translucent : 透明背景
Theme.Dialog : 對話框
Theme.Panel : 平板
Theme.InputMethod : 輸入法
Theme.SearchBar : 搜索框

熱點內容
微信視頻哪個文件夾 發布:2025-08-15 11:48:01 瀏覽:547
編譯java的jdk工具是什麼 發布:2025-08-15 11:47:12 瀏覽:332
北京工控電腦伺服器雲伺服器 發布:2025-08-15 11:46:30 瀏覽:327
編程犯法 發布:2025-08-15 11:44:26 瀏覽:335
福州幼兒編程 發布:2025-08-15 11:36:52 瀏覽:225
手機百度怎麼緩存網頁視頻怎麼下載視頻 發布:2025-08-15 11:36:13 瀏覽:878
編譯宏定義 發布:2025-08-15 11:36:13 瀏覽:600
伺服器如何看硬碟多少g 發布:2025-08-15 11:27:48 瀏覽:690
我的世界什麼地方可以發布伺服器 發布:2025-08-15 11:14:53 瀏覽:530
伺服器開通網站是什麼 發布:2025-08-15 11:14:49 瀏覽:702