سؤال

أرغب في إنشاء مكون سيكون قادرًا على إظهار رقم عدد صحيح بحد أقصى 5 في نمط عدادات السيارات التناظرية القديمة وتحريك تغيير الرقم.

هذا يبدو مثل هذا ربما ...

alt text

لقد حاولت البحث عن هذا النوع من الأمثلة لكنني لم أجد أي شيء حتى الآن.

في رأيك ما هو أفضل طريقة لتحقيق ذلك؟

نظرت إلى منتقي وقت إنذار 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();
    }


}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top