Android Studio 实现注册界面选择头像功能{记录4}{使用GridView控件}


功能需求:在用户注册界面中,增加头像选择功能

使用GridView控件

1.从用户注册界面,点击选择头像,跳转到头像选择界面

2.头像选择界面中,以网格形式显示系统内置头像

3.在头像选择界面中,点击头像后,返回用户注册界面,并显示所选择的头像

   

1.创建注册界面的xml文件register.xml

增加选择头像的按钮

代码为:

<?xml version="1.0" encoding="utf-8"?>


    

        

            

                

                
            
            

                

                
                


            

            

                

                
            

            

                

                
            

            

                

                

            

            

                

                

                    

                    
                

            

            

            

效果如图:

2.创建GridView文件activity_grid.xml

用于以网格形式显示图片

代码如下:

<?xml version="1.0" encoding="utf-8"?>


    

效果图:

3.创建grid_item.xml用于图片展示

代码如下:

<?xml version="1.0" encoding="utf-8"?>


    

效果图:

4.创建RegActivity.java文件

用于跳转选择界面和获取数据

代码如下:

package com.example.gridviewtest;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class RegActivity extends AppCompatActivity {
ImageView iv;
Button btn_choose;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        iv=(ImageView) findViewById(R.id.reg_img);
        btn_choose=(Button)findViewById(R.id.btn_choose);
            btn_choose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent= new Intent(RegActivity.this,MainActivity.class);
                startActivityForResult(intent,12);
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==12||resultCode==21)
        {
            iv.setImageResource(data.getIntExtra("img",R.mipmap.f1));
        }
    }
}

5.创建MainActivity.java

用于将grid_item.xml链接到activity_grid.xml以自动获取图片并显示为网格形式

并且返回数据给RegActivity

代码如下:

package com.example.gridviewtest;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
GridView gv;
SimpleAdapter sa;
List> list;
//创建图片数组,R.mipmap.图片名
int[] imgs={R.mipmap.f1,R.mipmap.f2,R.mipmap.f3,R.mipmap.f4,R.mipmap.j1,R.mipmap.j2,R.mipmap.nv1,R.mipmap.nv2,R.mipmap.nv3,R.mipmap.nv4,R.mipmap.nv5,R.mipmap.nv6,R.mipmap.nv7,R.mipmap.nv8};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grid);
        gv=(GridView) findViewById(R.id.gv_touxiang);
        list=new ArrayList>();
        for (int i=0;i map=new HashMap();
         map.put("img",imgs[i]);
         list.add(map);
        }
        sa=new SimpleAdapter(this,list,R.layout.grid_item,new String[]{"img"},new int[]{R.id.iv_item});
        gv.setAdapter(sa);
        gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Map map=(Map) adapterView.getItemAtPosition(i);
                int choice=(int) map.get("img");
                Intent intent=new Intent();
                intent.putExtra("img",choice);
                setResult(21,intent);
                finish();
            }
        });
    }

效果如下: