簡體   English   中英

Android createbitmap寬度在不同設備上表現不同

[英]Android createbitmap width behaves different on different devices

我有一個線性布局(寬度=填充父級,基本上它填充了設備的整個寬度),其中包含2個子布局。 一個帶有width = fill_parent的linearlayout(我們稱其為linear1),第二個是一個帶有width = fill_parent的webview。 默認情況下,WebView的定義為visible = GONE,因此它不會顯示在屏幕上,也不占用任何空間。

<ParentLinear> <Linear1 width=fill_parent></Linear1> <Webview width=fill_parent></Webview> </ParentLinear>

我以編程方式將表面視圖加載到線性布局linear1中,並且Webview保持可見性=消失。 在所有設備上,表面視圖都占據了手機的整個寬度,在那里沒有任何問題。 現在,在某些情況下,我會以編程方式隱藏linear1(可見性=消失),並使用createbitmap創建一個新的位圖/使用畫布進行寫入,將其寫入文件,然后將其加載到webview中並使webview可見。 為了使位圖僅使用設備的整個寬度,而不是更多,更少,我要做的是先找到linear1的寬度,然后再使用getwidth將其隱藏(我得到正確的值,它不是0),然后我將其設置為正在創建的位圖的寬度。

現在創建位圖沒有問題,我將其作為文件寫入設備,然后將其從文件系統加載到webview中,一切正常。 它的行為完全符合我希望它在HTC Inspire(我認為是Andriod 2.3)上的行為,位圖/ Web視圖占據了設備的整個寬度,位圖的大小與linear1的寬度完全相同。 但是,當我在HTC One MIni(android 4.2.2)上進行測試時,位圖的寬度遠大於設備的寬度和linear1的寬度,盡管我最初是使用linear1的寬度創建位圖的。占據設備的整個寬度。 當我在Kindle FIre(kindle fire的第一個版本)上進行測試時,位圖的寬度小於linear1的寬度。 基本上可以在HTC Inspire上正常工作,但在HTC One Mini和KIndle Fire上則有所不同。 我尚未在任何其他設備上進行測試。

只是要清楚一點,我不是在說我知道可以調整的Webview的縮放比例,而我所指的問題是位圖的大小。 這可能與每個設備的分辨率,每個像素的像素大小等有關,但是我無法理解的是,因為我實際上是使用linear1的寬度來設置位圖的寬度的,那為什么不完全是相同。 還有一件事,如果我在位圖上執行getwidth,則返回的數字與linear1相同,但是在屏幕上與之不匹配的位圖顯然更大或更小。 如果您可以給我一些指示,以了解其工作原理,請告訴我。

這是我認為相關的代碼部分。

    int bitmapX =  linear1.getWidth() //this is the value under question
    int bitmapY =  600; // will need to convert from dip to pixel later
    Bitmap myBitMap = Bitmap.createBitmap(bitmapX, bitmapY, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(myBitMap);

-- there is other code which is not shown here to write stuff into the bitmap using canvas -- 

    canvas.save();
    canvas.translate(
    myBitMap.getWidth() / 2 ,
    myBitMap.getHeight() / 2);
    canvas.restore();
    writeBitmap(myBitMap); //writes the bitmap to a file calling a user defined function.
    myBitMap.recycle();

我認為您必須將這些數量乘以設備密度。

嘗試將這些金額乘以

this.getResources().getDisplayMetrics().density

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM