zoukankan      html  css  js  c++  java
  • 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>
    如果您发现博客内容有什么错误,请您下方留言
  • 相关阅读:
    CCPC2018-湖南全国邀请赛
    2019中山大学程序设计竞赛
    [POJ]poj1185 炮兵营地(状压DP)
    [CF]Codeforces Round #551 (Div. 2)
    [EOJ]2019 ECNU XCPC April Selection #1
    [现场赛]“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛
    欧拉函数 欧拉筛法 欧拉定理
    [CF]301D Yaroslav and Divisors
    岸芷汀兰的诗集(持续更新)
    模板柱(持续更新)
  • 原文地址:https://www.cnblogs.com/zn615/p/8168893.html
Copyright © 2011-2022 走看看