Wednesday, October 4, 2017

Quay tròn image trong Canvas

Trong canvas, ta có một bitmap icon.
Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.abc);
Giả sử ta muốn nó quay tròn quanh tâm của nó, hãy dùng đoạn code sau.
Matrix ma = new Matrix();
    float angle = (float) (System.currentTimeMillis() % 1000) / 1000 * 360;
ma.reset();
ma.postTranslate(-icon.getWidth() / 2, -icon.getHeight() / 2);
ma.postRotate(angle);
ma.postTranslate(200, 200);                    
canvas.drawBitmap(icon, ma, null);
Chú ý canvas đã có lệnh invalidate(), nếu chưa có bạn thêm vào. Dòng postTranslate(200, 200); là vị trí của icon.
Muốn nó quay tròn quanh một bán kính nào đó, bạn sửa dòng thứ tư thành
ma.postTranslate(-icon.getWidth()/2, 100);

Đường kính quay sẽ là 100dp.

No comments:

Post a Comment