android中的资源
在Android中,界面相关的资源,控件,图片,字符串等一般都放在xml文件中;
当然也可以完全通过代码实现,不用xml;
一般情况下,在xml中的资源,Android会自动生成一个R类,每个资源对应一个静态变量的id值;
Android的sdk的很多函数参数支持直接通过ID值应用;
Android SDK也会自带一些资源,通过 android.R类获取;
如果想把相关的ID值,转换为响应的对象变量,如: string的id,转换为 String的对象,一般通过 Resources类;
一般可以直接通过 Resources getResources()函数直接获取,然后在通过其相关的函数转换相关的id为相应的对象;
资源与xml文件
1:
上面已经说了,资源可以放到XML文件中;
这里还要强调一点:一个资源也可以对应一个单独的XML,如果就像一个Layout对应一个xml; 一个View也可以对应一个XML等等一样;
2:
在Android中,可以通过代码建立资源,也可以通过xml获取资源;
所以如果自己想要自定义一个类,如 MyLayout; classMyLayout extendsLinearLayout;
自己建立了一个MyLaout类,是LinearLayout的子类,当然可以通过代码设计MyLayout,但是也可以自己将MyLayout和一个自己新建的xml文件关联;
在工程上,右键,新建,XML,Layout XML;
然后将XML文件中的名称换做自己MyLayout的名称,注意,要保护包名,当然默认会提示你添加;
控件与xml文件
一般的控件如: TextView,可以完全通过代码生成到UI上,也可以通过tag标签在Layout的xml中添加,如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.think.myapplication.MainActivity"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView""/>
</RelativeLayout>
通常在xml文件中点击"<",会自动弹出提示,要选择的tag标签,包括已有的SDK中的类,也包括自定义的类(如果自己定义了控件类);
然后选择类,然后设置控件类的相关属性,包括添加id等;
关于xml中控件的设置,对应用编写代码的理解,一般可以理解为(如上示例),创建了一个TextView对象,然后设置相关属性(这里这样理解比较合适);
也可理解为:继承一个TextView的新类,然后重写了一些UI显示(这个示例这么理解不太合适);
当然也可以重新单独生成一个xml文件,然后里面只写了一个TextView的设置,如MyTextView,这里可以理解为继承一个TextView的新类;可以通过多种方式获取这个view;
如果要在一个Layout的xml文件调用这个新的MyTextView,一般可以通过:
<include layout="@layout/MyTextView"/>这样就相当于MyTextView是一个新的控件类一样;
所以,一般自己写一个控件类,要像个关联xml,前面的标签一定是自己的类名(必须是完整的包含包名的类名);然后在设置相关属性;