Android开发---如何操作资源目录中的资源文件

 效果图:

1、activity_main.xml

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

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="@dimen/activity_tile"
        android:text="@string/main_title" />
    <Button
        android:id="@+id/btn1"
        android:textSize="@dimen/activity_btn_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/main_btn_one"
        />
    <Button
        android:id="@+id/btn2"
        android:textSize="@dimen/activity_btn_text"
        android:text="@string/main_btn_two"
        android:layout_width="@dimen/btn_width"
        android:layout_height="@dimen/btn_height"
        />
    <Button
        android:id="@+id/btn3"
        android:textSize="@dimen/activity_btn_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/main_btn_three"
        />
</LinearLayout>

2、MainActivity.java

package com.example.android_activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
//实现View.OnClickListener类
//通过实现OnClickListener类可以在一个activity中对所有的按钮进行控制
public class MainActivity extends Activity implements View.OnClickListener{
    //获取按钮
    private Button btn1,btn2,btn3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取按钮id
        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);
        btn3=(Button)findViewById(R.id.btn3);
        //给每个按钮设置单击事件监听器
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
    }
    //在OnClickListener抽象类中有onClick()抽象方法,重写抽象类的onClick()方法,需要传入一个参数
    @Override
    public void onClick(View view) {
        Intent intent=null;
        switch (view.getId()){
            case R.id.btn1:
                intent=new Intent(this,StringActivity.class);
                break;
            case R.id.btn2:
                break;
            case R.id.btn3:
                intent=new Intent(this,BitMapActivity.class);
                break;
        }
        if(intent!=null)
            startActivity(intent);
    }
}

3、activity_string.xml

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

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/string_btn_1"
    android:onClick="test_1"
    />
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/string_btn_2"
    android:onClick="test_2"
    />
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/string_btn_3"
    android:onClick="test_3"
    />
</LinearLayout>

4、StringActivity.java

package com.example.android_activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import java.util.Arrays;

public class StringActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_string);
    }
    //当点击了btn1后页面跳转到这里,当用户点击此页面中的test_1按钮时,做下面的事情
    //在Java代码中读取资源文件
    public void test_1(View view){
        String message=getString(R.string.app_success_message);
        //弹出“操作成功”
        Toast.makeText(this,message,Toast.LENGTH_LONG).show();
    }

    //在java中读取字符串数组
    public void test_2(View view){
        //读取到res/values目录下的string.xml文件中对应的内容
        String[] citys=getResources().getStringArray(R.array.citys);
        //将内容弹出
        Toast.makeText(this, Arrays.toString(citys),Toast.LENGTH_LONG).show();
    }

    //读取带有占位符的字符串
    public void test_3(View view){
        String message=getString(R.string.app_sayhello_message);
        message=String.format(message,"Lucy","字符串资源管理");
        Toast.makeText(this, message,Toast.LENGTH_LONG).show();
    }
}

5、activity_bit_amp.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_bit_map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:layout_width="80dp"
        android:layout_height="120dp"
        android:src="@drawable/b5"
        />
    <ImageView
        android:id="@+id/image_1"
        android:layout_width="80dp"
        android:layout_height="120dp"
        />
    <ImageView
        android:id="@+id/image_2"
        android:layout_width="80dp"
        android:layout_height="120dp"
        />
    <ImageView
        android:id="@+id/image_3"
        android:layout_width="80dp"
        android:layout_height="120dp"
        />
    <ImageView
        android:id="@+id/image_4"
        android:layout_width="80dp"
        android:layout_height="120dp"
        />
</LinearLayout>

6、BitMapActivity.java

package com.example.android_activity;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.Toast;

public class BitMapActivity extends Activity {
    //获取图片
    private ImageView image_1,image_2,image_3,image_4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bit_map);
        //获取图片id
        image_1=(ImageView)findViewById(R.id.image_1);
        image_2=(ImageView)findViewById(R.id.image_2);
        image_3=(ImageView)findViewById(R.id.image_3);
        image_4=(ImageView)findViewById(R.id.image_4);

        //为ImageView绑定图像
        image_1.setImageDrawable(getResources().getDrawable(R.drawable.b5));
        image_2.setImageResource(R.drawable.b7);
        //将一个资源文件转换为一个Bitmap位图对象
        Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.b7);
        //输出图像大小
        Toast.makeText(this,"大小:"+bitmap.getByteCount(),Toast.LENGTH_LONG).show();
        image_3.setImageBitmap(bitmap);


        //压缩图像
        Bitmap newImage=decodeBitMap(R.drawable.b7);
        image_3.setImageBitmap(newImage);
        Toast.makeText(this,"大小:"+newImage.getByteCount(),Toast.LENGTH_LONG).show();

    }

    private Bitmap decodeBitMap(int resId){
        //构建位图工厂选项对象
        BitmapFactory.Options options=new BitmapFactory.Options();
        options.inJustDecodeBounds=true;//当前只加载图像框架
        //构建位图框架
        Bitmap bf=BitmapFactory.decodeResource(getResources(),resId,options);
        int w = options.outWidth;
        int h = options.outHeight;
        // 想要缩放的目标尺寸
        float hh = 240f;// 设置高度为240f时,可以明显看到图片缩小了
        float ww = 120f;// 设置宽度为120f,可以明显看到图片缩小了
        // 缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可
        int be = 1;//be=1表示不缩放
        if (w > h && w > ww) {//如果宽度大的话根据宽度固定大小缩放
            be = (int) (options.outWidth / ww);
        } else if (w < h && h > hh) {//如果高度高的话根据宽度固定大小缩放
            be = (int) (options.outHeight / hh);
        }
        if (be <= 0) be = 1;
        options.inSampleSize = be;//设置缩放比例
        options.inJustDecodeBounds=false;//不再只加载图像框架
        //重新加载图像
        bf=BitmapFactory.decodeResource(getResources(),resId,options);
        return bf;
    }
}

7、图像资源

8、字符串资源

strings.xml 

<resources>
    <string name="app_name">安卓资源管理</string>

    <!--自定义APP中字符串-->
    <string name="main_title">资源管理主窗体</string>
    <string name="main_btn_one">字符串资源管理</string>
    <string name="main_btn_two">尺寸资源管理</string>
    <string name="main_btn_three">图像资源管理</string>
    <string name="main_btn_four">颜色资源管理</string>
    <string name="main_btn_five">样式资源管理</string>
    <string name="main_btn_six">XML资源管理</string>

    <!--StringActivity_String-->
    <string name="string_btn_1">获取字符串信息1</string>
    <string name="string_btn_2">获取字符串信息2</string>
    <string name="string_btn_3">获取字符串信息3</string>

    <string-array name="citys">
        <item>北京</item>
        <item>上海</item>
        <item>广州</item>
        <item>珠海</item>
    </string-array>
</resources>

mystring.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_success_message">操作成功</string>
    <string name="app_error_message">操作失败</string>
    <string name="app_sayhello_message">%1$s,您好,欢迎您进入%2$s</string>
</resources>
如果您发现博客内容有什么错误,请您下方留言
原文地址:https://www.cnblogs.com/zn615/p/8168893.html