Dialog、SharedPreferences、内部存储

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值