听起来你想要试验2D图形 - 为此,你应该使用一个Canvas.您可以通过该invalidate()方法控制Canvas的绘制,该方法告诉Android重绘整个触发自定义onDraw()方法的内容.您提到不想使用XML文件,但这是放入Canvas的最简单方法 - 您不必在XML文件中定义其内容,只需告诉布局文件即可.将Canvas放入应用程序的一种强大而简单的方法是自定义视图.例如,在XML文件中包含一个<your.package.CustomView android:.../>元素.然后宣布CustomView extends View课程.你想要做的任何类型的绘图,放在onDraw()方法中.
例如,要绘制矩形,请执行以下操作.
//First you define a colour for the outline of your rectangle
rectanglePaint = new Paint();
rectanglePaint.setARGB(255, 255, 0, 0);
rectanglePaint.setStrokeWidth(2);
rectanglePaint.setStyle(Style.STROKE);
//Then create yourself a Rectangle
Rect rectangle = new Rect(left, top, right, bottom) //in pixels
//And here's a sample onDraw()
@Override
public void onDraw(Canvas canvas){
rectangle.offset(2, 2);
canvas.drawRect(rectangle, rectanglePaint);
}
Run Code Online (Sandbox Code Playgroud)
每次从程序中调用invalidate()时,视图将被重绘,矩形向下和向右移动2px.注意:重绘只发生在主线程'等待'的情况下.换句话说,如果您有多次循环调用invalidate,则在循环结束之前实际上不会绘制视图.你可以解决这个问题,但这会增加更多复杂性.有关如何完成的示例,请查看来自Google的LunarLander示例游戏 - 这是一个演示自定义视图,2个线程以及如何实现连续动画的简单游戏.
| 归档时间: |
|
| 查看次数: |
6627 次 |
| 最近记录: |