① Android如何處理過大圖片的顯示
你可以把圖片豎直和橫向添加滾動條,這樣就可以顯示發圖片
② android怎麼設置自適應大小的背景圖片
需要給你的ImageView布局加上Android:adjustViewBounds="true"
<ImageView android:id="@+id/test_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_gravity="center"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_launcher" />
然後,在代碼里設置ImageView.最大寬度和最大高度,因為adjustViewBounds屬性只有在設置了最大高度和最大寬度後才會起作用
int screenWidth = getScreenWidth(this);
ViewGroup.LayoutParams lp = testImage.getLayoutParams();
lp.width = screenWidth;
lp.height = LayoutParams.WRAP_CONTENT;
testImage.setLayoutParams(lp);
testImage.setMaxWidth(screenWidth);
testImage.setMaxHeight(screenWidth * 5); 這里其實可以根據需求而定,我這里測試為最大寬度的5倍
③ android背景圖片和解析度以及屏幕尺寸大小的關系!
wrap_content是包裹住內容,所以你的內容區有多大圖片就會顯示多大區域,如果你的內容區域沒有填充滿窗口圖片肯定是無法全屏的。
④ android圖片太大如何獲取圖片尺寸然後縮放
用這個方法吧
//載入需要操作的圖片,這里是一張圖片
bitmap
bitmaporg
=
bitmapfactory.decoderesource(getresources(),r.drawable.r);
//獲取這個圖片的寬和高
int
width
=
bitmaporg.getwidth();
int
height
=
bitmaporg.getheight();
//定義預轉換成的圖片的寬度和高度
int
newwidth
=
200;
int
newheight
=
200;
//計算縮放率,新尺寸除原始尺寸
float
scalewidth
=
((float)
newwidth)
/
width;
float
scaleheight
=
((float)
newheight)
/
height;
//
創建操作圖片用的matrix對象
matrix
matrix
=
new
matrix();
//
縮放圖片動作
matrix.postscale(scalewidth,
scaleheight);
⑤ activity背景圖佔用內存太大怎麼優化
使用圖片緩存技術
在你應用程序的UI界面載入一張圖片是一件很簡單的事情,但是當你需要在界面上載入一大堆圖片的時候,情況就變得復雜起來。在很多情況下,(比如使用ListView, GridView 或者 ViewPager 這樣的組件),屏幕上顯示的圖片可以通過滑動屏幕等事件不斷地增加,最終導致OOM。
為了保證內存的使用始終維持在一個合理的范圍,通常會把被移除屏幕的圖片進行回收處理。此時垃圾回收器也會認為你不再持有這些圖片的引用,從而對這些圖片進行GC操作。用這種思路來解決問題是非常好的,可是為了能讓程序快速運行,在界面上迅速地載入圖片,你又必須要考慮到某些圖片被回收之後,用戶又將它重新滑入屏幕這種情況。這時重新去載入一遍剛剛載入過的圖片無疑是性能的瓶頸,你需要想辦法去避免這個情況的發生。
這個時候,使用內存緩存技術可以很好的解決這個問題,它可以讓組件快速地重新載入和處理圖片。下面我們就來看一看如何使用內存緩存技術來對圖片進行緩存,從而讓你的應用程序在載入很多圖片的時候可以提高響應速度和流暢性。
內存緩存技術對那些大量佔用應用程序寶貴內存的圖片提供了快速訪問的方法。其中最核心的類是LruCache (此類在android-support-v4的包中提供) 。這個類非常適合用來緩存圖片,它的主要演算法原理是把最近使用的對象用強引用存儲在 LinkedHashMap 中,並且把最近最少使用的對象在緩存值達到預設定值之前從內存中移除。
在過去,我們經常會使用一種非常流行的內存緩存技術的實現,即軟引用或弱引用 (SoftReference or WeakReference)。但是現在已經不再推薦使用這種方式了,因為從 Android 2.3 (API Level 9)開始,垃圾回收器會更傾向於回收持有軟引用或弱引用的對象,這讓軟引用和弱引用變得不再可靠。另外,Android 3.0 (API Level 11)中,圖片的數據會存儲在本地的內存當中,因而無法用一種可預見的方式將其釋放,這就有潛在的風險造成應用程序的內存溢出並崩潰。
⑥ android 中,我有一張背景圖片是 640*960像素,請問如何布局使得自動適應各種屏幕(HVGA,WVGA...)
640 * 960的是ios的解析度, 用在android不同密度不同尺寸下會出現各種問題。android手機最適合的是 800 * 480的,這個像素的圖基本能滿足各個手機,頂多就是高度方面會拉伸,寬度的改變不大。
android 不同的密度下對應的像素是不同的,中密度是 1:1的關系,高密度是1:1.5,低密度是1:0.75。如果你的圖片默認是放在drawable里,那這是默認中密度下的,如果手機是高密度,就會把圖片拉伸1.5倍再顯示,這樣圖片可能會有失真的情況。
系統的圖片處理是在不同的密度下做成不同像素的圖片。比如:一張圖片 低密度下放入一張 36*36 ,中密度下是 48*48, 高密度下是64*64。
如果你只是背景圖片填充屏幕,你只要設置fill_parent就可以實現,但是你裡面的內容在不同的密度下就會顯示大小都不同, 如果裡面的內容不管是什麼密度下都要按照那個比例來的話(比如最上面是title,中間是內容,下面是底部懶,你想這個在不同的手機下都以1:9:1的比例顯示出來),那就可以設置layout_weight ,最外面Linearlayout 裡面的每個布局 的width設置為wrap_content,同時設置weight,這個數值要反過來設置,這樣就能保證在任何手機上都是以這個比例顯示內容。
⑦ android 設置背景圖 大小不協調
android:scaleType控制圖片如何resized/moved來匹對ImageView的size
mageView.ScaleType / android:scaleType值的意義區別:
CENTER /center 按圖片的原來size居中顯示,當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示
CENTER_CROP / centerCrop 按比例擴大圖片的size居中顯示,使得圖片長(寬)等於或大於View的長(寬)
CENTER_INSIDE / centerInside 將圖片的內容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬
FIT_CENTER / fitCenter 把圖片按比例擴大/縮小到View的寬度,居中顯示
FIT_END / fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置
FIT_START / fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置
FIT_XY / fitXY 把圖片不按比例擴大/縮小到View的大小顯示
MATRIX / matrix 用矩陣來繪制,動態縮小放大圖片來顯示