Android Tips -- Tip01

1、什么是Dip和Sp

过去,程序员经常以像素为单位设计计算机用户界面,例如,定义一个宽度为300像素的表单字段,列之间的间距为5个像素,图标大小为16x16像素等,这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面显得很小。在有些情况下,用户界面可能会小到难以看清内容。

 

与分辨率无关的度量单位可以解决这个问题,Android支持下列所有的单位

  • px(像素):屏幕上的点
  • in(英寸):长度单位
  • mm(毫米):长度单位
  • pt(磅):1/72英寸
  • dp(与密度无关的像素):一种基于屏幕密度的抽象单位,在每英寸160点的显示器上,1dp=1px
  • dip:与dp相同,多用于google示例中
  • sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放

为了使用户界面能够在现在和将来的显示器上正常显示,建议始终使用sp作为文字大小的单位,将dip作为其他元素的单位。当然,也可以考虑使用矢量图像,而不是位图

 

2、Dialog样式的Activity

在res/values/strings.xml中设置要显示的字符串如下:

 
<string name="mytext">\
dddddddddddddddddddddddddddddddddddd.
dddddddddddddddddddddddddddddddddddd.
html tag(<i>hualang</i>)
</string>
 

上述就是个测试,在string标签后加入反斜杠字符(\)是避免了在第一个单词的前面出现额外的空行

在注册这个Activity的时候在AndroidManifest.xml中写入如下:

 <activity android:name=".Another" android:theme="@android:style/Theme.Dialog">
</activity>

 运行效果如下:


Android Tips -- Tip01

 

3、利用日志消息调试程序

  • Log.e():错误
  • Log.w():警告
  • Log.i():信息
  • Log.d():调试
  • Log.v():详细

4、利用调试器调试程序

除了日志消息以外,还可以使用eclipse调试器设置断点,单步执行以及查看程序状态。首先,通过在AndroidManifest.xml

文件中添加android:debuggable="true"选项,使项目支持调试

<application android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:debuggable="true"
>

 

5、为什么有时在屏幕旋转后程序重新播放视频
默认情况下,Android假定程序对于屏幕旋转一无所知。为了处理可能的资源变化,Android销毁并从头重建你的活动。这意味着要再次调用onCreate()方法,也意味着要重新开始播放视频。
这种处理方式使用于90%的应用程序,因此大多数开发人员不必关心这一问题,对于测试应用程序的声明周期和状态保存/恢复代码,这甚至是一种有用的方法。但是,还有一些更好的办法能优化视频的转换。
最简单的办法是在活动中实现onRetainNonConfigurationInstance()方法,以保存一些对onDestroy()和onCreate(0方法的多次调用中需要保持的数据。在返回时,你可以在活动的新实例中使用getLastNonConfigurationInstance()方法恢复这些信息。可以保存任何信息,甚至包括对当前一度的引用和正在运行的线程。
更复杂的方法是在AndroidManifest.xml文件中使用adnroid:configChanges=特性,这种形式将你可以处理的变化通知Android。例如,如果将特性设为keyboardHidden|orientation,那么当用户翻转键盘时,Andorid将不会销毁和创建活动。相反,Android将调用onConfigurationChanged(Configuration)方法,并假定你知道自己如何处理。

 

你可能感兴趣的:(android)