我想在執行特定動作時在android中製作垂直進度條。進展應該從第一個圖標開始,並在最終圖標結束後繼續穩步前進。我似乎找不到辦法。android中的垂直進度條
,如果任何機構可以幫助擋在門外一隻腳。我會非常感激。
我想在執行特定動作時在android中製作垂直進度條。進展應該從第一個圖標開始,並在最終圖標結束後繼續穩步前進。我似乎找不到辦法。android中的垂直進度條
,如果任何機構可以幫助擋在門外一隻腳。我會非常感激。
這是一個有點分不清你想這兩個圖像之間嘗試的過渡。所以你想從黑白圖像開始,但是它是否通過交叉漸變從B/W轉變爲了彩色,還是你想慢慢地從底部向黑白部分應用彩色圖像?
如果後者是您的選擇,那麼您的實際圖像將包含<layer-list>
內的兩個可繪圖。一個是靜態的,另一個表示ClipDrawable
,它將基於其級別值顯示彩色圖像的一部分。例如,創建一個XML文件:
RES /繪製/ progress_background.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/ic_launcher_bw"/>
</item>
<item>
<clip
android:clipOrientation="vertical"
android:gravity="bottom"
android:drawable="@drawable/ic_launcher"/>
</item>
</layer-list>
然後設置Drawable
上類似的ImageView
顯示進度,並改變與調用setLevel()
值,即
//This is any view subclass that you have chosen to do this
ImageView progress;
progress.setImageResource(R.drawable.progress_background);
//Adjust the progress by adjusting the drawable's level
progress.setImageLevel(500);
// -- OR --
progress.getDrawable().setLevel(500);
可繪製的級別默認設置爲0到10,000來表示完全剪切以完全顯示。
HTH
的你釘了它,我想要後者的選擇(如他們的網站上的戰神加載屏幕)。我肯定會很多嘗試你的建議 – windwaker 2012-01-11 06:37:30
我正面臨一個問題。在測試活動中,我使用單個imageview並使用上面定義的progress_background.xml。設置setImageResource並將setlevel設置爲靜態6000後,我得到一個空白屏幕。沒有任何圖像的痕跡。現在,如果我從progress_background.xml中刪除靜態「flame_bw」,並只保留一個項目,那麼我能夠看到剪輯後的圖像。不知道爲什麼當使用2個項目時它沒有顯示任何內容:( – windwaker 2012-01-12 18:46:55
我注意到我的XML中有一個小錯誤,它可能會讓你失望。'
你可以使用一個LevelListDrawable和使用setLevel(INT)設定的水平
http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
可以在levellistddrawable添加進度的連續幀,並且不斷遞增的水平。
我能想到的最好的方法是使用原始位圖作爲背景,然後從底部向上繪製完成圖像的一部分。這樣您就不需要大量不同的圖像 - 只需逐步繪製完成的圖像即可。我認爲它可以用的東西就像這樣:
// setup
// assuming firstImage is the initial one and secondImage is the final one
int totalHeight = firstImage.getHeight();
Canvas canvas = new Canvas(firstImage);
ImageView imgView = (ImageView)findViewById(R.id.flame_bar_view);
imgView.setImageBitmap(firstBitmap);
Rect src = new Rect (0, totalHeight,
firstImage.getWidth(), totalHeight);
// then on each update
void updateFlameBar(float percentage) {
int height = (int)(totalHeight * percentage);
src.top = totalHeight - height;
canvas.drawBitmap(secondImage, src, src, null);
}
謝謝,但我想知道它是否會在通知中的進度條上工作 – windwaker 2012-01-11 06:47:38
不,它不會工作,除非你手動連接所有部分。這種方法更DIY。 Devunwired的解決方案更好。 – 2012-01-11 16:38:50
可能重複的[Android的? - 設置一個進度條是一個垂直條的而不是水平(http://stackoverflow.com/questions/3926395/android-set-a-progressbar-to-是一個垂直條而不是水平的) – 2012-01-06 20:30:28
它實際上並不重複。 – 2012-01-06 21:05:04