题
我想建立,将能够显示一个整数最多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();
}
}
不隶属于 StackOverflow