android 4 默认 android:theme,Android文件/文件夹选择器(支持多选操作),已封装为lib库,直接添加依赖即可。...

话不多少,先上图一览:

20180110205746684016.gif

接下来我们开始写个app测试:

1、新建Android工程:FileSelectorTest

2、更改MainActivity:

在里面写四个textview模拟button,分别是文件单选,文件多选,文件夹路径单选,文件夹路径多选,然后重写textview点击事件进入FsActivity,传入参数不同,选择模式不同。

复写onActivityResult,用来获取从文件/文件夹选择器传递回来的数据。

packagecn.darkranger.fileselectortest;importandroid.content.Intent;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.TextView;importandroid.widget.Toast;importdr.android.fileselector.FileSelectConstant;public class MainActivity extendsAppCompatActivity {private static final String TAG = "MainActivity";private static final Integer FILE_SELECTOR_REQUEST_CODE = 2016;privateTextView mFileTv;privateTextView mFileMultiTv;privateTextView mFolderTv;privateTextView mFolderMultiTv;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initData();

initEvent();

}private voidinitView() {

mFileTv=(TextView) findViewById(R.id.id_mode_file);

mFileMultiTv=(TextView) findViewById(R.id.id_mode_file_multi);

mFolderTv=(TextView) findViewById(R.id.id_mode_folder);

mFolderMultiTv=(TextView) findViewById(R.id.id_mode_folder_multi);

}private voidinitData() {

}private voidinitEvent() {//文件单选

mFileTv.setOnClickListener(newOnClickListener() {

@Overridepublic voidonClick(View v) {

Intent intent= newIntent();

intent.setClass(getApplicationContext(), FsActivity.class);

intent.putExtra(FileSelectConstant.SELECTOR_REQUEST_CODE_KEY, FileSelectConstant.SELECTOR_MODE_FILE);

startActivityForResult(intent, FILE_SELECTOR_REQUEST_CODE);

}

});//文件多选

mFileMultiTv.setOnClickListener(newOnClickListener() {

@Overridepublic voidonClick(View v) {

Intent intent= newIntent();

intent.setClass(getApplicationContext(), FsActivity.class);

intent.putExtra(FileSelectConstant.SELECTOR_REQUEST_CODE_KEY, FileSelectConstant.SELECTOR_MODE_FILE);

intent.putExtra(FileSelectConstant.SELECTOR_IS_MULTIPLE,true);

startActivityForResult(intent, FILE_SELECTOR_REQUEST_CODE);

}

});//文件夹单选

mFolderTv.setOnClickListener(newOnClickListener() {

@Overridepublic voidonClick(View v) {

Intent intent= newIntent();

intent.setClass(getApplicationContext(), FsActivity.class);

intent.putExtra(FileSelectConstant.SELECTOR_REQUEST_CODE_KEY, FileSelectConstant.SELECTOR_MODE_FOLDER);

startActivityForResult(intent, FILE_SELECTOR_REQUEST_CODE);

}

});//文件夹多选

mFolderMultiTv.setOnClickListener(newOnClickListener() {

@Overridepublic voidonClick(View v) {

Intent intent= newIntent();

intent.setClass(getApplicationContext(), FsActivity.class);

intent.putExtra(FileSelectConstant.SELECTOR_REQUEST_CODE_KEY, FileSelectConstant.SELECTOR_MODE_FOLDER);

intent.putExtra(FileSelectConstant.SELECTOR_IS_MULTIPLE,true);

startActivityForResult(intent, FILE_SELECTOR_REQUEST_CODE);

}

});

}

@Overrideprotected void onActivityResult(int requestCode, intresultCode, Intent bundle) {super.onActivityResult(requestCode, resultCode, bundle);

Log.i(TAG,"requestCode: " + requestCode + "; resultCode: " +resultCode);if (resultCode ==RESULT_OK) {

Toast.makeText(this, "paths: " +bundle.getStringArrayListExtra(FileSelectConstant.SELECTOR_BUNDLE_PATHS),

Toast.LENGTH_SHORT).show();

}

}

@Overridepublic booleanonCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);return true;

}

@Overridepublic booleanonOptionsItemSelected(MenuItem item) {int id =item.getItemId();if (id ==R.id.action_settings) {return true;

}return super.onOptionsItemSelected(item);

}

}

3、新建FsActivity

(1)添加依赖包DR-lib-fileselector:

20180110205746687922.png

(2)继承FileSelectActivity

(3)onCreate、onCreateOptionsMenu和onOptionsItemSelected直接使用FileSelectActivity的方法,super.xxx();

(4)复写FileSelectActivity的方法initParams,里面设置了一些基本的信息,包括选择文件的标题,选择文件夹路径的标题,文件夹的图标,文件的图标,图标宽度和高度,当然不写的话都使用默认值。

(5)还可以复写onBackPressed()和onClickOkBtn(),分别是下面虚拟返回键的操作和右上角选择完成后的操作。当然不写的话也都是用默认FileSelectActivity的默认操作

packagecn.darkranger.fileselectortest;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importdr.android.fileselector.FileSelectActivity;public class FsActivity extendsFileSelectActivity {

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

}

@Overridepublic booleanonCreateOptionsMenu(Menu menu) {return super.onCreateOptionsMenu(menu);

}

@Overridepublic booleanonOptionsItemSelected(MenuItem item) {return super.onOptionsItemSelected(item);

}

@Overridepublic voidinitParams() {//这些参数都有默认值,不设置也是可以的//setSelectorFileTitle("this is file title");//setSelectorFolderTitle("this is folder title");//setSelectorFileIcon(R.drawable.ic_fileselect_file);//setSelectorFolderIcon(R.drawable.ic_fileselect_folder);//setSelectorIconHeight(150);//setSelectorIconWidth(150); }

}

@Overridepublic voidonBackPressed() {super.onBackPressed();

}

@Overridepublic voidonClickOkBtn() {super.onClickOkBtn();

}

}

4、在AndroidManifest.xml中添加读写存储的权限

5、完成配置,并运行。

依赖包:http://files.cnblogs.com/files/wrcold520/DR-lib-fileselector.zip(lib包里面去掉了v4包,DR-lib-fileselector依赖包依赖于v7包,如下图,v7的依赖包里面有v4包)

20180110205746701595.png

原文:http://www.cnblogs.com/wrcold520/p/5543659.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值