Android中動態調整ImageView的寬高比

2021-08-29 20:58:30 字數 1523 閱讀 6466

1.原理

在寫好布局檔案後,首先拿到整個螢幕的寬度,然後減去左右兩側的padding所佔的寬度,得到的結果就是imageview應該設定的寬度,再由一定比例計算出高度,最後以imageview.setlayoutparams()完成寬高的設定。

2.**

//布局檔案

//初始化

imageview mimageview = (imageview)       findviewbyid(r.id.item_notice_center_iv);

mimageview.setadjustviewbounds(true);

//獲取螢幕寬度

windowmanager m = (windowmanager) getcontext().getsystemservice(context.window_service);

displaymetrics outmetrics = new displaymetrics();

m.getdefaultdisplay().getmetrics(outmetrics);

//計算寬高,我需要的尺寸是280*136

int width = outmetrics.widthpixels - densitytool.dp2px(this, 10f) * 2; //乘以2是因為左右兩側的寬度

int height = (int) (width / 280f * 136); //280*136

//設定引數

viewgroup.layoutparams layoutparams = mimageview.getlayoutparams();

layoutparams.width = width;

layoutparams.height = height;

mimageview.setlayoutparams(layoutparams);

3.dp與px轉化

public class densitytool 

//根據手機的解析度從 dp 的單位 轉成為 px(畫素)

public static int dp2px(context context, float dpvalue)

//根據手機的解析度從 px(畫素) 的單位 轉成為 dp

public static float px2dp(resources resources, float pxvalue)

//獲取螢幕dpi

public static int getdpi(context context)

}

其他參考

1、android中使用displaymetrics獲取螢幕引數 

2、imageview.scaletype設定**

動態分割槽調整

關係型資料庫中,對分割槽表insert資料時候,資料庫自動會根據分割槽欄位的值,將資料插入到相應的分割槽中,hive中也提供了類似的機制,即動態分割槽 dynamic partition 只不過,使用hive的動態分割槽,需要進行相應的配置 1.開啟動態分割槽引數設定 1 開啟動態分割槽功能 預設t...

Android中動態介面布局

第一種 直接用 寫 xml android orientation vertical android layout width fill parent android layout height fill parent android id id layout android layout widt...

低成本FPGA中實現動態相位調整

在fpga中,動態相位調整 dpa 主要是實現lvds介面接收時對時鐘和資料通道的相位補償,以達到正確接收的目的。altera的高階fpga,如stratix r 系列中自帶有dpa電路,但低端的fpga,如cyclone r 系列中是沒有的。下面介紹如何在低端fpga中實現這個dpa的功能。實現架...