目的是使用一桶空水并根据(更改)系统参数填充它。 minimumValue = 0, maximuValue = SYSTEM_PARAMETER
我确实有水桶图像(*.png
带透明胶片),我知道我应该使用canvas/drawables
但是如何在水桶内画水(蓝色)呢?
我可以改变整个背景但是它会填满内部和外部的桶。
答案 0 :(得分:2)
以下是解决方案。
复制/粘贴自定义类。
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.ImageView;
public class DrawView extends ImageView {
Paint mPaint;
int percent = 0;
int toFillHeight;
private RectF box;
public DrawView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
mPaint.setColor(Color.GRAY);
mPaint.setStyle(Paint.Style.FILL);
box = new RectF(0, 0, getWidth(), getHeight());
}
public DrawView(Context context) {
super(context);
}
public int calculateFillArea() {
return percent * 200 / getHeight();
}
public void setPercentage(int percent) {
this.percent = percent;
invalidate();
}
@Override
public void onDraw(Canvas canvas) {
//you can remove these two lines if you don't want background color
mPaint.setColor(Color.GRAY);
canvas.drawRect(new RectF(0, 0, getWidth(), getHeight()), mPaint);
toFillHeight = calculateFillArea();
// Arc
mPaint.setColor(Color.parseColor("#33b5e5"));
box.set(0, getHeight() - toFillHeight, getWidth(), getHeight());
canvas.drawRect(box, mPaint);
}
}
在布局中使用该自定义类,如下所示。
<com.example.rounded.DrawView
android:id="@+id/view1"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/ic_launcher"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
以下是我使用它的方式。
public class MainActivity extends Activity {
DrawView view;
int percentage = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = (DrawView) findViewById(R.id.view1);
Thread t = new Thread() {
public void run() {
while (percentage < 99) {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
view.setPercentage(percentage);
percentage++;
}
});
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
t.start();
}
}
注意强>
这是一个粗略的例子。您需要根据您的要求更改DrawView
。我刚用蓝色填充了那个矩形。
您可以使用setPercentage(int)
的{{1}}方法填充矩形百分比。