我想在我的鍛鍊應用程序中實現自定義RatingBar。酒吧應該有4顆星,步長爲1.佈局看起來像這樣:自定義Android Ratingbar
<com.example.workouttest.MyBar
android:id="@+id/rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="4"
android:numStars="4"
android:stepSize="1"
android:scaleX="0.6"
android:scaleY="0.6"
android:layout_gravity="right" />
我想用自定義圖像替換默認的星星。但每一個4分應該具有不同的圖像:
星1 =一個「X」,這意味着「這個項目被禁用」
星2 =拇指向下
星3 =一些代表「中性評級」
星4 =讚許
Addtitionally時,例如,該項目被評爲具有3(中性評級),所有其他分(1,2和4)應顯示一個灰色他們的形象的出版版本。
我試圖從的RatingBar延伸並與下面的代碼上來:
public class MyBar extends RatingBar {
private int[] starArrayColor = {
R.drawable.star_1_color,
R.drawable.star_2_color,
R.drawable.star_3_color,
R.drawable.star_4_color
};
private int[] starArrayGrey = {
R.drawable.star_1_grey,
R.drawable.star_2_grey,
R.drawable.star_3_grey,
R.drawable.star_4_grey
};
public MyBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyBar(Context context) {
super(context);
}
@Override
protected synchronized void onDraw(Canvas canvas) {
int stars = getNumStars();
float rating = getRating();
for (int i=0;i<stars;i++) {
Bitmap bitmap;
Resources res = getResources();
Paint paint = new Paint();
if ((int) rating == i) {
bitmap = BitmapFactory.decodeResource(res, starArrayColor[i]);
} else {
bitmap = BitmapFactory.decodeResource(res, starArrayGrey[i]);
}
canvas.drawBitmap(bitmap, 0, 0, paint);
canvas.save();
}
super.onDraw(canvas);
}
}
遺憾的是它沒有工作。它以我的自定義圖像作爲背景畫出正常的星星。
在這裏有人誰知道如何幫助我解決這個問題?
UPDATE
感謝加布我工作的onDraw方法現在看起來是這樣的:
@Override
protected synchronized void onDraw(Canvas canvas) {
int stars = getNumStars();
float rating = getRating();
float x = 0;
for (int i=0;i<stars;i++) {
Bitmap bitmap;
Resources res = getResources();
Paint paint = new Paint();
x += 50;
if ((int) rating-1 == i) {
bitmap = BitmapFactory.decodeResource(res, starArrayColor[i]);
} else {
bitmap = BitmapFactory.decodeResource(res, starArrayGrey[i]);
}
Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 48, 48, true);
canvas.drawBitmap(scaled, x, 0, paint);
canvas.save();
}
}
我們可以做半評估。 – 2016-08-03 10:34:40