我想在自定義視圖中加載具有特定大小的位圖。作爲第一步,我想在400px x 400px的視圖中加載400px x 400px的位圖...但位圖加載的尺寸較小。自定義視圖位圖的大小不正確
我發現一些線程有類似的問題。有人建議使用Options.inScale = false
。我用它,並得到了較好的日誌消息(位圖輸出正確的大小400像素X 400像素),但它仍然呈現小:
(黃色是自定義視圖的背景 - 400像素X 400像素,和紅色是位圖)。
任何建議?下面是代碼:
自定義視圖:
class TestView extends View {
private Bitmap bitmap;
private Paint paint = new Paint();
public TestView(Context context) {
super(context);
}
public TestView(Context context, AttributeSet attr) {
super(context, attr);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.overlay, options).copy(Config.ARGB_8888, true);
Log.d("test6", "width: " + bitmap.getWidth() + " height: " + bitmap.getHeight());
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
>
<com.example.TestView
android:id="@+id/view"
android:layout_width="400px"
android:layout_height="400px"
android:background="#ffff00"
/>
</RelativeLayout>
位圖已經是400像素X 400像素...這就是爲什麼我認爲我沒有使用縮放選項等我只是想在屏幕上顯示它與這個尺寸...
爲什麼在構造函數中創建畫布?你正在繪製位圖到自己?這很奇怪,即使它不是bug,你可以刪除所有這些。 – 2013-03-14 13:31:08
你是對的 - 這是一個更復雜的例子的一部分,我簡化了這篇文章......但部分代碼仍然存在。刪除它。 – Ixx 2013-03-14 13:32:49
你有什麼文件夾中的位圖?非標定位圖應該是'drawable-nodpi'文件夾。否則,即使設置了該位,系統有時也會對其進行調整,無論文檔如何設置。 – DeeV 2013-03-14 14:16:05