屏幕適配:有幾種方式啦(五種)
? 1:圖片適配
? 需要準備不同的圖片資源,系統根據屏幕尺寸自動加載圖片(drawable-xhdpi ...)
? 2:布局適配
? 需要適配對應屏幕的布局 創建新的布局文件 layout-800x480 把對應的布局加載進去
? 3:比重適配
? 設置權重比例設置 (實用于線性布局)
? 4:dimension適配
? 設置對應屏幕的dimens資源 dp sp values-800x480 下 dimens 資源
? 5:代碼適配
? 在代碼中獲取手機屏幕的寬高;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取手機屏幕的寬度
int widthPixels = getResources().getDisplayMetrics().widthPixels;//寬度
int heightPixels = getResources().getDisplayMetrics().heightPixels;//高度
float density = getResources().getDisplayMetrics().density;//密度
int densityDpi = getResources().getDisplayMetrics().densityDpi;//像素密度
Log.i(TAG,"widthPixels:"+widthPixels);
Log.i(TAG,"heightPixels:"+heightPixels);
Log.i(TAG,"density:"+density);
Log.i(TAG,"densityDpi:"+densityDpi);
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) ll.getLayoutParams();
params.width = widthPixels/4;
params.height = heightPixels;
//設置布局參數
ll.setLayoutParams(params);
}
?
px和dp的轉換
/**
* 像素轉換的工具類
*/
public class Dp2PxUtils {
//dp轉換成px
public static int dp2px(Context context,int dp){
return (int)(dp * context.getResources().getDisplayMetrics().density + 0.5);
}