首先搭建布局

主界面布局:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="center"
android:orientation="vertical" > <ImageView
android:id="@+id/image_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/blank" /> <Button
android:id="@+id/select_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/image_btn"
android:layout_centerHorizontal="true"
android:text="选择头像" />
</LinearLayout> <TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/ll"
android:stretchColumns="1" > <TableRow> <TextView android:text="用户名:" /> <EditText />
</TableRow> <TableRow> <TextView android:text="密码:" /> <EditText />
</TableRow> <TableRow> <TextView android:text="确认密码:" /> <EditText />
</TableRow> <TableRow> <TextView android:text="E-mail地址:" /> <EditText />
</TableRow>
</TableLayout> </RelativeLayout>

DialogActivity布局

 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="4"
android:orientation="horizontal" > <ImageView
android:id="@+id/image_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img01" /> <ImageView
android:id="@+id/image_02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img02" /> <ImageView
android:id="@+id/image_03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img03" /> <ImageView
android:id="@+id/image_04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img04" /> <ImageView
android:id="@+id/image_05"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img05" /> <ImageView
android:id="@+id/image_06"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img06" /> <ImageView
android:id="@+id/image_07"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img07" /> <ImageView
android:id="@+id/image_08"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img08" /> <ImageView
android:id="@+id/image_09"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/img09" /> </GridLayout>

AndroidManifest.xml中注册活动

  <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DialogActivity"
android:label="选择头像"
android:theme="@android:style/Theme.Dialog"> </activity>
</application>

MainActivity主活动加载布局,点击事件,接收返回的结果

 import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends LifeCycleActivity { Button select;
ImageView showPic; public static final int SELECT_PIC = 1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); select = (Button) findViewById(R.id.select_btn);
showPic = (ImageView) findViewById(R.id.image_btn); select.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
DialogActivity.class);
startActivityForResult(intent, SELECT_PIC);
}
}); }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SELECT_PIC && resultCode == RESULT_OK) {
int imgid = data.getIntExtra("image", -1);
//更换图片
if(imgid!=-1){
showPic.setImageResource(imgid);
}
}
} }

DialogActivity活动加载布局,返回数据

这里使用两种方式,一种是使用数据,一种是使用反射

 import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView; public class DialogActivity extends LifeCycleActivity { ImageView[] iv = new ImageView[9]; // int[] ids = { R.id.image_01, R.id.image_02, R.id.image_03, R.id.image_04,
// R.id.image_05, R.id.image_06, R.id.image_07, R.id.image_08,
// R.id.image_09 };
// int[] imgId = { R.drawable.img01, R.drawable.img02, R.drawable.img03,
// R.drawable.img04, R.drawable.img05, R.drawable.img06,
// R.drawable.img07, R.drawable.img08, R.drawable.img09 }; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog); //使用反射
for (int i = 0; i < iv.length; i++) {
final int finalI = i+1;
String name = "image_0"+finalI;
try {
//获取其他类
Class cls = R.id.class;
//获取类的属性,getField(name)获取属性,getInt(null)获取属性对应的值
//null代表的是静态变量,非静态变量需要传递对象
int id = cls.getField(name).getInt(null);
iv[i] = (ImageView) findViewById(id);
iv[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) { //返回数据
Intent intent = getIntent();
Class cls2 = R.drawable.class;
try {
//内部类使用外部局部变量,需要final
int imgid2 = cls2.getField("img0"+finalI).getInt(null);
intent.putExtra("image", imgid2);
setResult(RESULT_OK, intent);
finish();
} catch (Exception e) {
e.printStackTrace();
}
}
}); } catch (Exception e) {
e.printStackTrace();
}
} // for (int i = 0; i < iv.length; i++) {
// final int finalI = i;
// //给每一个ImageView找到id
// iv[i] = (ImageView) findViewById(ids[i]);
// //设置点击事件监听
// iv[i].setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// //返回数据
// Intent intent = getIntent();
// //内部类使用外部局部变量,需要final
// intent.putExtra("image", imgId[finalI]);
// setResult(RESULT_OK, intent);
// finish();
// }
// });
// }
} }

最终效果图

Android ImageView 点击更换头像的更多相关文章

  1. PHP - 点击更换头像

    原理: 操作流程: 首先点击头像图片,弹出选择窗口,选中其中一个则窗口推出头像更换. 效果: 主页面代码: <tr> <td>头像:</td> <td> ...

  2. Android ImageView点击效果

    ImageView设置点击效果需要注意两点,第一个设置android:clickable="true",第二个 <item android:drawable="@d ...

  3. Android自定义控件实例,圆形头像(图库 + 裁剪+设置),上传头像显示为圆形,附源码

    Android项目开发中经常会遇见需要实现圆角或者圆形的图片功能,如果仅仅使用系统自带的ImageView控件显然无法实现此功能,所以通过系列文章的形式由简到繁全方位的介绍一下此功能的实现,巩固一下自 ...

  4. Android ImageView圆形头像

    转载自:http://m.oschina.net/blog/321024 Android ImageView圆形头像 图片完全解析 我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ.用户在用 ...

  5. 5分钟实现Android中更换头像功能

    写在前面:更换头像这个功能在用户界面几乎是100%出现的.通过拍摄照片或者调用图库中的图片,并且进行剪裁,来进行头像的设置.功能相关截图如下: 下面我们直接看看完整代码吧: 1 2 3 4 5 6 7 ...

  6. 【转】Android ImageView圆形头像

    Android ImageView圆形头像 图片完全解析 我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ.用户在用QQ更换头像的时候,上传的图片都是矩形的,但显示的时候确是圆形的. 原理: ...

  7. Android图片上传(头像裁切+原图原样)

    下面简单铺一下代码: (一)头像裁切.上传服务器(代码) 这里上边的按钮是头像的点击事件,弹出底部的头像选择框,下边的按钮跳到下个页面,进行原图上传. ? 1 2 3 4 5 6 7 8 9 10 1 ...

  8. Android实现类似换QQ头像功能(图片裁剪)

    现在几乎所有的App都有用户登录模块,需要设置用户头像,而关于用户头像部分无疑也是比较头疼的,目前大部分应用的头像部分会有两种方式:一种是利用系统的裁剪功能去获取用户头像,一种就是获取到图片或者照片的 ...

  9. Android ImageView显示本地图片

    Android ImageView 显示本地图片 布局文件 <?xml version="1.0" encoding="utf-8"?> <R ...

随机推荐

  1. linux之umask函数解析

    [lingyun@localhost umask_1]$ vim umask.c  + umask.c                                                 ...

  2. Java学习----设计正真的应用程序

    import java.util.Scanner; // 输入10位学生的成绩,并且判断他们的成绩是哪个等级,其中90-100是A级,80-89是B级,70-79是C级,60-69是D级,60分以下E ...

  3. windows8.1 下搭建配置apache+php+mysql

    软件版本: apache:Apache 2.4.10 Win64    http://www.apachelounge.com/download/VC11/binaries/httpd-2.4.10- ...

  4. 【转】.NET开发者必备的11款免费工具

    摘要:本文介绍一些最适合.NET开发人员简化Web开发的最佳工具,这些工具都是开源的,有的开发工具你既可以从网上下载可执行文件,也可以下载源代码.一些工具拥有可扩展的框架,是一个持续集成工具. 原文链 ...

  5. python运维开发之第八天(socket)

    什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. soc ...

  6. Python新手学习基础之函数-可变参数**

    可变参数( ** ) 讲好了一颗*,那如果函数的最后一个参数带有 ** 前缀: 所有正常参数之外的其他的关键字参数都将被放置在一个字典中传递给函数. 要好好理解* 和 ** 两种可变参数哦~ 看个** ...

  7. poj1159 Palindrome

    G - 回文串 Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u   Descripti ...

  8. 【PRO ASP.NE MVC4 学习札记】使用Moq辅助进行单元测试

    清楚问题所在: 先开个头,当我们对A进行单元测试时,可能会发现A的实现必须要依赖B.这时,我们在写单元测试时,就必须先创建B的实例,然后把B传给A再建立A的实例进行测试. 这样就会出现一些问题: 1. ...

  9. java线程同步问题

    Java面试当中,线程可以说是必考内容,在看面试题的时候发现一遍很全的讲解Java面试题的博客:http://blog.csdn.net/csh624366188/article/details/80 ...

  10. Ant快速入门(四)-----Ant的任务(Task)

    到目前为止,我们已经掌握了Ant生成文件的基本结构,以及<project.../>,<target.../>,<property.../>等元素的配置方式.而< ...