Android资源文件(备忘录) 供个人记忆

来源:互联网 发布:手机游戏下载java 编辑:程序博客网 时间:2024/05/01 06:06

1.Theme 和Style的区别比较

style主要指的控件的风格, theme可以包含多个style,指的一个整体的主题风格;

theme 和 style 都可以在styles.xml里面新建style.

新建一个styles.xml文件,

 <style> </style> 里可包含多个<item> </item>,

<span style="font-family:Microsoft YaHei;color:#666666;"><style  name="TextViewStyle1">        <item name="android:textColor">@android:color/holo_red_light</item>        <item name="android:textSize">40sp</item>        <item name="android:layout_height">wrap_content</item>        <item name="android:layout_width">200dp</item>        <item name="android:background">@color/white</item>        <item name="android:gravity">center_horizontal</item>    </style> </span>

item里指定的是控件的属性,通过<item name="控件属性">属性值</item>,属性值可以直接写值,或者通过@指定,也可以通过?指定系统资源文件;

style可以继承父类style,显示继承通过parent = "父类style";隐式继承直接在name=“style名字”,这个style名字上面加上一个父类style的前缀 ,即“父类style.style名字”;

style的使用,在控件中使用   style=“@style/style名字”


theme指定主题一般在application或者activity里面,系统主题例如android:theme="android:theme="Theme.Light.NoTitleBar.Fullscreen"  白色背景,无标题栏,全屏

自定义主题通过android:theme="@style/style名字",或者java代码里通过setTheme(R.style.style名字);


2. Asserts 和Raw的区别比较

assets和res/raw工程目录下的文件都会被原封不动地打包到APK应用中,不会编译成二进制代码。

Assets目录

  1. assets目录中文件不会被映射到R.java中,即系统不会自动为其生成一个资源ID。
  2. assets目录中的文件需要借助AssetManager去访问。
  3. assets目录允许下面有多级子目录。

Res/raw目录 

  1. 系统会为res目录下的所有资源生成相应的资源ID,Raw中的文件也不例外。 
  2. res/raw下不允许存在目录结构。

1.assets目录的读取访问方式

AssetManager a = getAssets() ; 
InputStream is = a.open(fileName) ;  
a.openFd(fileName)得到的AssetFileDescriptor对象来获得fileName文件的信息,例如长度等。                                                   a.list(“”)得到assets目录下的所有文件和子目录名称的数组,通过a.list(SubFolderName), 得到assets/SubFolderName下所有的文件和子目录名称的数组。                                                                                                                                                                                                  
通过文件查找的方式来访问,速度会更慢一些。

2.res/raw目录的读取访问方式

InputStream is = getResources().openRawResource(R.id.fileNameID) ; 
//R.id.fileNameID为需要访问的文件对应的资源ID.接着我们就可以通过输入流来读取相应文件的内容了。                                                      
在Android XML文件中你也可以@raw/的形式引用到它。

3.dpi、sp、px的区别以及转换关系

官方规定每英寸160个点的显示器,1dp=1px,因为方便适配。  

px = dp * (dpi / 160); 高分辨率的手机dpi肯定大呀,同样dp的值所代表的像素更多。

使用dp作为单位绘制控件,不管屏幕大小,dpi的高低,显示的效果始终保持一致;  

dp/dip density 表示每英寸上面多少个像素点。一英寸约等于2.54cm。device independent pixels 设备独立像素

SP (Scale-independent pixels)

public class DensityUtil {      /**      * 根据手机的分辨率从 dp 的单位 转成为 px(像素)      */      public static int dip2px(Context context, float dpValue) {          final float scale = context.getResources().getDisplayMetrics().density;          //因为有的dpi为160的1.5倍,所以计算完后,为了没有小数,加0.5        return (int) (dpValue * scale + 0.5f);      }      /**      * 根据手机的分辨率从 px(像素) 的单位 转成为 dp      */      public static int px2dip(Context context, float pxValue) {          final float scale = context.getResources().getDisplayMetrics().density;          return (int) (pxValue / scale + 0.5f);      }  }

4  .9图片的意义

在图片拉伸的时候特定区域不会发生失真

0 0
原创粉丝点击