-1

I've looked at a lot of threads on how to change the size of a drawable but none of them seem to work.

Bitmaps throw me a class cast exception and even setting the level of the ScaleDrawable doesn't work.

What's wrong? I'm not looking for an xml solution because I want to change the size in terms of how other items are sized based on how big the screen is.

Thanks.

//set seekbar thumb to height of bar
        Drawable thumb = mSeekBarSpeed.getThumb();
        thumb = new ScaleDrawable(thumb, 0, thumb.getIntrinsicWidth(), mSeekBarSpeed.getHeight());
        thumb.setLevel(10000);
        thumb.setBounds(0, 0, thumb.getIntrinsicWidth(), thumb.getIntrinsicHeight());
//        Bitmap thumbBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.seekbar_thumb);
//        Bitmap scaled = Bitmap.createScaledBitmap(thumbBitmap, thumb.getIntrinsicWidth(), mSeekBarSpeed.getHeight(), true);
////
////        Bitmap thumb = Bitmap.createBitmap(50,50, Bitmap.Config.ARGB_8888);
////        Canvas canvas=new Canvas(thumb);
////        canvas.drawBitmap(bitmap,new Rect(0,0,bitmap.getWidth(),bitmap.getHeight()),
////                new Rect(0,0,thumb.getWidth(),thumb.getHeight()),null);
////        Drawable drawable = new BitmapDrawable(getResources(),thumb);
////        setThumb(drawable);
//
//        //Drawable thumb = mSeekBarSpeed.getThumb();
////        thumb.setBounds(0,0, thumb.getIntrinsicWidth(), mSeekBarSpeed.getHeight());
////        Bitmap orig = ((BitmapDrawable)thumb).getBitmap();
////        Bitmap scaled = Bitmap.createScaledBitmap(orig, thumb.getIntrinsicWidth(), mSeekBarSpeed.getHeight(), true);
//        Drawable newThumb = new BitmapDrawable(getResources(), scaled);
//        newThumb.setBounds(0,0,newThumb.getIntrinsicWidth(),newThumb.getIntrinsicHeight());
        mSeekBarSpeed.setThumb(thumb);
Emily
  • 21
  • 2

1 Answers1

0

Found a way to get it to work using Bitmaps.

    Drawable thumb = mSeekBarSpeed.getThumb(); //get thumb of seekBar

    Bitmap thumbBitmap; //try to find bitmap of thumb
    if(thumb instanceof BitmapDrawable) {
        thumbBitmap  = ((BitmapDrawable)thumb).getBitmap();
    }else{
        Bitmap bitmap = Bitmap.createBitmap(thumb.getIntrinsicWidth(),thumb.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        thumb.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        thumb.draw(canvas);
        thumbBitmap = bitmap;
    }

    //scale the bitmap
    float scale =  (float)1.00 * mSeekBarSpeed.getHeight() / thumb.getIntrinsicHeight();
    Bitmap scaledBitmap = Bitmap.createScaledBitmap(thumbBitmap,
            Math.round(thumb.getIntrinsicWidth() * scale),
            Math.round(thumb.getIntrinsicHeight() * scale), true);

    //make is a drawable
    Drawable newThumb = new BitmapDrawable(getResources(), scaledBitmap);

    //set thumb to new thumb
    mSeekBarSpeed.setThumb(newThumb);

Source: Get All Installed Application icons in Android : java.lang.ClassCastException has some info about the Class Cast Exception for Bitmap.

Emily
  • 21
  • 2