一、統一的使用者介面是可以使得應用程式更友好。要做到使用者介面的統一,我們就必須用到風格(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...