Dialog
setitems(数组的资源id或者是字符串类型数组,每项Item的点击事件); 普通列表
public void showCommonListDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("设置字体颜色");
builder.setIcon(R.mipmap.ic_launcher);
//setItems(表示展示到列表中的数组的资源id或者是字符串类型的数组,表示点击列表中item的点击事件)
builder.setItems(R.array.colors_name, new DialogInterface.OnClickListener() {
//int which 表示点击item的下标
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case 0:
tv.setTextColor(Color.RED);
break;
case 1:
tv.setTextColor(Color.GREEN);
break;
case 2:
tv.setTextColor(Color.BLUE);
break;
}
}
});
builder.create().show();
}
setAapter(ListAdapter接口 SimpleAdapter,每项Item的点击事件); 适配器列表
public void showAdapterListDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("系统设置");
List<Map<String,Object>> list=new ArrayList<>();
//分别获取设置名称和图片的数组
String[] settings_name=getResources().getStringArray(R.array.setting_names);
String[] settings_images=getResources().getStringArray(R.array.setting_image);
for(int i=0;i<settings_images.length;i++){
Map<String,Object> map=new HashMap<>();
map.put("settingName",settings_name[i]);
//根据图片名称获取图片资源id
//getIdentifier(资源的名称,表示资源的类型,资源的包名)根据资源的名称和类型获取资源对应的资源id
int imageid=getResources().getIdentifier(settings_images[i],
"drawable",getPackageName());
map.put("settingImage",imageid);
list.add(map);
}
SimpleAdapter adapter=new SimpleAdapter(this,list,R.layout.list_item,
new String[]{"settingName","settingImage"},
new int[]{R.id.tv,R.id.iv});
//setAdapter(表示需要展示到列表中的适配器,表示点击item的单击事件)
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent=null;
switch (which){
case 0://wifi
intent=new Intent(Settings.ACTION_WIFI_SETTINGS);
break;
case 1://声音
intent=new Intent(Settings.ACTION_SOUND_SETTINGS);
break;
case 2:
intent=new Intent(Settings.ACTION_DATE_SETTINGS);
break;
}
startActivity(intent);
}
});
builder.create().show();
}
setSingleChoseItems(数组的资源id或者是字符串类型的数组 cursor,默认选中item的下标 都未选中-1,每项Item的点击事件); 单选列表
/*
单选列表对话框
*/
public void showSingleChoseDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("设置字体大小");
//获取字号具体大小的数组 10 20 30
final String[] fontSize=getResources().getStringArray(R.array.font_size);
//setSingleChoiceItems(表示单选列表的数据源 字符串类型的数组 数组的资源id adapter cursor
// 表示当前默认选中的item的下标 如果没有默认选中指定-1 单击监听)
builder.setSingleChoiceItems(R.array.font_name, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tv.setTextSize(Float.parseFloat(fontSize[which]));
}
});
builder.setPositiveButton("确定",null);
builder.create().show();
}
setMuliteChoseItems(数据源,boolean类型的数组 要求与数据源长度一致 表示item的选中状态 true选中
false未选中,都选item中的监听事件);
/*
多选列表对话框
*/
public void showMutiChoseDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("选择爱好");
final String[] hobbys=getResources().getStringArray(R.array.hobbys);
// boolean[] checkedItems=new boolean[hobbys.length];//fasle false false
boolean[] checkedItems={true,false,true};
//setMultiChoiceItems(表示多选列表的数据源 数组的资源id 字符串数组 cursor,
// 表示默认选中item boolean类型的数组 true表示选中 false表示未选中 null 表示默认都未选中)
builder.setMultiChoiceItems(R.array.hobbys, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
Toast.makeText(MainActivity.this,hobbys[which],Toast.LENGTH_SHORT).show();
}
}
});
builder.create().show();
}
setCustomTitle(View)设置自定义dialog的标题视图
setView(View) 设置自定义dialog的内容视图
SharedPrefences
- Sharedprefence 存储方式 共享参数
- 1.Sharedprefence文件存储以key-value形式存储成xml文件
- 2.操作Sharedprefence文件本质上就是在读写xml文件 只不过api中进行了封装
- 3.Sharedprefence主要适合存储简短的配置信息
- 4.Sharedprefence可存储的数据类型 6
String int float long boolean Set - 5.Sharedprefence文件存储的位置
data/data/应用程序包名/shared_prefs/xxxx.xml
写入:
SharedPreferences prefences=getSharedPreferences(filename,mode);
SharedPreferences prefences=getPreferences(mode);
SharedPreferences.Editor editor=prefences.edit();
editor.putXX(key,value);
editor.commit();
读取:
SharedPreferences prefences=getSharedPreferences(filename,mode);
SharedPreferences prefences=getPreferences(mode);
prefences.getXX(key)
Map<String,?> map=prefences.**getAll**();
内部存储
内部存储
1.内部存储总是可用的
2.内部存储的存储路径 data/data/应用程序包名/files
3.内部存储的文件会随着app的卸载而被删除
4.内部存储的适合场景:
如果当前的应用程序只提供给当前的app使用 使用内部存储比较适合
内部存储的写入
FileOuputStream out=openFileOutput(filename,mode)
File file=new File(getFileDir(),fileName);
FileOutputStream out=new FileOutputStream(file)
内部存储的读取
FileInputStream in=openFileInput(FileName)
File file=new File(getFileDir(),fileName);
FileInputStream in=new FileInputStream(file);
删除文件
deleteFile(filename)