日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈- declare-styleable属性

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈- declare-styleable属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Android開發中,往往要用到自定義的控件來實現我們的需求或效果。在使用自定義?
控件時,難免要用到自定義屬性,那怎么使用自定義屬性呢?

一、簡單使用:

?

1.在文件res/values/下新建attrs.xml屬性文件,中定義我們所需要的屬性: <resources><!-- resource是跟標簽,可以在里面定義若干個declare-styleable --> <declare-styleable name="custom_view"><!-- name定義了變量的名稱 --><attr name="custom_color" format="color"></attr> <!-- 定義對應的屬性,name定義了屬性的名稱 --><attr name="custom_size" format="dimension"></attr> <!--每一個發生要定義format指定其類型,類型包括 reference 表示引用,參考某一資源IDstring 表示字符串color 表示顏色值dimension 表示尺寸值boolean 表示布爾值integer 表示整型值float 表示浮點值fraction 表示百分數enum 表示枚舉值flag 表示位運算--> </declare-styleable> ?

2.在布局中使用:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:ldm="http://schemas.android.com/apk/res/com.ldm.learn"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#f6f6f6"android:orientation="vertical"android:padding="10dp" ><com.ldm.learn.CustomTextViewandroid:layout_width="100dp"android:layout_height="100dp"android:text="自定義TextView"ldm:custom_color="#333333"ldm:custom_size="35sp" /></LinearLayout>
2.在代碼中引用: public class CustomTextView extends TextView { private int textSize;//自定義文件大小

? ? ?private int textColor;//自定義文字顏色

? ? //自定義屬性,會調用帶兩個參數的構造方法
? ? public CustomTextView(Context context, AttributeSet attrs) {
? ? ? ? ? ?super(context, attrs);
? ? ? ? ? ?TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.custom_view);//TypedArray屬性對象
? ? ? ? ? ? textSize = ta.getDimensionPixelSize(R.styleable.custom_view_custom_size, 20);//獲取屬性對象中對應的屬性值
? ? ? ? ? ?textColor = ta.getColor(R.styleable.custom_view_custom_color, 0x0000ff);
? ? ? ? ? ?setColorAndSize(textColor, textSize);//設置屬性
? ? ? ? ? ?ta.recycle();
}

? ?public CustomTextView(Context context){

? ? ? ? ? ?super(context);

}

? ?private void setColorAndSize(int textColor, int textSize){

? ? ? ? ? ?setTextColor(textColor);

? ? ? ? ? setTextSize(textSize);

}

?

}

?

?

?

二、declare-styleable屬性詳解:

?

1. reference:參考某一資源ID。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "background" format = "reference" />

??????????? </declare-styleable>

??? (2)屬性使用:

???????????? <ImageView

???????????????????? android:layout_width = "42dip"
???????????????????? android:layout_height = "42dip"
???????????????????? android:background = "@drawable/圖片ID"

???????????????????? />

2. color:顏色值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "textColor" format = "color" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <TextView

???????????????????? android:layout_width = "42dip"
???????????????????? android:layout_height = "42dip"
???????????????????? android:textColor = "#00FF00"

???????????????????? />

3. boolean:布爾值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "focusable" format = "boolean" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <Button

??????????????????? android:layout_width = "42dip"
??????????????????? android:layout_height = "42dip"

??????????????????? android:focusable = "true"

??????????????????? />

4. dimension:尺寸值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "layout_width" format = "dimension" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <Button

??????????????????? android:layout_width = "42dip"
??????????????????? android:layout_height = "42dip"

??????????????????? />

5. float:浮點值。

??? (1)屬性定義:

??????????? <declare-styleable name = "AlphaAnimation">

?????????????????? <attr name = "fromAlpha" format = "float" />
?????????????????? <attr name = "toAlpha" format = "float" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <alpha
?????????????????? android:fromAlpha = "1.0"
?????????????????? android:toAlpha = "0.7"

?????????????????? />

6. integer:整型值。

??? (1)屬性定義:

??????????? <declare-styleable name = "AnimatedRotateDrawable">

?????????????????? <attr name = "visible" />
?????????????????? <attr name = "frameDuration" format="integer" />
?????????????????? <attr name = "framesCount" format="integer" />
?????????????????? <attr name = "pivotX" />
?????????????????? <attr name = "pivotY" />
?????????????????? <attr name = "drawable" />

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <animated-rotate

?????????????????? xmlns:android = "http://schemas.android.com/apk/res/android"?
?????????????????? android:drawable = "@drawable/圖片ID"?
?????????????????? android:pivotX = "50%"?
?????????????????? android:pivotY = "50%"?
?????????????????? android:framesCount = "12"?
?????????????????? android:frameDuration = "100"

?????????????????? />

7. string:字符串。

??? (1)屬性定義:

??????????? <declare-styleable name = "MapView">
?????????????????? <attr name = "apiKey" format = "string" />
??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <com.google.android.maps.MapView
??????????????????? android:layout_width = "fill_parent"
??????????????????? android:layout_height = "fill_parent"
??????????????????? android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"

??????????????????? />

8. fraction:百分數。

??? (1)屬性定義:

??????????? <declare-styleable name="RotateDrawable">
?????????????????? <attr name = "visible" />
?????????????????? <attr name = "fromDegrees" format = "float" />
?????????????????? <attr name = "toDegrees" format = "float" />
?????????????????? <attr name = "pivotX" format = "fraction" />
?????????????????? <attr name = "pivotY" format = "fraction" />
?????????????????? <attr name = "drawable" />
??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <rotate

?????????????????? xmlns:android = "http://schemas.android.com/apk/res/android"
  ???????????? android:interpolator = "@anim/動畫ID"

?????????????????? android:fromDegrees = "0"
  ???????????? android:toDegrees = "360"

?????????????????? android:pivotX = "200%"

?????????????????? android:pivotY = "300%"
  ???????????? android:duration = "5000"

?????????????????? android:repeatMode = "restart"

?????????????????? android:repeatCount = "infinite"

?????????????????? />

9. enum:枚舉值。

??? (1)屬性定義:

??????????? <declare-styleable name="名稱">
?????????????????? <attr name="orientation">
????????????????????????? <enum name="horizontal" value="0" />
????????????????????????? <enum name="vertical" value="1" />
?????????????????? </attr>????????? ?

??????????? </declare-styleable>

??? (2)屬性使用:

??????????? <LinearLayout

??????????????????? xmlns:android = "http://schemas.android.com/apk/res/android"
??????????????????? android:orientation = "vertical"
??????????????????? android:layout_width = "fill_parent"
??????????????????? android:layout_height = "fill_parent"
??????????????????? >
??????????? </LinearLayout>

10. flag:位或運算。

???? (1)屬性定義:

???????????? <declare-styleable name="名稱">
??????????????????? <attr name="windowSoftInputMode">
??????????????????????????? <flag name = "stateUnspecified" value = "0" />
??????????????????????????? <flag name = "stateUnchanged" value = "1" />
??????????????????????????? <flag name = "stateHidden" value = "2" />
??????????????????????????? <flag name = "stateAlwaysHidden" value = "3" />
??????????????????????????? <flag name = "stateVisible" value = "4" />
??????????????????????????? <flag name = "stateAlwaysVisible" value = "5" />
??????????????????????????? <flag name = "adjustUnspecified" value = "0x00" />
??????????????????????????? <flag name = "adjustResize" value = "0x10" />
??????????????????????????? <flag name = "adjustPan" value = "0x20" />
??????????????????????????? <flag name = "adjustNothing" value = "0x30" />
???????????????????? </attr>?????? ?

???????????? </declare-styleable>

???? (2)屬性使用:

??????????? <activity

?????????????????? android:name = ".StyleAndThemeActivity"
?????????????????? android:label = "@string/app_name"
?????????????????? android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">
?????????????????? <intent-filter>
????????????????????????? <action android:name = "android.intent.action.MAIN" />
????????????????????????? <category android:name = "android.intent.category.LAUNCHER" />
?????????????????? </intent-filter>
???????????? </activity>

特別要注意:

???? 屬性定義時可以指定多種類型值。

??? (1)屬性定義:

??????????? <declare-styleable name = "名稱">

?????????????????? <attr name = "background" format = "reference|color" />

??????????? </declare-styleable>

??? (2)屬性使用:

???????????? <ImageView

???????????????????? android:layout_width = "42dip"
???????????????????? android:layout_height = "42dip"
???????????????????? android:background = "@drawable/圖片ID|#00FF00"

???????????????????? />

轉載:http://blog.csdn.net/langxinlen/article/details/50343175

轉載于:https://www.cnblogs.com/zly1022/p/7526198.html

總結

以上是生活随笔為你收集整理的谈谈- declare-styleable属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。