-
?。。?!查看全部
-
***用于縮放查看全部
-
***這個(gè)一般用于繪制進(jìn)度條,比如說手機(jī)上的電量進(jìn)度條。 ***maxLevel表示顯示等級(jí),默認(rèn)顯示第一個(gè)查看全部
-
!?。?duì)比前一張查看全部
-
***在layer-list中可以放一些item ***因?yàn)樵趌ayer-list中,是從上面的item開始繪制的,所以最後那個(gè)item定義的顏色就覆蓋在了最外面那一層查看全部
-
!!!查看全部
-
?。?!查看全部
-
?。?!查看全部
-
***可繪制的資源:可能是一個(gè)顏色,也可能是一個(gè)Bitmap圖片,也可以是一個(gè)線條,或者是一個(gè)路徑 ***方框中是Drawable一些基本的類查看全部
-
?。。?查看全部
-
!!!查看全部
-
漣漪效果的實(shí)現(xiàn)方式查看全部
-
3.添加動(dòng)態(tài)更新 (1)如果控件直接設(shè)置背景setBackgroundDrawable() 回調(diào)事件中調(diào)用drawable的touch處理 public void onTouch(MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: mCenterX = event.getX(); mCenterY = event.getY(); mRadius = mRadius + 40; invalidateSelf(); break; } } (2)如果不使用設(shè)置背景drawable,會(huì)比較麻煩 首先看 public void invalidateSelf() { final Callback callback = getCallback(); if (callback != null) { callback.invalidateDrawable(this); } } 這就要設(shè)置一個(gè)callback:mRippleDrawable.setCallback(this); 然后看 callback.invalidateDrawable(),里面的verifyDrawable()和邊界 重寫下面兩個(gè)接口 boolean verifyDrawable(Drawable who) { return who == mDrawable || super.verifyDrawable(who); } void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mDrawable.setBounds(0, 0, getWidth(), getHeight()); } 最后別忘了要設(shè)置ontouch監(jiān)聽查看全部
-
一、在view中實(shí)現(xiàn)一個(gè)簡單的Drawable 1.先創(chuàng)建一個(gè)自定義的drawable,在draw(canvas)中寫一些定制化的東西 (1)在控件中調(diào)用setBackgroundDrawable(drawable) (2)在控件中重寫onDraw(canvas),調(diào)用drawable的draw() 但注意調(diào)用位置,最后調(diào)用的draw()會(huì)出現(xiàn)在最前面。 以上兩種方式均可 二、完善Drawable的基本參數(shù) 1.需要做如下三步: (1)弄清楚Drawable中實(shí)現(xiàn)的方法 (2)添加一些漣漪效果所需的元素到Drawable (3)動(dòng)態(tài)更新Drawable 2.弄清楚接口 (1)最重要的一個(gè)draw()方法,這個(gè)用來繪圖的 可以借助一個(gè)畫筆,繪制想要的任何東西 (2)setAlpha()設(shè)置透明度 注意因?yàn)檫@里是用了畫筆Paint,所以當(dāng)透明度變化時(shí)要為paint重新設(shè)置透明度 if (mAlpha != 255) { int alpha = mPaint.getAlpha(); int realAlpha = (int) (alpha * (mAlpha / 255f)); mPaint.setAlpha(realAlpha); } (3)setColorFilter()濾鏡,主要對(duì)圖片而言 (4)getOpacity()得到透明度屬性 這里就是拿到畫筆paint的透明度屬性,PixelFormat.OPAQUE,PixelFormat.TRANSPARENT,PixelFormat.TRANSLUCENT 2.添加漣漪效果 so easy,直接用畫筆畫一個(gè)圓就行了 public void draw(Canvas canvas) { canvas.drawCircle(mCenterX, mCenterY, mRadius, mPaint); } 3.添加動(dòng)態(tài)更新 思路是按鈕按下時(shí)圓的半徑變大,并且重新繪制圓。 這步操作需要借助drawable的invalidateSelf() (1)如果控件直接設(shè)置背景setBackgroundDrawable(),直接設(shè)置一個(gè)ontouch事件就行了 回調(diào)事件中調(diào)用drawable的touch處理查看全部
-
Drawable介紹 1.A Drawable is a general abstraction for "something that can be drawn." Most often you will deal with Drawable as the type of resource retrieved for drawing things to the screen; the Drawable class provides a generic API for dealing with an underlying visual resource that may take a variety of forms. Unlike a View, a Drawable does not have any facility to receive events or otherwise interact with the user. 最后一句是重點(diǎn) 2.重點(diǎn) (1)layer-list是從上往下繪制,所以最下面的item會(huì)覆蓋前面的 item中可以寫shape等其他的類型 (2)level-list類似于layer-list,也有很多item。level-list可以最多指定10個(gè)等級(jí),默認(rèn)顯示level1,通過代碼設(shè)置顯示哪個(gè)level 像電量的顯示一樣,level1顯示最高電量,依次遞減,當(dāng)電量變化時(shí)通過代碼顯示不同level查看全部
舉報(bào)
0/150
提交
取消