Wednesday, October 4, 2017

Quay image như quay đồng xu

Bạn muốn tạo hiệu ứng quay như quay đồng xu cho icon hoặc ảnh.
Hãy khai báo lên trên dòng Override hai dòng sau.
boolean quay;
private ObjectAnimator mFlipper;
Nhập thư viện cần dùng vào, copy các dòng sau xuống dưới dòng findViewByid của imageView.
final Bitmap a = BitmapFactory.decodeResource(getResources(), R.drawable.cuoi);
final Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.cuoi);      
im.setImageBitmap(a);
quay = true;          
mFlipper = ObjectAnimator.ofFloat(im, "rotationX", 0f, 360f);
mFlipper.setDuration(500);
mFlipper.setInterpolator(new LinearInterpolator());
mFlipper.setRepeatCount(Animation.INFINITE);
mFlipper.addUpdateListener(new AnimatorUpdateListener() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
@SuppressLint("NewApi")
@Override
public void onAnimationUpdate(ValueAnimator animation) {
if (animation.getAnimatedFraction() >= 0.25f && quay) {
im.setImageBitmap(b);
quay = false;
}
if (animation.getAnimatedFraction() >= 0.75f && !quay) {
im.setImageBitmap(a);
quay = true;
                     }
                 }
             });
Cuối cùng, nếu muốn ấn nút thì bắt đầu quay, bạn cho lệnh sau vào trong nút bấm nào đó.
mFlipper.start();
Nếu muốn ấn vào icon nó mới quay thì copy đoạn sau lên trên ngoặc đóng cuối cùng của class.
@Override
    public boolean onTouchEvent(MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            mFlipper.start();
            return true;
        }
        return super.onTouchEvent(event);
    }
Nếu muốn chỉ lắc một số lần hữu hạn thì sửa dòng mFlipper.setRepeatCount(Animation.INFINITE);
Nếu muốn icon quay có 2 mặt như đồng xu thì ở đoạn
final Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.cuoi); 
Thay cái ảnh mặt kia vào chỗ R.drawable là được.


No comments:

Post a Comment