Android 圖片顯示與屏幕適配的問題
Android 圖片顯示與屏幕適配的問題
在Android開發(fā)中比較頭疼的是Android的分辨率問題,那么這里給大家介紹個(gè)萬(wàn)能辦法,這個(gè)辦法的優(yōu)點(diǎn)是可以實(shí)現(xiàn)萬(wàn)能適應(yīng),給開發(fā)和美工設(shè)計(jì)提供了依據(jù),但是對(duì)開發(fā)來(lái)說(shuō)代碼量也不少,具體辦法:
(1)獲取屏幕的尺寸
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); Display d = windowManager.getDefaultDisplay(); mWidth = d.getWidth();mHeight = d.getHeight(); DisplayMetrics dm = getResources().getDisplayMetrics() mScreenDensity = dm.density;
(2)美工設(shè)計(jì)圖的尺寸
uiWidth,uiHeight
(3)獲取縮放比例
float scaleWidth = mWidth / uiWidth; float scaleHeight = mHeight/ uiHeight;
(4)所有布局的尺寸用代碼實(shí)現(xiàn):
public static int getWidthSize(int size) {
return (int) (size * scaleWidth);
}
public static int getHightSize(int size) {
return (int) (size * scaleHeight);
}
public static float getTextSize(int pxSize) {
return (pxSize * scaleHeight) / mScreenDensity;
}
public static void setViewSize(int width, int height, View v) {
int paramWidth = getWidthSize(width);
int paramHeight = getHightSize(height);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v
.getLayoutParams();
if (width != INVALID) {
params.width = paramWidth;
}
if (height != INVALID) {
params.height = paramHeight;
}
v.setLayoutParams(params);
}
public static void setViewPadding(int left, int top, int right, int bottom,
View v) {
left = getWidthSize(left);
top = getHightSize(top);
right = getWidthSize(right);
bottom = getWidthSize(bottom);
v.setPadding(left, top, right, bottom);
}
public static void setViewMargin(int left, int top, int right, int bottom,
View v) {
int paramLeft = getWidthSize(left);
int paramTop = getHightSize(top);
int paramRight = getWidthSize(right);
int paramBottom = getHightSize(bottom);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v
.getLayoutParams();
if (left != INVALID) {
params.leftMargin = paramLeft;
}
if (right != INVALID) {
params.rightMargin = paramRight;
}
if (top != INVALID) {
params.topMargin = paramTop;
}
if (bottom != INVALID) {
params.bottomMargin = paramBottom;
}
v.setLayoutParams(params);}
(5)這里是設(shè)置尺寸的代碼:
setViewSize(100, 100, mView);
setViewMargin(20, 0, 0, 20, mView);
setViewPadding(10, 10, 10, 10, mView);
mTextView.setTextSize(getTextSize(30));
由上在設(shè)計(jì)效果圖時(shí),可對(duì)圖內(nèi)元素進(jìn)行尺寸標(biāo)注,程序即可實(shí)現(xiàn)按比例縮放。
以上就是Android 圖片顯示與屏幕適配的問題的萬(wàn)能解決辦法,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android清空編輯框內(nèi)容功能的實(shí)現(xiàn)實(shí)例代碼
本篇文章主要介紹了Android清空編輯框數(shù)據(jù)功能的實(shí)現(xiàn)實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03
Android代碼實(shí)現(xiàn)AdapterViews和RecyclerView無(wú)限滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android代碼實(shí)現(xiàn)AdapterViews和RecyclerView無(wú)限滾動(dòng)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
Flutter?Getx中的put和lazyPut函數(shù)使用案例解析
這篇文章主要為大家介紹了Flutter?Getx中的put和lazyPut函數(shù)使用案例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Android Studio 通過登錄功能介紹SQLite數(shù)據(jù)庫(kù)的使用流程
SQLite是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。這篇文章主要介紹了Android Studio 通過登錄功能介紹SQLite數(shù)據(jù)庫(kù)的使用流程,需要的朋友可以參考下2018-09-09
Android實(shí)現(xiàn)游戲中的漸隱和漸現(xiàn)動(dòng)畫效果
本文給大家分享android中實(shí)現(xiàn)游戲中的漸隱漸現(xiàn)的動(dòng)畫效果,在游戲開發(fā)中經(jīng)常會(huì)遇到,對(duì)android漸隱漸現(xiàn)效果感興趣的朋友可以參考下本教程2016-09-09
Android基礎(chǔ)知識(shí)之單點(diǎn)觸摸
這篇文章主要為大家詳細(xì)介紹了Android基礎(chǔ)知識(shí)之單點(diǎn)觸摸,很簡(jiǎn)單的操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06
淺談Android實(shí)踐之ScrollView中滑動(dòng)沖突處理解決方案
涉及到了ViewPager,MapView,ListView,就需要ScrollView來(lái)做一下支援,這篇文章主要介紹了淺談Android實(shí)踐之ScrollView中滑動(dòng)沖突處理解決方案,有需要的可以來(lái)了解一下。2016-12-12
Android 基于百度語(yǔ)音的語(yǔ)音交互功能(推薦)
最近在開發(fā)android的項(xiàng)目,在項(xiàng)目需求中要用到語(yǔ)音喚醒功能。之前都沒接觸過,今天小編就給大家分享android基于百度語(yǔ)音的語(yǔ)音交互功能,非常不錯(cuò),感興趣的朋友一起看看吧2016-11-11

