android:如何绘制一个简单的行并在一个小部件中显示它?

时间:2012-02-15 15:59:28

标签: java android graphics bitmap drawable

我希望通过绘制一些线条来显示小部件的内容。我只想说我每n秒得到两个坐标(x,y)然后想要相应地更新小部件。这个现在工作得很好,但现在我想在这两点之间画一条线。

我搜索了很多东西,但没有解释绘制图像的基本原理。由于我没有图形经验,我想这些东西可以像在LaTeX中用tikzpicture绘制的图形一样工作。

有人可以向我解释这一切是如何运作的 - 或者至少指出一个从一开始就解释这个问题的例子?非常感谢!

谢谢!

2 个答案:

答案 0 :(得分:4)

在Android中,通常都归结为在画布上绘图,例如与方法View.onDraw()中一样。

// prepare picture
if (mBackground != null) {
    mBackground.recycle();
}
mBackground = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas backgroundCanvas = new Canvas(mBackground);
backgroundCanvas.scale(width, height);
RectF rect = new RectF(0f, 0f, 1f, 1f);
Paint paint = new Paint();
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.parseColor("#18a518")); // gray

// draw line
backgroundCanvas.drawLine(startX, startY, stopX, stopY, paint);

的onDraw():

// draw picture on View canvas
@Override
public void onDraw(Canvas canvas) {
    canvas.drawBitmap(mBackground, 0, 0, null);
}

添加

原始链如下: 1创建自己的View类(扩展)。 2在视图中定义onDraw()方法。 3将View放在布局xml文件中(或在运行时添加:Activity.addContentView())。 4如果需要重绘,请致电invalidate(); // forces onDraw() to be called 有关详细信息,请参阅谷歌的Android示例。

然后,如果您想提高效率,请学习SurfaceView。但是在表面上我们也在画布上画画。

答案 1 :(得分:0)

http://www.droidnova.com/playing-with-graphics-in-android-part-i,147.html

可能有助于一个开始。不幸的是,这仍然让我无法理解如何在窗口小部件布局上实际绘制......

...并自己回答:android: how to add a customized image to widgets?