我想构建一个组件,该组件能够以旧模拟汽车计数器的样式显示最多 5 位整数,并为数字变化设置动画。
看起来像这样的东西也许......
我曾尝试搜索此类示例,但到目前为止我找不到任何东西。
在您看来,实现这一目标的最佳方法是什么?
我查看了 iphone 闹钟时间选择器,据我所知,只有一个固定的背景,他们将数字推入或推出视图。但是在这种情况下如何放置数字并将它们引用到特定值?
tnx。
我想构建一个组件,该组件能够以旧模拟汽车计数器的样式显示最多 5 位整数,并为数字变化设置动画。
看起来像这样的东西也许......
我曾尝试搜索此类示例,但到目前为止我找不到任何东西。
在您看来,实现这一目标的最佳方法是什么?
我查看了 iphone 闹钟时间选择器,据我所知,只有一个固定的背景,他们将数字推入或推出视图。但是在这种情况下如何放置数字并将它们引用到特定值?
tnx。
您可以尝试创建自己的视图、扩展视图并覆盖 onDraw()。在这里,您可以在位图中使用数字行,并根据您希望显示的数字编辑它们的位置。不要忘记在设置新数字后调用 invalidate() 来重绘视图。
我将粘贴一个包含项目开始的示例。位图编号是一个垂直图像,其编号为 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();
}
}