android常见的FAQ

1. 获取手机当前的横竖屏模式

activity.getWindowManager().getDefaultDisplay().getOrientation();  //0是竖屏  1是横屏
</pre><pre name="code" class="java">2. 获取手机像素尺寸以及像素密度(每英寸有多少个像素点)
<pre name="code" class="java">DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
pxy[0] = dm.widthPixels;
pxy[1] = dm.heightPixels;


 
</pre><pre name="code" class="java">以及像素和像素密度之间的转换:
<pre name="code" class="java">/**
	 * 将dp转换为px像素
	 * @param context
	 * @param dp
	 * @return
	 */
	public static int dp2pix(Activity context, float dp){
		float density = context.getResources().getDisplayMetrics().density;
		ILog.print("UIUtil", "dp2px density " + density);
		
		return (int)(density * dp + 0.5f);
		
	}
	
	/**
	 * 将px转换为dp
	 * @param context
	 * @param pix
	 * @return
	 */
	public static int pix2dp(Activity context, float pix){
		float density = context.getResources().getDisplayMetrics().density;
		ILog.print("UIUtil", "dp2px density " + density);
		
		return (int)(pix / density + 0.5f);
	}

 
</pre><pre name="code" class="java">

3. android 屏幕横竖屏切换时,一般都会对Activity进行销毁和重建,有时我们不希望对Activity的销毁,可以在清单文件中对应的activity声明:

android:configChanges="keyboardHidden|orientation"

以上方面只对sdk13之前的管用,sdk13后的则需要使用下面这条命令

android:configChanges="screenSize|orientation"

为了适应多个sdk版本,可以把上面的几个都综合在一起,就可以解决多个版本来适应。


4. android清单文件manifest中的support-screens选项卡作用

<supports-screensandroid:resizeable=["true"|"false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"
                  android:largestWidthLimitDp="integer"/>


作用:

使用这个属性,启动系统的屏幕兼容程序,对app的UI在大屏幕或小屏幕上进行屏幕兼容处理。

原理:通常对不同尺寸的屏幕我们要做不同像素的资源来进行UI布局处理,有时候这样处理也不能达到很好的效果。此时,我们就可以用此选项来控制,在大屏幕上,是否使用系统的兼容模式来放大UI来填充屏幕,或者在小屏幕上进行缩放填充屏幕;

具体详情请看:http://www.cnblogs.com/andriod-html5/archive/2012/05/21/2539418.html

6. android metadata:

通常写在Androidmanifest.xml文件中,以名值对的形式出现在metadata中,通常用于保存一些组件的配置信息,meta中如果全是数字的话默认为int型,其他则为字符型;最终名值对被包装乘bundle类型,使用bundle去获取;

具体的获取方法:

 context.getPackageManager.getApllicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData.getString("")

如果是Activity里面的名值对的话,则使用

getPackageManager().getActivityInfo( new ComponentName(this, MetadataActivity.class), PackageManager.GET_META_DATA);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气好男人_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值