Android 支持多屏幕机制

Android 大屏幕设置
如果使用大屏幕开发需要在AndroidManifest.xml中添加如下:
<supports-screens android:largeScreens="true"  android:anyDensity="true" />
这样在虚拟机上显示时才不会缩在中间

 

术语
   1.Screen size 屏幕实际尺寸。
Android 讲屏幕实际尺寸分为3个通用的尺寸。
 
   2.Aspect ratio 长宽比

   3.Resolution 分辨率

   4.Density 密度

   5.Density-independent pixel 密度无关的像素

介绍:Adnroid1.6或以上SDK,在Android Manifest.xml中提供新的一个元素<supports-screens>用于支持多屏幕机制。
<supports-screens
          Android :largeScreens="true"   是否支持大屏
          Android :normalScreens="true"  是否支持中屏
          Android :smallScreens="true"   是否支持小屏
          Android :anyDensity="true"     是否支持多种不同密度
/>


Android 提供3种方式处理屏幕自适应
一.预缩放的资源(基于尺寸和密度去寻找图片)
1.如果找到相应的尺寸和密度,则利用这些图片进行无缩放小时。
2.如果没法找到相应的尺寸,而找到密度,则认为该图片尺寸为 "medium",利用缩放这个图片显示。
3.如果都无法匹配,则使用默认图片进行缩放显示。默认图片默认标配 "medium" (160)。

二.自动缩放的像素尺寸和坐标(密度兼容)
1.如果应用程序不支持不同密度Android :anyDensity="false",系统自动缩放图片尺寸和这个图片的坐标。
  (代码中体现)
2.对于预缩放的资源,当Android :anyDensity="false",也不生效。
3.Android :anyDensity="false",只对密度兼容起作用,尺寸兼容没效果

三.兼容模式显示在大屏幕,尺寸(尺寸兼容)
1.对于你在<supports-screens>声明不支持的大屏幕,而这个屏幕尺寸是normal的话,系统使用尺寸为    ("normal")和密度为("medium)显示。
2. 对于你在<supports-screens>声明不支持的大屏幕,而这个屏幕尺寸是larger的话,系统同样使用尺寸 为                   ("normal")和密度为("medium)显示,不过会出现一层黑色的背景。不是居中显示。


密度独立:
系统默认应用支持DIP单位的,三个使用DIP的地方:
1.加载资源时,使用DIP实现预缩放的资源。
2.在Layout使用DIP,系统自动完成缩放。
3.在应用程序中,自动缩放一些绝对像素。
    (只有在Android :anyDensity="false"生效)即屏幕自适应方式二
4.像素单位都使用DIP,文本单位使用SP

最佳屏幕独立实践:
1.使用wrap_content, fill_parent 和使用dip作为像素单位in XML layout files。
2.避免使用AbsoluteLayout
3.在代码中,不要使用像素数字硬编码,而是要通过dip转换为px。
    例子:
   你使用手势分析器分析一个scroll手势,假如,你滚动的距离是16px。
1.在一个160dip的屏幕中,你实际移动距离 16px / 160dpi = 1/10th of an inch (or 2.5 mm)
2.在一个240dip的屏幕中,你实际移动距离 16px / 240dpi = 1/15th of an inch (or 1.7 mm)
  // The gesture threshold expressed in dip
  private static final float GESTURE_THRESHOLD_DIP = 16.0f;
  // Convert the dips to pixels
  final float scale = getContext().getResources().getDisplayMetrics().density;
  mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale);
4.使用密度和/或尺寸特定资源(通过文件夹)


关于预缩放或者自动缩放图片或9格图
1.系统是一定对会资源包下的图片进行合理的缩放。
   例如:一张240x240高密度图片,显示在中密度的屏幕上,图片大小自动变为160x160。
2.你在API中不会得到被缩放后的图片尺寸,得到还是你原来图片的尺寸。
3.如果你不想系统自动帮你缩放图片,可以建立一个res/drawable-nodpi文件夹,存放你的图片。
4.也可以通过BitmapFactory.Options 完成系统自动缩放图片或9格图(在画图时)。
5.自动缩放图片比预缩放花费更多CPU,但是用更少内存(RAM or ROM ?)

 

 

转载地址:http://www.linuxidc.com/Linux/2010-11/29535.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用程序的输入事件处理机制是指当用户与应用程序的界面进行交互时,应用程序如何捕获和处理用户输入的事件。 在Android中,应用程序的输入事件主要包括触摸事件、按键事件、轨迹球事件和手势事件等。当用户在屏幕上触摸或滑动屏幕时,系统会生成触摸事件并传递给应用程序。当用户按下或释放物理按键时,系统会生成按键事件并传递给应用程序。而轨迹球事件主要用于处理具有轨迹球控制器的设备。此外,Android支持手势事件,可以用于识别用户在屏幕上的手势操作。 在应用程序中处理输入事件的过程通常分为两个步骤:事件的捕获和事件的处理。当用户操作触发输入事件时,系统首先会将该事件传递给最顶层的视图,即应用程序中的根视图。接下来,根据视图的层级结构,事件会被依次传递给子视图,直到找到合适的视图来处理该事件。 在视图中处理输入事件时,可以通过重写相应的事件回调方法来实现。例如,当触摸事件发生时,可以重写View中的onTouchEvent方法来处理相关的逻辑。在事件回调方法中,可以根据事件类型、触摸点的坐标等信息来进行相应的响应和处理。 此外,为了确保输入事件的连续性和流畅性,Android还提供了事件分发机制。事件分发机制中的关键概念是事件传递的三个阶段,即捕获阶段、目标阶段和冒泡阶段。在捕获阶段,事件会从根视图开始依次向下传递,直到找到被指定的目标视图。在目标阶段,事件会在目标视图中进行处理。而在冒泡阶段,事件会从目标视图开始依次向上冒泡,直到根视图。 总而言之,Android应用程序的输入事件处理机制是通过捕获和处理输入事件来实现用户界面与用户交互的过程。在应用程序中,可以通过重写相应的事件回调方法来处理用户输入操作,并通过事件分发机制来确保事件的连续传递和处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值