最近想做一个音乐播放器,不过实力还有些差距,找了些资料,从简单的入手,从获取手机的图片开始
下面是我跟着一位前辈的教程敲的代码。
实现功能:
1.从手机获取图片文件
2.显示在自己的组件上
界面就是一个imageview和一个button就不需要发出来了,不过别忘记给button添加点击事件
图片:
权限设置代码:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
实现代码:
package com.example.hp.rect;
import android.Manifest;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.BounceInterpolator;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
int code = 1001;//自己设置一个相当于密码的东西
final String TAG = "test";//测试
ImageView id_imageview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkPermissions();//检测权限、、Android6.0后有此要求,需要在AndroidManifest中声明后再添加一项实现动态的设置权限
}
public boolean checkPermissions() {
// 本app需要以下权限
final String[] ps = {Manifest.permission.READ_EXTERNAL_STORAGE};
// 检查是否有这些权限
int rc = ActivityCompat.checkSelfPermission(this, ps[0]);
if (rc != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, ps, 0);
return false;
}
return true;
}
public void goSelect(View view) {//button 的相应函数。这次添加在后台的
Uri uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
Intent intent = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(intent, code);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == code) {
if (resultCode == RESULT_OK) {
Uri imageUri = data.getData();
// 取出文件路径 ( 以下写法基本固定, 照抄即可, 不是本节课的重点 )
// 其实这是又用 imageUri 作了一次查询操作,查询结果里有图片文件的路径
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(imageUri, projection, null, null, null);
cursor.moveToFirst();
int column = cursor.getColumnIndex(projection[0]);
String imagePath = cursor.getString(column);
Log.d(TAG, "选中文件的路径:" + imagePath);//在运行框中显示此句话
// 读取图片并显示
Drawable image = Drawable.createFromPath(imagePath);
ImageView imageView = (ImageView) findViewById(R.id.id_imageview);
imageView.setImageDrawable(image);//在imageview中显示图片
}
}
}
}