关于资源
样式style
样式在res/values/styles.xml中定义,如:
1、布局文件中存在多个具有相同风格的控件,比如说统一的Button文字,都是红色大字体显示,这时我们便可在styles.xml定义一种文本样式,然后在各文本框处声明它的style属性。好处一个是减少了布局文件的大小,另一个是方便以后统一修改风格。
用到的style 定义的布局文件,如下:
<!-- 这里自定义一个字体样式 -->
<style name="textStyle" >
<item name="android:textColor" >@color/colorAccent</item>
<item name="android:textSize" >@dimen/btn_text_common_size</item>
</style>
这里可以定义一个专门存放尺寸sp,dp都可以的 资源文件res/values/dimen.xml
2、主题风格中,新建的项目都会有一个style,包含name,parent属性。代码中设置主题可通过“setTheme(R.style.XXX)”完成,布局中设置可在AndroidManifest.xml的activity节点下添加theme属性,如“android:theme=”@style/XXX””
错误描述:java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
该错误主要原因是 : activity继承了支持包中才有的Activity,如ActionBarActivity,AppCompatActivity等,导致主题之间没有继承关系
解决办法:统一主题与activity的继承关系;
关于屏幕适配
【TODO】这往下的没写完,是草稿,待更新;
这里就要用到上面提到的dimens文件了。
为什么要适配
android设备屏幕多种多样,需要考虑图片和文件的间距及大小,为了让app可以在更多的设备上运行
概念:
- 所谓的屏幕尺寸(如,5寸屏)
指的是物理屏幕对角线尺寸,单位是英寸,不同的屏幕尺寸是可以采用相同的分辨率的,而它们之间的区别在与密度(density)不同; - 屏幕密度
屏幕密度与DPI这个概念紧密相连,DPI全拼是dots-per-inch,即每英寸的点数。也就是说,密度越大,每英寸内容纳的点数就越多。
android.util包下有个DisplayMetrics类可以获得密度相关的信息。
最重要的是densityDpi这个成员,它有如下几个常用值:
DENSITY_LOW = 120
DENSITY_MEDIUM = 160 //默认值
DENSITY_TV = 213 //TV专用
DENSITY_HIGH = 240
DENSITY_XHIGH = 320
DENSITY_400 = 400
DENSITY_XXHIGH = 480
DENSITY_XXXHIGH = 640
android设备屏幕的参数包括分辨率如1280*800,