onDraw method does not change bitmap position inside canvas

64 Views Asked by At

I would like to change position of bitmap inside Canvas from Activity class. My solution from below only draws first value of x (left) as zero, later on does not change x value. But my Logcat shows that x value changes everytime when I call it from Activity. I would like to know where is my mistake ? onDraw method does not change position of bitmap.

Custome view:

public class TheCustomView extends View {
    Bitmap scaledRollerBottom;
    Bitmap backgroundMask;
    Bitmap rollerBottom;
    Bitmap overlayBitmap;
    float x;


    public TheCustomView(Context context) {
        super(context);

    }
    
    public TheCustomView(Context context, AttributeSet attr) {
        super(context, attr);

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        backgroundMask = BitmapFactory.decodeResource(getResources(), R.drawable.background_new, options);
        rollerBottom = BitmapFactory.decodeResource(getResources(), R.drawable.roller_bottom, options);

        Bitmap scaledBackgroundMask = Bitmap.createScaledBitmap(backgroundMask, 1000, 1000, true);
        scaledRollerBottom = Bitmap.createScaledBitmap(rollerBottom, 120, 31, false);
//        int bitmap1Width = scaledBackgroundMask.getWidth();
//        int bitmap1Height = scaledBackgroundMask.getHeight();
//        overlayBitmap = Bitmap.createBitmap(bitmap1Width, bitmap1Height, scaledBackgroundMask.getConfig());

    }

    @Override
    protected void onDraw(Canvas canvas) {

        Log.v("X  ", "is " + x);
        canvas.drawBitmap(scaledRollerBottom, (float) x, (float) 915, new Paint());

        super.onDraw(canvas);

    }
}

Calling from activity class

            if (callback2 > 0 && callback2 <= 0.1) {
                customView.x = 468;
                customView.draw(canvas);
              //  customView.invalidate();
            } else if (callback2 < 0) {
                customView.x = 650;
                customView.draw(canvas);
               // customView.invalidate();

            } else if (callback2 > 0.1) {
                customView.x = 270;
                customView.draw(canvas);
                //customView.invalidate();

            }
0

There are 0 best solutions below