Android圖形系統中形狀Drawable使用詳解打賞

當你想動態畫二維圖形,ShapeDrawable對象是可能是你合適的選擇.使用ShapeDrawable,你可以隨意畫出原始的形狀并且應用到任何風格.

ShapeDrawable是一個Drawable的派生類,所以你可以用于任何想使用Drawable的地方—比如可能是一個View的背景,通過setBackgroundDrawable()所設置.當然,你也可以把你的形狀作為它自己的自定義View繪制,然后以你喜歡的方式添加到你的Layout.因為ShapeDrawable有它自己的draw()方法,你可以創建一個View的子類然后在View.onDraw()的方法中畫這個ShapeDrawable.下面是一個簡單的View派生類,它僅把ShapeDrawable當作一個View繪出:

[java] public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;

public CustomDrawableView(Context context) {
super(context);

int x = 10;
int y = 10;
int width = 300;
int height = 50;

mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}

protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;

public CustomDrawableView(Context context) {
super(context);

int x = 10;
int y = 10;
int width = 300;
int height = 50;

mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}

protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}

在構造函數中,以OvalShape定義了一個ShapeDrawable.然后給它設置了顏色和形狀的邊界.如果你不設置邊界,形狀是不會被畫出的,如果你不設置顏色,將以黑色畫之.
使用自定義View,你可以畫任何東西.在上面的例子中,我們可以在一個Activity中用程序隨意作畫:

[java] CustomDrawableView mCustomDrawableView;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomDrawableView = new CustomDrawableView(this);

setContentView(mCustomDrawableView);
}
CustomDrawableView mCustomDrawableView;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomDrawableView = new CustomDrawableView(this);

setContentView(mCustomDrawableView);
}

如果你想在XMLlayout中畫這個自定義drawable而不是在Activity中,那么這個CustomDrawableView類必須重寫View(Context,AttributeSet)構造方法,此方法在從XML初始化一個View時被調用.然后添加一個CustomDrawable元素到XML,像這樣:

[html] <com.example.shapedrawable.CustomDrawableView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<com.example.shapedrawable.CustomDrawableView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

ShapeDrawable類(就像android.graphics.drawable包中的其它一些Drawable類型)允許你使用公開方法來定義drawable的各種屬性.你要調整的一些屬性可能有alpha透明,顏色過慮,抖動,opacity和color等.

Android圖形系統中形狀Drawable使用詳解
文章《Android圖形系統中形狀Drawable使用詳解》二維碼
  • 微信打賞
  • 支付寶打賞

已有17條評論

  1. 樸人博客

    什么時候你的名字顯示正常了我就告訴你。

    2012-07-23 17:16 回復
  2. 樸人博客

    什么時候你的名字顯示正常了我就告訴你。

    2012-07-23 17:16 回復
  3. 樸人博客

    歡迎常來

    2012-07-23 17:15 回復
  4. 樸人博客

    歡迎常來

    2012-07-23 17:15 回復
  5. 高壓泵博客

    博客很有特色,看了博文很有收獲。我是高壓泵WordPress博客,歡迎來訪、留言留網址,我必尋網址再次回訪!謝謝!

    2012-06-18 08:06 回復
  6. 韓版女裝

    這個不錯啊

    2012-06-17 10:33 回復
  7. 不亦樂乎

    是我瀏覽器出問題了嗎,怎么看起來像你自己在回復一樣,頭像都一個樣

    2012-06-15 16:59 回復
    • 窮小子

      這個貌似是多說的頭像設置的。我昨天無意間設置了自己的頭像,其實是默認頭像。

      2012-06-15 18:44 回復
  8. 游客 895

    已經好幾次過來看你寫的文章,都很不錯。

    2012-06-15 02:03 回復
  9. 1314

    文章分析的相當透徹,有機會多多交流。網絡營銷論壇http://92tui.com/

    2012-06-14 19:13 回復
  10. 游客 87

    樓主,你的主題很不錯,是在哪里找的~

    2012-06-14 12:53 回復
  11. 游客 154

    第一次來支持你。

    2012-06-11 08:17 回復
  12. 游客 23

    非常喜歡博主的文章。。。。歡迎回訪

    2012-06-10 12:18 回復
  13. 游客 512

    樓主辛苦了 寫這么好的文章給大家普及知識,呵呵

    2012-06-10 01:57 回復
  14. http://mongn.info/

    非常喜歡博主的文章。。。。歡迎回訪

    2012-06-09 23:06 回復
  15. 露得清官網

    我來看看了。

    2012-06-09 17:58 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖