屏幕适配
如果后期测出问题怎么办?
不是很常用,分别在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" />
小灰点
// 初始化引导页的小圆点 for (int i = 0; i < mImageIds.length; i++) { View point = new View(this); point.setBackgroundResource(R.drawable.shape_point_gray);// 设置引导页默认圆点//这里面是像素dx,转换成dp 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(); }
美工做的