1、自己定義view的屬性
2、在view的構造方法中獲得我們自己定義的屬性
3、重寫onmesure
4、重寫ondraw
3這個步驟不是必須,當然了大部分情況下還是須要重寫的。
1、自己定義view的屬性,首先在res/values/ 下建立乙個attrs.xml , 在裡面定義我們的屬性和宣告我們的整個樣式。
<?xml version="1.0" encoding="utf-8"?>
定義了字型,字型顏色,字型大小3個屬性,format是值該屬性的取值型別:
一共同擁有:string,color,demension,integer,enum,reference,float,boolean,fraction,flag;
編寫的時候工具會提醒你使用哪種,不知道也能夠google搜尋下
接下來就自己定義view
public class customtitleview extends view
public customtitleview(context context, attributeset attrs)
public customtitleview(context context, attributeset attrs, int defstyleattr)
}
定義完自己定義的view ,就該呼叫我們自己定義的view了。
<?xml version="1.0" encoding="utf-8"?>
注意**中的這行,自己定義命名空間,com.example.androiddemo是專案包路徑
xmlns:title=""
使用自己定義命名空間:
title:txtname="你好"
title:txtcolor="#ffffff"
title:txtsize="16sp"
在view的構造方法中,獲得我們的自己定義的樣式
public class customtitleview extends view
public customtitleview(context context, attributeset attrs)
public customtitleview(context context, attributeset attrs, int defstyleattr)
}typedarray.recycle();
/*** 獲得繪製文字的寬和高
*/mpaint = new paint();
mpaint.settextsize(txtsize);
// mpaint.setcolor(mtitletextcolor);
mbounds = new rect();
mpaint.gettextbounds(txtname, 0, txtname.length(), mbounds);
}@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec) else
if (heightmode == measurespec.exactly)
else
setmeasureddimension(width, height);
}@override
protected void ondraw(canvas canvas)
}
當中
measurespec.exactly推斷你傳人的寬,高是不是精確賦值
android:layout_width="wrap_content"
android:layout_height="wrap_content"
假設是wrap_content,
mpaint.settextsize(txtsize);
mpaint.gettextbounds(txtname, 0, txtname.length(), mbounds);
float textwidth = mbounds.width();
int desired = (int) (getpaddingleft() + textwidth + getpaddingright());
width = desired;
假設是200dp這類精確的寬高值,
if (widthmode == measurespec.exactly)
效果圖 ,是不是非常好用呢
Android自己定義控制項面板
對於android的自帶控制項,其外觀僅僅能說中規中矩,而我們平時所示android應用中,乙個簡單的button都做得十分美觀。甚至於很多button在按下時的外觀都有一定變化,使用者體驗十分好。這當中,就涉及到了android自己定義控制項屬性的操作方法,下面操作以實現自己定義button 為例...
Android 如何自己定義控制項的樣式 Shape
android中常常使用shape來定義控制項的一些顯示屬性,今天看了一些shape的使用,對shape有了大體的了解,稍作總結 先看下面的 複製到剪貼簿 xml html shape solid android color ff9d77 gradient android startcolor ff...
Android自己定義圓角ImageView
package com.yulongfei.imageview import android.content.context import android.content.res.typedarray import android.graphics.bitmap import android.gra...