如何使画布闪烁并保持不变以自动旋转



我正在尝试为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);
}

现在,我需要使画布闪烁,并使画布保持在正确的位置,即使屏幕自动旋转。我怎样才能做到这两件事?

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

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

你可以把100改成你认为合适的。你的另一个问题是,你给我们看的画只叫一次。

为了处理轮换,您需要使用getRotation()方法定义应用程序的行为,该方法将向您返回类似ROTATION_90 ROTATION_270 ROTATION_180的轮换标志对于blink,我认为您必须使用或动画或更改画布的alpha,例如:
yourCanvas.drawARGB(alpha, r, g, b);,但在这种情况下,您必须在应用程序工作期间一直更改alpha。

最新更新