如何使画布闪烁并且不变以自动旋转?

时间:2012-03-30 16:47:01

标签: android

我正在尝试为Android制作自定义地图应用程序。我将地图作为图像,我想将用户的位置显示为闪烁的矩形。这是我到目前为止编写的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ImageView resultImageHolder = (ImageView) findViewById(R.id.test_image);
    layout = (FrameLayout) findViewById(R.id.frame_layout);
    draw();

 }

    private void draw() {
    int width = 200;
    int height = 200;

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);
    bitmap.eraseColor(Color.TRANSPARENT);

    Paint paint = new Paint();
    paint.setColor(Color.BLUE);

    Canvas canvas = new Canvas(bitmap);

    canvas.drawRect(19, 11, 30, 19, paint);
    ImageView imageView = new ImageView(this);

    imageView.setImageBitmap(bitmap);

    layout.addView(imageView);

}

现在我需要使画布闪烁,并且即使屏幕自动旋转,也要使画布保持在正确的位置。我怎样才能实现这两个目标?

2 个答案:

答案 0 :(得分:1)

要处理轮换,您需要使用getRotation()方法定义应用的行为,该方法会返回一个像ROTATION_90 ROTATION_270 ROTATION_180这样的轮换标记 而对于眨眼,我认为你必须使用或动画或更改画布的alpha,例如:
yourCanvas.drawARGB(alpha, r, g, b);但在这种情况下,您必须在应用工作期间始终更改Alpha。

答案 1 :(得分:1)

对于轮换,您可以通过将android:screenOrientation="portrait"放入清单的“活动”部分来禁用它。 对于眨眼,您可以使用这样的计时器:

Long timer = System.currentTimeMillis();

draw()
{
----
if(System.currentTimeMillis()>timer+100)
{
timer=System.currentTimeMillis();
    canvas.drawRect(19, 11, 30, 19, paint);
}

您可以将100更改为您认为合适的内容。你遇到的另一个问题是你向我们展示的只画了一次。