14 资源管理 01

Android中的资源介绍(分为res和assets):

      (本次讲解res中的资源---->)

概括地讲,Android的资源是指非代码部分。比如图片,mp3,字符串,xml文件等。

在一个Android工程中,和src源文件夹并列的有两个文件夹,分别叫做res和assets。这两个文件夹是用来保存资源文件的。

不同点:

1、res中的资源乐意通过R资源类之间访问。这种方式在Android中比较常用。

res中包含各种子文件夹,对资源进行分类;

anim(xml动画文件),drawable(图片),layout(布局文件),

menu(菜单),raw(二进制文件),values(常量值),

xml(xml文件)

2、assets中保存的一般是原始的文件,例如,mp3文件,android程序不能通过R类直接访问。必须通过AssertManager类以二进制的形式来读取。

学习res中的资源:

一般使用资源分为两种方式:

1、在代码中使用context的getResources()方法得到Resources对象,该对象提供了获得各种资源类型的方法;

2、在其他资源中引用资源的一般格式是这样的:

[email protected][包名称:]资源类型/资源名称

?R.资源类型.资源名称

1、颜色资源的使用:

颜色值的定义是通过(RGB三原色来定义)

颜色资源xml的定义:

代码:

colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="text_color" >#ff0000</color>
    <color name="bg_color1" >#00ff00</color>
    <color name="bg_color2">#ff0ff0</color>
</resources>

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:textColor="@color/text_color"
        android:background="@color/bg_color1"
        />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:onClick="test"/>

</LinearLayout>

R.java:

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package test.clolors;

public final class R {
    public static final class attr {
    }
    public static final class color {
        public static final int bg_color1=0x7f040001;
        public static final int bg_color2=0x7f040002;
        public static final int text_color=0x7f040000;
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int button1=0x7f060000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f050000;
        public static final int hello=0x7f050001;
    }
}

Test_colorsActivity.java:

package test.clolors;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class Test_colorsActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void test(View view){

        int color=this.getResources().getColor(R.color.bg_color2);
        Toast.makeText(this, ""+color, 1).show();
        this.getWindow().setBackgroundDrawableResource(R.color.bg_color2);
    }
}

运行结果:

  

2、字符串资源的使用:

在一个Android工程中,我们可能会使用到大量的字符串作为提示信息,这些字符串都可以作为字符串资源声明在配置文件中,从而实现程序的可配置性。

在代码中,我们使用Context.getString()方法,通过传递资源ID参数来得到改字符串,也可以在其资源文件中引用字符串资源,引用格式为“@string/字符串资源名称”。

两种引用方式,一种获取方式;

代码:

strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Test_string</string>
    <string name="hello">Hello World!</string>
    <string name="welcome">欢迎您,小熊熊!</string>

</resources>

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/welcome" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:onClick="test"/>

</LinearLayout>

Test_stringActivity.java:

package test.string;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Test_stringActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void test(View view){
        String str = this.getString(R.string.welcome);
        Toast.makeText(this, str, 1).show();

        Button button =(Button) findViewById(R.id.button1);
        button.setText(R.string.welcome);
    }
}

运行结果:

   

3、尺寸资源的使用:

   

我们可以使用一些常用的尺寸单位来定义一些文字尺寸,试图组件的宽和高。尺寸资源是一个数字类型的数据,被定义在res\values\dimens.xml文件中;

代码:

dimens.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="text_width">150px</dimen>
    <dimen name="text_height">100px</dimen>
    <dimen name="button_width">30mm</dimen>
    <dimen name="button_height">10mm</dimen>

</resources>

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:width="@dimen/text_width"
        android:height="@dimen/text_height"/>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:width="@dimen/button_width"
        android:height="@dimen/button_height"
        android:onClick="test"/>

</LinearLayout>

Test_dimenActivity.java:

package test.dimen;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Test_dimenActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void test(View view){
        Button button = (Button)findViewById(R.id.button1);
        float width = this.getResources().getDimension(R.dimen.text_width);
        float height = this.getResources().getDimension(R.dimen.text_height);

        button.setWidth((int)width);
        button.setHeight((int)height);
    }
}

运行结果:

    

时间: 2024-11-08 13:44:15

14 资源管理 01的相关文章

NCG CAM 14.0.01 Win32_64 2CD独立的 HSM CAM 系统

NCG CAM 14.0.01 Win32_64 2CD独立的 HSM CAM 系统NCG CAM 是独立的 HSM CAM 系统,能够与现有的 CAD 和 CAM 系统集成(包括 Pro/ENGINEER 和 SolidWorks).NCG CAM 拥有大量创新功能,包括自动三维初步加工.这一功能适用于所有形状类型,在为 HSM 机械加工创建优化且光滑的切割运动的同时 ,出色的表面处理还有助于延长工具寿命,最小化机械工具和生成零件的磨损. CFTurbo v10.0.5.650 Win32_6

成都传智播客java就业班(14.04.01班)就业快报(Java程序员薪资一目了然)

这是成都传智播客Java就业班的就业情况,更多详情请见成都传智播客官网:http://cd.itcast.cn?140812ls 姓名 入职公司 入职薪资(¥) 方同学 安**软件成都有限公司(Java) 6000.00 林同学 川**联系统集成有限公司(Java) 5100.00 刘同学 成**宇网络技术有限公司(Java) 4800.00 陈同学 安**软件成都有限公司(Java) 4500.00 文同学 安**软件成都有限公司(Java) 4700.00 顾同学 新**息科技成都公司(Ja

HDOJ 2602 Bone Collector【01背包】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 34251    Accepted Submission(s): 14101 Problem Description Many years ago , in

Installation GreenPlum 5.14.0 on Oracle Linux 7.6

Greenplum主要由Master节点.Segment节点.interconnect三大部分组成.Greenplum master是Greenplum数据库系统的入口,接受客户端连接及提交的SQL语句,将工作负载分发给其它数据库实例(segment实例),由它们存储和处理数据.Greenplum interconnect负责不同PostgreSQL实例之间的通信.Greenplum segment是独立的PostgreSQL数据库,每个segment存储一部分数据.大部分查询处理都由segme

CDH 版本子节点启动问题

今天下午整整为了启动一个节点瞎忙活一下午,惨痛的教训还是记录下来吧,毕竟付出了代价.事情原委,一个同事在一台机器上占用了大量内存训练CTR点击率模型,而这台机器上部署了分布式Hadoop的一个datanode,一开始报警我没太在意,突然同事告诉我他上不去这台机器了,我心里咯噔一下,完蛋,估计hadoop挂了,上去一看,果不其然,挂了然后下午瞎弄了差不多一下午都没能搞定.最终,在多篇博文的参考下,搞定了.总结问题如下: 下面这两种方法在实际应用中也可能会用到.1)重启坏掉的DataNode或Job

spring security 3.1 实现权限控制

简单介绍:spring security 实现的权限控制,能够分别保护后台方法的管理,url连接訪问的控制,以及页面元素的权限控制等, security的保护,配置有简单到复杂基本有三部: 1) 採用硬编码的方式:详细做法就是在security.xml文件里,将用户以及所拥有的权限写死,通常是为了查看环境搭建的检查状态. 2) 数据库查询用户以及权限的方式,这种方式就是在用户的表中直接存入了权限的信息,比方 role_admin,role_user这种权限信息,取出来的时候,再将其拆分. 3)

Hadoop.2.x_伪分布环境搭建

一. 基本环境搭建 1. 设置主机名.静态IP/DNS.主机映射.windows主机映射(方便ssh访问与IP修改)等 设置主机名: vi /etc/sysconfig/network # 重启系统生效(临时修改: hastname xxx;另起一个终端将会看到效果,需要注意的是: 若即将搭建Hadoop,这里起的hostname禁止使用"_") 设置静态IP/DNS: vi /etc/sysconfig/network-scripts/ifcfg-eth0(示例:修改BOOTPROT

Atitit 创业好处 Atitit 为什么我们要创业

Atitit 创业好处 Atitit 为什么我们要创业 1.1. 提升学历 1 1.2. 提升自己的能力 1 1.3. 拓展视野 站在高层ceo 才能掌握全局.站在产业链高层,才可看到趋势. 1 1.4. 提升自己的知识体系,完成从打工到ceo的转变 1 1.5. 事业有成带来成就感 1 1.6. 圆梦计划 现在就是圆梦的时候到了 2 1.7. 为了更好的普度众生,是我们大神的神圣使命感 2 1.8. 提升职位 3 1.9. 增强团队凝聚力 3 1.10. 建立自己的商业帝国 3 1.11. 说

【转】浅谈LLDB调试器

随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器.它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.LLDB为Xcode提供了底层调试环境,其中包括内嵌在Xcode IDE中的位于调试区域的控制面板,在这里我们可以直接调用LLDB命令.如图1所示: 图1:位于Xcode调试区域的控制台 在本文中,我们主要整理一下LLDB调试器提供给我们的调试命令,更详细的内容可以查看The LLDB Debugger. LLDB命令结构 在使用LL