Android开发(4):个人信息修改个人信息,修改头像设计

本文详述了在Android开发中如何实现个人信息的修改,包括性别、生日和地址选择,以及头像的选取。利用OptionPickerView库创建信息选择框,并通过popupwindows展示相册和拍照选项。头像修改功能支持从相册选取和拍照,代码实现逻辑清晰,适合开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Github地址:美食分享平台,欢迎star和fork
注:本文只包括活动的设计和头像组件的引用,不包括界面xml的设计,界面设计具体详见Android开发(3):个人信息界面设计

效果图

在这里插入图片描述

思路

在上面的界面设计的基础上,这次任务主要分成两个大方面:照片和信息选择框。

  • 照片主要是使用Android原生的读取图片的方式,相册和拍照的选择框是使用popupwindows的方式展示;
  • 信息选择框弹出的框可以使用开源库OptionPickerView
  • 至于修改昵称的,因为的新建一个界面,比较简单,本文就没有叙述。

一、信息选择框

在开始之前,首先要去学习一个开源库OptionPickerView的使用方法,这种库可以很简单是实现那个选择框的样式。

1. 初始化信息

这一步就是每个人应该修改的地方,就是点击之后弹出来的信息不同。然后将下面的initOptionData加入到onCreate方法中。

    //初始化性别、地址和生日的数据
    private void initOptionData(){
        //性别选择器数据
        optionsItems_gender.add(new String("保密"));
        optionsItems_gender.add(new String("男"));
        optionsItems_gender.add(new String("女"));

        //地址选择器数据
        String province_data = readJsonFile("province.json");
        String city_data = readJsonFile("city.json");

        Gson gson = new Gson();

        options1Items = gson.fromJson(province_data, new TypeToken<ArrayList<ProvinceBean>>(){}.getType());
        ArrayList<CityBean> cityBean_data = gson.fromJson(city_data, new TypeToken<ArrayList<CityBean>>(){}.getType());
        for(ProvinceBean provinceBean:options1Items){
            ArrayList<String> temp = new ArrayList<>();
            for (CityBean cityBean : cityBean_data){
                if(provinceBean.getProvince().equals(cityBean.getProvince())){
                    temp.add(cityBean.getName());
                }
            }
            options2Items.add(temp);
        }

    }

其中用到的readjson函数如下。但是在使用的时候需要主要把这两个json文件放在assets文件夹之中,如果不需要选地址或者json文件格式不同,可以自行修改读取方式。我使用的json文件可以在这个参考链接中下载,两个文件名字分别对应的文件。https://juejin.im/post/5de5f42cf265da05c621133a

    //传入:asset文件夹中json文件名
    //返回:读取的String
    private String readJsonFile(String file){
        StringBuilder newstringBuilder = new StringBuilder();
        try {
            InputStream inputStream = getResources().getAssets().open(file);

            InputStreamReader isr = new InputStreamReader(inputStream);

            BufferedReader reader = new BufferedReader(isr);

            String jsonLine;
            while ((jsonLine = reader.readLine()) != null) {
                newstringBuilder.append(jsonLine);
            }
            reader.close();
            isr.close();
          
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值