运用ImageButton编写选择头像小程序

2024-02-02 16:58

本文主要是介绍运用ImageButton编写选择头像小程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现下列图的效果:

 

首先,进行布局activity_select_image.xml中的代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" android:background="#000000"android:orientation="horizontal"><ImageButtonandroid:id="@+id/image"android:layout_width="80dp"android:layout_height="80dp"android:contentDescription="@drawable/ic_launcher"android:src="@drawable/ic_launcher" /><EditText android:id="@+id/text"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="text"/></LinearLayout>

在添加一个xml文件(dialog. xml),代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Galleryandroid:id="@+id/gallery"android:layout_width="fill_parent"android:layout_height="80dp"android:layout_centerHorizontal="true"android:layout_centerVertical="true"></Gallery><ImageSwitcherandroid:id="@+id/imageswitch"android:layout_width="60dp"android:layout_height="60dp"android:layout_centerHorizontal="true"android:layout_centerVertical="true"></ImageSwitcher></RelativeLayout>


主要的Activity(SelectImageActivity.java)中代码如下:

package com.bzu.selectimage.activity;import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;public class SelectImageActivity extends Activity {private ImageButton imageButton;private Gallery gallery;private ImageSwitcher imageSwitcher;// 定义图片数组private int[] pics;private int num;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_select_image);imageButton = (ImageButton) this.findViewById(R.id.image);pics = new int[] { R.drawable.star0, R.drawable.star1,R.drawable.star2, R.drawable.star3, R.drawable.star4,R.drawable.star5 };imageButton.setOnClickListener(new OnClickListener() {public void onClick(View v) {// Inflator在android中建立了资源文件到对象的桥梁LayoutInflater layoutInflater = LayoutInflater.from(SelectImageActivity.this);// 得到自定义的对话框View dialogView = layoutInflater.inflate(R.layout.dialog, null);AlertDialog.Builder dialog = new AlertDialog.Builder(SelectImageActivity.this);dialog.setTitle("请选择头像:");dialog.setPositiveButton("确定",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {imageButton.setImageResource(pics[num]);}});dialog.setNegativeButton("取消",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {}});gallery = (Gallery) dialogView.findViewById(R.id.gallery);imageSwitcher = (ImageSwitcher) dialogView.findViewById(R.id.imageswitch);gallery.setAdapter(new Adapter(SelectImageActivity.this));gallery.setSelection(pics.length/2);gallery.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapter, View view,int position, long id) {num = position;imageSwitcher.setImageResource(pics[num]);}});imageSwitcher.setFactory(new ViewFactory() {@Overridepublic View makeView() {ImageView imageView = new ImageView(SelectImageActivity.this);imageView.setLayoutParams(new ImageSwitcher.LayoutParams(80,80));// 设置显示图片的大小return imageView;}});dialog.setView(dialogView);dialog.create().show();}});}private class Adapter extends BaseAdapter {private Context context;public Adapter(Context context) {this.context = context;}public int getCount() {return pics.length;}public Object getItem(int position) {return pics[position];}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {ImageView imageView = new ImageView(SelectImageActivity.this);imageView.setImageResource(pics[position]);// 设置图片大小自适应imageView.setAdjustViewBounds(true);imageView.setLayoutParams(new Gallery.LayoutParams(60, 60));// 设置显示图片的大小imageView.setPadding(15, 10, 15, 10);// 设置四边的距离return imageView;}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_select_image, menu);return true;}}



 

这篇关于运用ImageButton编写选择头像小程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/671367

相关文章

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Swagger在java中的运用及常见问题解决

《Swagger在java中的运用及常见问题解决》Swagger插件是一款深受Java开发者喜爱的工具,它在前后端分离的开发模式下发挥着重要作用,:本文主要介绍Swagger在java中的运用及常... 目录前言1. Swagger 的主要功能1.1 交互式 API 文档1.2 客户端 SDK 生成1.3

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动