• 数据存储——四种存储方式——存储卡的文件操作——在存储卡上读写图片文件


    ======================================================================

    第一个布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="5dp" >
    
        <ImageView
            android:id="@+id/iv_content"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:scaleType="fitCenter" />
    
        <Button
            android:id="@+id/btn_save"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="把资源图片保存到存储卡"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
        <TextView
            android:id="@+id/tv_path"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
    </LinearLayout>

    第一个布局代码:

    package com.example.myapplication;
    
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener
    {
        private ImageView iv_content;
        private TextView tv_path;
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
    
            iv_content = findViewById(R.id.iv_content);
            iv_content.setImageResource(R.drawable.huawei); // 设置图像视图的图片资源
            tv_path = findViewById(R.id.tv_path);
            findViewById(R.id.btn_save).setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v)
        {
            if (v.getId() == R.id.btn_save)
            {
                // 获取当前App的私有下载目录
                String path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/";
                // 从指定的资源文件中获取位图对象
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.huawei);
                String file_path = path + DateUtil.getNowDateTime("") + ".jpeg";
                FileUtil.saveImage(file_path, bitmap); // 把位图对象保存为图片文件
                tv_path.setText("图片文件的保存路径为:\n" + file_path);
                ToastUtil.show(this, "图片已写入存储卡文件");
            }
    
            startActivity(new Intent(this,MainActivity2.class));
    
        }
    
    }

     

    第二个布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="5dp" >
    
        <Button
            android:id="@+id/btn_delete"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="删除所有图片文件"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
        <TextView
            android:id="@+id/tv_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
        <ImageView
            android:id="@+id/iv_content"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:scaleType="fitCenter" />
    
    </LinearLayout>

    第二个布局代码:

    package com.example.myapplication;
    
    import android.graphics.Bitmap;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class MainActivity2 extends AppCompatActivity implements View.OnClickListener
    {
    
        private final static String TAG = "ImageReadActivity";
        private TextView tv_content;
        private ImageView iv_content;
        private String mPath; // 私有目录路径
        private List<File> mFilelist = new ArrayList<File>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
    
            tv_content = findViewById(R.id.tv_content);
            iv_content = findViewById(R.id.iv_content);
            findViewById(R.id.btn_delete).setOnClickListener(this);
            // 获取当前App的私有下载目录
            mPath = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/";
            showFileContent(); // 显示最新的图片文件内容
        }
    
        // 显示最新的图片文件内容
        private void showFileContent() {
            // 获得指定目录下面的所有图片文件
            mFilelist = FileUtil.getFileList(mPath, new String[]{".jpeg"});
            if (mFilelist.size() > 0) {
                // 打开并显示选中的图片文件内容
                String file_path = mFilelist.get(0).getAbsolutePath();
                tv_content.setText("找到最新的图片文件,路径为"+file_path);
    
                // 显示存储卡图片文件的第一种方式:直接调用setImageURI方法
                //iv_content.setImageURI(Uri.parse(file_path)); // 设置图像视图的路径对象
    
    
                // 第二种方式:先调用BitmapFactory.decodeFile获得位图,再调用setImageBitmap方法
                //Bitmap bitmap = BitmapFactory.decodeFile(file_path);
                //iv_content.setImageBitmap(bitmap); // 设置图像视图的位图对象
    
    
                // 第三种方式:先调用FileUtil.openImage获得位图,再调用setImageBitmap方法
                Bitmap bitmap = FileUtil.openImage(file_path);
                iv_content.setImageBitmap(bitmap); // 设置图像视图的位图对象
    
            } else
            {
                tv_content.setText("私有目录下未找到任何图片文件");
            }
        }
    
        @Override
        public void onClick(View v)
        {
            if (v.getId() == R.id.btn_delete)
            {
                for (int i = 0; i < mFilelist.size(); i++)
                {
                    // 获取该文件的绝对路径字符串
                    String file_path = mFilelist.get(i).getAbsolutePath();
                    File f = new File(file_path);
                    if (!f.delete()) { // 删除文件,并判断是否成功删除
                        Log.d(TAG, "file_path=" + file_path + ", delete failed");
                    }
                }
    
                ToastUtil.show(this, "已删除私有目录下的所有图片文件");
            }
        }
    
    }

     

     

     

     

    ==========================================================================================

     

     

     

  • 相关阅读:
    MySQL在windows上的安装步骤
    k-均值聚类算法
    python2和python3中filter函数
    解决mysql出现的问题#1055
    python高级编程1
    二叉树
    Python常用算法(二)
    Python常用算法(一)
    Java蓝桥杯--入门训练(1) Fibonacci数列
    java基础--for-跑步运动
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/16463772.html
Copyright © 2020-2023  润新知