android 自定義命名空間

2021-09-06 23:10:39 字數 3116 閱讀 5685

一、統一的使用者介面是可以使得應用程式更友好。要做到使用者介面的統一,我們就必須用到風格(style)和主題(theme)。

自定義乙個view的方法步驟如下:

1、首先,在values資料夾下定義乙個atts.xml的檔案,描述自定義的控制項的屬性

在values/attrs.xml中:

view plaincopy to clipboardprint?

<?xml version="1.0" encoding="utf-8"?>  

<?xml version="1.0" encoding="utf-8"?>

2、其次,定義乙個繼承自view的類,如:testview,使其實現view的方法

view plaincopy to clipboardprint?

package com.test.testview;   

import android.content.context;   

import android.content.res.typedarray;   

import android.graphics.canvas;   

import android.graphics.color;   

import android.graphics.paint;   

import android.util.attributeset;   

import android.view.view;   

public class testview extends view    

@override  

protected void ondraw(canvas canvas)    

}   

private void initmyview()    

private void settextcolor(int textcolor)    

private void settextsize(float textsize)    

void settext(string text)    

private void setpaddings(float paddingleft, float paddingtop)    

}  package com.test.testview;

import android.content.context;

import android.content.res.typedarray;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.paint;

import android.util.attributeset;

import android.view.view;

以下內容**:

對於android系統的自定義view可能大家都熟悉了,對於自定義view的屬性新增,以及android的layout的命名空間問題,很多網友還不是很清楚,今天android123一起再帶大家溫習一下

view plaincopy to clipboardprint?

cwjview myview=new cwjview(context);  

cwjview myview=new cwjview(context);     

如果用於遊戲或整個窗體的介面,我們可能直接在oncreate中setcontentview(myview); 當然如果是控制項,我們可能會需要從layout的xml中宣告,比如

view plaincopy to clipboardprint?

當然,我們也可以直接從父類宣告比如

view plaincopy to clipboardprint?

上面我們僅用了父類view的兩個屬性,均來自android命名空間,而名稱為layout_width或layout_height,我們自定義的控制項可能有更多的功能,比如

view plaincopy to clipboardprint?

我們可以看到上面的三個屬性,是我們自定義的。作為標準xml規範,可能還包含了類似 xmlns:android=""  這樣的語句,對於定義完整的view,我們的命名空間為cwj,這裡可以寫為 

xmlns:cwj= 或       

xmlns:cwj= 都可以。

對於定義的cwj命名空間和age、university以及city的三個屬性我們如何定義呢? 在工程的res/values目錄中我們新建乙個cwj_attr.xml檔案,編碼方式為utf-8是乙個好習慣,內容如下

view plaincopy to clipboardprint?

<?xml version="1.0" encoding="utf-8" ?>  

<?xml version="1.0" encoding="utf-8" ?>

這裡我們可能對format不是很熟悉,目前android系統內建的格式型別有integer比如progressbar的進度值,float比如 ratingbar的值可能是3.5顆星,boolean比如togglebutton的是否勾選,string比如textview的text屬性,當 然除了我們常見的基礎型別外,android的屬性還有特殊的比如color是用於顏色屬性的,可以識別為#ff0000等型別,當然還有 dimension的尺寸型別,比如23dip,15px,18sp的長度單位,還有一種特殊的為reference,一般用於引用@+id/cwj @drawable/***這樣的型別。

當然什麼時候用reference呢? 我們就以定義乙個顏色為例子:

這裡我們用了邏輯或的運算子,定義的紅色是顏色型別的,同時可以被引用。當然,對於我們自定義的類中,我們需要使用乙個名為 obtainstyledattributes的方法來獲取我們的定義。在我們自定義view的構造方法(context context, attributeset attrs)的過載型別中可以用

view plaincopy to clipboardprint?

public cwjview(context context, attributeset attrs)   

public cwjview(context context, attributeset attrs)

以上兩種方法中,引數的最後乙個數值為預設的

Android 命名空間和自定義屬性

在布局檔案中經常看到 我們可以定義自己的命名空間來使用自定義屬性 步驟 1 申明命名空間 xmlns zsg 這裡注意下 在eclipse中如果要使用你自定義的屬性 是不能用res auto的 必須得替換成你自定義view所屬的包 xmlns myxmlns 你的應用程式的包名 如果你在恰好使用的自...

Android命名規範 自定義

此規範參考自android原始碼,並加以改進,僅供個人使用,如果你覺得還有可取之處,可以參考下,以後有好的規則,再補充 總體規範 類名要清晰,能反映出這個類的作用,最好能達到見名知義的效果 方法名要使用動賓短語 eg public boolean movetasktoback boolean non...

spring引入自定義命名空間

需要的寫的 檔案 目的就是解析到並且列印 helloworld 在控制台 只是為了新增自定義命名空間到spring,沒做複雜的行為。結果 主要原始碼 在解析自定義命名空間 beandefinitionparserdelegate是beanfactory的裝飾物件 進最近這張圖的第二個斷點的 reso...