2011-07-23 70 views
0

我想創建一個類似標籤的界面,我將通過左右滑動切換視圖。我展示給他們的頁面上添加一個藍色輝光這裏所示的標籤圖標的後面的用戶:調整BitmapDrawable或位圖的尺寸


我通過創建將繪製背景自定義視圖這樣做發光(如果選中標籤)然後是圖標。我的問題是,發光太大。我所需要做的就是把它做得更小,這樣雙方就不會像現在這樣被剪裁(輝光與底部的頁面重疊設計)。

  • 發光是使用XML中繪製的形狀創建的(只是一個簡單的徑向漸變)。

  • 我曾嘗試更改XML中形狀的大小,但它總是出來。我嘗試調整下的屬性,並嘗試調整下的高度和寬度。


構造:

public TabIconView(Context context, Bitmap tab) 
{ 
    super(context); 

    back = BitmapFactory.decodeResource(getResources(), R.drawable.background_blue_glow); 
    this.tab = tab; 
} 

onMeasure和的onDraw:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
{ 
    setMeasuredDimension(tab.getWidth() * 2, tab.getHeight() * 2); 
} 

@Override 
protected void onDraw(Canvas canvas) 
{ 
    width = getMeasuredWidth(); 
    height = getMeasuredHeight(); 

    if (selected) 
     canvas.drawBitmap(back, (width - back.getWidth())/2, (height - back.getHeight())/2, null); 

    canvas.drawBitmap(tab, (width - tab.getWidth())/2, (height - tab.getHeight())/2, null); 

    super.onDraw(canvas); 
} 

任何想法將不勝感激。

回答

1

Canvas.drawBitmap()的一個版本允許您指定在屏幕上繪製時想要位圖的寬度和高度。您也可以在加載時簡單地重新縮放位圖(Bitmap類具有創建縮放版本的位圖的方法)。

+0

實際上,我在運行Bitmap.createScaledBitmap()後大約一小時後才運行。完美工作!我稍後會在允許的時候發佈代碼。感謝您的迴應 –

1

找出來了。如果有人想知道...

public TabIconView(Context context, Bitmap tab) 
{ 
    super(context); 
    int backSize = (int) (42 * context.getResources().getDisplayMetrics().density + .5f); 

    b = BitmapFactory.decodeResource(getResources(), R.drawable.background_blue_glow); 
    back = Bitmap.createScaledBitmap(b, backSize, backSize, false); 
    this.tab = tab; 
} 

我不得不創建從從shapedrawable生成的位圖縮放位圖。