Android, помогите повернуть изображение при касании

Я пытаюсь повернуть один из прозрачных PNG на этом изображении. Часть числа - это то, что я хочу повернуть. Я могу это сделать, но это не то, чего я пытаюсь достичь

Я хочу вращать цифры, как на реальном кодовом замке. Таким образом, пользователь будет касаться и двигать пальцем по кругу. Я посмотрел на менее точное вращение изображения при касании/перемещении, и этого оказалось недостаточно.

в настоящее время это мой код

 public boolean onTouch(View v, MotionEvent event) {
    double r=Math.atan2(event.getX()-lockNumbers.getWidth(), lockNumbers.getHeight()-event.getY());
    int rotation=(int)Math.toDegrees(r);
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            break;
        case MotionEvent.ACTION_MOVE:
            x=event.getX();
            y=event.getY();
            updateRotation(rotation);
            break;
        case MotionEvent.ACTION_UP:
            break;
    }//switch       

    return true;

}//onTouch
private void updateRotation(double rot){
    float newRot=new Float(rot);
    Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.numbers);
    Matrix matrix=new Matrix();
    matrix.postRotate(newRot,bitmap.getWidth(),bitmap.getHeight());
    if(y>250){
        Bitmap reDrawnBitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
        lockNumbers.setImageBitmap(reDrawnBitmap);
    }
    else{
        Bitmap reDrawnBitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
        lockNumbers.setImageBitmap(reDrawnBitmap);
    }
}

он также изменяет размер растрового изображения, когда вы касаетесь его, из-за параметра матрицы. Это не желаемый эффект.

Пользователю в значительной степени потребуется водить пальцем по кругу.

6
задан Glorfindel 22 August 2019 в 01:17
поделиться