2017-07-18 5 views
-1

Ich habe viele Threads untersucht, wie man die Größe eines Zeichens ändern kann, aber keiner von ihnen scheint zu funktionieren.ScaleDrawable scheint nicht zu funktionieren

Bitmaps werfen mir eine Klassenübergabe-Ausnahme und sogar die Einstellung der Ebene der ScaleDrawable funktioniert nicht.

Was ist los? Ich bin nicht auf der Suche nach einer XML-Lösung, weil ich die Größe in Bezug auf die Größe anderer Elemente je nach Größe des Bildschirms ändern möchte.

Danke.

//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); 

Antwort

0

Einen Weg gefunden, um es mit Bitmaps zu arbeiten.

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); 

Quelle: Get All Installed Application icons in Android : java.lang.ClassCastException hat einige Informationen über die Klasse Guss Ausnahme für Bitmap.

Verwandte Themen