سؤال
أرغب في إنشاء مكون سيكون قادرًا على إظهار رقم عدد صحيح بحد أقصى 5 في نمط عدادات السيارات التناظرية القديمة وتحريك تغيير الرقم.
هذا يبدو مثل هذا ربما ...
لقد حاولت البحث عن هذا النوع من الأمثلة لكنني لم أجد أي شيء حتى الآن.
في رأيك ما هو أفضل طريقة لتحقيق ذلك؟
نظرت إلى منتقي وقت إنذار iPhone وبقدر ما أستطيع أن أقول أنه لا توجد سوى خلفية ثابتة ويدفعون الأرقام داخل أو خارج العرض. ولكن كيف يمكنني وضع الأرقام في هذه الحالة والرجوع إليها بقيمة معينة؟
TNX.
المحلول
يمكنك محاولة إنشاء عرض خاص بك ، وتوسيع العرض والتجاوز OnDraw (). هنا يمكنك استخدام صفوف من الأرقام في نقار النقط وتحرير موقعها بناءً على الرقم الذي ترغب في عرضه. لا تنسى الاتصال ببطل () بعد تعيين أرقام جديدة لإعادة رسم العرض.
سوف ألصق مثالاً يحتوي على بداية لمشروعك. رقم الصورة النقطية هو صورة رأسية بأرقام من 1-9 (و 0 &.)
السابق.
class TickerView extends View { ..
public void setDouble(double d) {
value = d;
invalidate();
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int startx = 0;
int starty = 0;
DecimalFormat df = new DecimalFormat("#0.00");
String str = df.format(value);
String original = Double.toString(value);
Bitmap nums = BitmapFactory.decodeResource(context.getResources(),
R.drawable.numbers);
for (int i = 0; i < str.length(); i++) {
int num = 0;
try {
num = Integer.parseInt(str.charAt(i) + "");
} catch (Exception e) {
num = 10;
}
int numbefore = 0;
try {
numbefore = Integer.parseInt(original.charAt(i -1) + "");
} catch (Exception e) {
numbefore = 0;
}
canvas.drawBitmap(nums, startx + (i * 40), (starty + 40)
- (num * 50) + (numbefore), paintY);
}
paintY.setStrokeWidth(10);
canvas.drawLine(startx, starty+36, startx + (str.length() * 40), starty+36,
paintY);
canvas.drawLine(startx, starty + 90, startx + (str.length() * 40),
starty + 90, paintY);
invalidate();
}
}