15.屏幕適配

屏幕適配 
  •  主流屏幕: 1280*720, 遵循原則: 不用AbsoluteLayout(絕對佈局), 多用相對佈局&線性佈局(權重), 要用dp,不用px
  • 開發後期, 在不一樣分辨率屏幕上測試(480*800,1920*1080), 若是沒出現太大問題(影響正常使用), 就能夠上線

若是後期測出問題怎麼辦?
  •  圖片適配
不是很經常使用,分別在drawable各放一套圖,但會致使軟件體積很大
  • 佈局適配
不是很經常使用,  layout-800x480 專門適配480*800的屏幕
  • 尺寸適配
dp和px的關係: dp = px/設備密度

float density = getResources().getDisplayMetrics().density;
System.out.println("設備密度:" + density);

320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)

values->dimens.xml  values-1280x720
  •  權重適配
android:weightSum="3"
  • 代碼適配
獲取屏幕寬高,動態計算控件大小
在智慧北京引導頁下面的圓點寫死了,側邊欄也在大屏幕會拉出很長,如今修改:
1.建立工具類
   
   
   
   
public class DensityUtils { /** * dp轉px */ public static int dp2px(Context ctx, float dp) { float density = ctx.getResources().getDisplayMetrics().density;//獲取屏幕像素密度 int px = (int) (dp * density + 0.5f);// 4.9->5 4.4->4 return px; } public static float px2dp(Context ctx, int px) { float density = ctx.getResources().getDisplayMetrics().density; float dp = px / density; return dp; }}
2.引導頁面
小紅點(dp)
    
    
    
    
<View android:id="@+id/view_red_point" android:layout_width="10dp" android:layout_height="10dp" android:background="@drawable/shape_point_red" />
小灰點
    
    
    
    
  1. //這裏面是像素dx,轉換成dp
// 初始化引導頁的小圓點 for (int i = 0; i < mImageIds.length; i++) { View point = new View(this); point.setBackgroundResource(R.drawable.shape_point_gray);// 設置引導頁默認圓點 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( DensityUtils.dp2px(this, 10), DensityUtils.dp2px(this, 10)); if (i > 0) { params.leftMargin = DensityUtils.dp2px(this, 10);// 設置圓點間隔 } point.setLayoutParams(params);// 設置圓點的大小 llPointGroup.addView(point);// 將圓點添加給線性佈局 }

3.主頁面:在代碼中修改
   
   
   
   
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); setBehindContentView(R.layout.left_menu);// 設置側邊欄 SlidingMenu slidingMenu = getSlidingMenu();// 獲取側邊欄對象 slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 設置全屏觸摸 int width = getWindowManager().getDefaultDisplay().getWidth();// 獲取屏幕寬度 slidingMenu.setBehindOffset(width * 200 / 320);// 設置預留屏幕的寬度,按比例 initFragment(); }
美工作的






相關文章
相關標籤/搜索