編輯:關於Android編程
最近的項目,有個需求需要使用條狀圖顯示比例,並且右對齊,見下圖:
我想到了使用進度條,這樣不就不需要在代碼動態繪制條狀了,省了很多活。
那麼進度條怎樣從右向左顯示呢?
方案一:
將ProgressBar的前背景反著用,將前景色設置為和整個大背景同一色,將背景設置為你要的條狀圖顏色,這樣就看不出實際的進度,看到的是進度背景,在視覺上看上去就是右對齊了。實際上還是原來那個進度條。
缺點:我這個進度條是放在ListView的item中的,點擊listview,因為listview有選中的背景顯示出來,這樣ProgressBar的前景色就原形畢露了。
方案二:
重寫ProgressBar的onDraw函數,通過旋轉畫布(Canvas)180度,達到自右至左的進度效果。這個方案理論上可行,網上有人旋轉了90度,是可以的,參考地址:
http://www.xprogrammer.com/234.html
http://www.verydemo.com/demo_c131_i3507.html
關鍵代碼:
@Override protected synchronized void onDraw(Canvas canvas) { switch (curr_mode) { case MODE_BOTTOM: canvas.rotate(-90); canvas.translate(-canvas.getHeight(), 0); super.onDraw(canvas); break; case MODE_TOP: canvas.rotate(90,canvas.getWidth(),0); canvas.translate(10,0); super.onDraw(canvas); break; }
此方案缺點:需要計算旋轉中心點,比較復雜,由於對canvas旋轉不熟,我最終沒能旋轉180度成功,哪位大神搞定了告訴我一聲,共同學習
方案三:
此方案是最優方案,簡單高效!利用Drawable本身的屬性,反向繪制進度條。這裡將backgroud注釋掉,不顯示backgroud,然後對前景色加上兩個關鍵屬性:android:clipOrientation=horizontal,android:gravity=right,這樣就能做到從右到左畫進度條。
android:clipOrientation=[horizontal | vertical] android:gravity=[top | bottom | left | right | center_vertical | fill_vertical | center_horizontal | fill_horizontal | center | fill | clip_vertical | clip_horizontal] />
把對象放到容器的右邊,不改變它的尺寸。當clipOrientation被設置為horizontal時,會在可繪制資源的左邊進行裁剪。
公司項目需要做推送,我們選擇用小米推送,經過一段時間的摸索,終於可以簡單的使用小米推送了。1.創建賬號登入後 登入後選擇消息推送:2.進入後創建項目,按照步驟創建完後如下
Android實戰打飛機游戲子彈生成,新建子彈類public class Bullet { // 子彈圖片資源 public Bitmap bmpBullet; // 子
項目結構如下圖所示,使用不同sdk版本建立的項目項目結構有所不同,總體相同,高版本增加了一些包結構 1、src 和java項目一樣src存放項目源代碼 2、ge
字體管家是手機安卓手機上面的一個更改手機字體的軟體,應該算是手機美化類別的。字體管家在手機在線字體的收集方面還算是比較全面的,雖不能算是百變字體,但分類足以