首先搭建布局

主界面布局:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:orientation="horizontal" >
  5.  
  6. <LinearLayout
  7. android:id="@+id/ll"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_alignParentRight="true"
  11. android:gravity="center"
  12. android:orientation="vertical" >
  13.  
  14. <ImageView
  15. android:id="@+id/image_btn"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:background="@null"
  19. android:src="@drawable/blank" />
  20.  
  21. <Button
  22. android:id="@+id/select_btn"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:layout_below="@id/image_btn"
  26. android:layout_centerHorizontal="true"
  27. android:text="选择头像" />
  28. </LinearLayout>
  29.  
  30. <TableLayout
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content"
  33. android:layout_toLeftOf="@id/ll"
  34. android:stretchColumns="1" >
  35.  
  36. <TableRow>
  37.  
  38. <TextView android:text="用户名:" />
  39.  
  40. <EditText />
  41. </TableRow>
  42.  
  43. <TableRow>
  44.  
  45. <TextView android:text="密码:" />
  46.  
  47. <EditText />
  48. </TableRow>
  49.  
  50. <TableRow>
  51.  
  52. <TextView android:text="确认密码:" />
  53.  
  54. <EditText />
  55. </TableRow>
  56.  
  57. <TableRow>
  58.  
  59. <TextView android:text="E-mail地址:" />
  60.  
  61. <EditText />
  62. </TableRow>
  63. </TableLayout>
  64.  
  65. </RelativeLayout>

DialogActivity布局

  1. <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:columnCount="4"
  5. android:orientation="horizontal" >
  6.  
  7. <ImageView
  8. android:id="@+id/image_01"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:background="@null"
  12. android:src="@drawable/img01" />
  13.  
  14. <ImageView
  15. android:id="@+id/image_02"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:background="@null"
  19. android:src="@drawable/img02" />
  20.  
  21. <ImageView
  22. android:id="@+id/image_03"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:background="@null"
  26. android:src="@drawable/img03" />
  27.  
  28. <ImageView
  29. android:id="@+id/image_04"
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:background="@null"
  33. android:src="@drawable/img04" />
  34.  
  35. <ImageView
  36. android:id="@+id/image_05"
  37. android:layout_width="wrap_content"
  38. android:layout_height="wrap_content"
  39. android:background="@null"
  40. android:src="@drawable/img05" />
  41.  
  42. <ImageView
  43. android:id="@+id/image_06"
  44. android:layout_width="wrap_content"
  45. android:layout_height="wrap_content"
  46. android:background="@null"
  47. android:src="@drawable/img06" />
  48.  
  49. <ImageView
  50. android:id="@+id/image_07"
  51. android:layout_width="wrap_content"
  52. android:layout_height="wrap_content"
  53. android:background="@null"
  54. android:src="@drawable/img07" />
  55.  
  56. <ImageView
  57. android:id="@+id/image_08"
  58. android:layout_width="wrap_content"
  59. android:layout_height="wrap_content"
  60. android:background="@null"
  61. android:src="@drawable/img08" />
  62.  
  63. <ImageView
  64. android:id="@+id/image_09"
  65. android:layout_width="wrap_content"
  66. android:layout_height="wrap_content"
  67. android:background="@null"
  68. android:src="@drawable/img09" />
  69.  
  70. </GridLayout>

AndroidManifest.xml中注册活动

  1. <application
  2. android:allowBackup="true"
  3. android:icon="@drawable/ic_launcher"
  4. android:label="@string/app_name"
  5. android:theme="@style/AppTheme" >
  6. <activity
  7. android:name=".MainActivity"
  8. android:label="@string/app_name" >
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11.  
  12. <category android:name="android.intent.category.LAUNCHER" />
  13. </intent-filter>
  14. </activity>
  15. <activity
  16. android:name=".DialogActivity"
  17. android:label="选择头像"
  18. android:theme="@android:style/Theme.Dialog">
  19.  
  20. </activity>
  21. </application>

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

  1. import android.content.Intent;
  2. import android.os.Bundle;
  3. import android.view.View;
  4. import android.view.View.OnClickListener;
  5. import android.widget.Button;
  6. import android.widget.ImageView;
  7.  
  8. public class MainActivity extends LifeCycleActivity {
  9.  
  10. Button select;
  11. ImageView showPic;
  12.  
  13. public static final int SELECT_PIC = 1;
  14.  
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19.  
  20. select = (Button) findViewById(R.id.select_btn);
  21. showPic = (ImageView) findViewById(R.id.image_btn);
  22.  
  23. select.setOnClickListener(new OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. Intent intent = new Intent(MainActivity.this,
  27. DialogActivity.class);
  28. startActivityForResult(intent, SELECT_PIC);
  29. }
  30. });
  31.  
  32. }
  33. @Override
  34. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  35. if (requestCode == SELECT_PIC && resultCode == RESULT_OK) {
  36. int imgid = data.getIntExtra("image", -1);
  37. //更换图片
  38. if(imgid!=-1){
  39. showPic.setImageResource(imgid);
  40. }
  41. }
  42. }
  43.  
  44. }

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

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

  1. import android.content.Intent;
  2. import android.os.Bundle;
  3. import android.view.View;
  4. import android.view.View.OnClickListener;
  5. import android.widget.ImageView;
  6.  
  7. public class DialogActivity extends LifeCycleActivity {
  8.  
  9. ImageView[] iv = new ImageView[9];
  10.  
  11. // int[] ids = { R.id.image_01, R.id.image_02, R.id.image_03, R.id.image_04,
  12. // R.id.image_05, R.id.image_06, R.id.image_07, R.id.image_08,
  13. // R.id.image_09 };
  14. // int[] imgId = { R.drawable.img01, R.drawable.img02, R.drawable.img03,
  15. // R.drawable.img04, R.drawable.img05, R.drawable.img06,
  16. // R.drawable.img07, R.drawable.img08, R.drawable.img09 };
  17.  
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_dialog);
  22.  
  23. //使用反射
  24. for (int i = 0; i < iv.length; i++) {
  25. final int finalI = i+1;
  26. String name = "image_0"+finalI;
  27. try {
  28. //获取其他类
  29. Class cls = R.id.class;
  30. //获取类的属性,getField(name)获取属性,getInt(null)获取属性对应的值
  31. //null代表的是静态变量,非静态变量需要传递对象
  32. int id = cls.getField(name).getInt(null);
  33. iv[i] = (ImageView) findViewById(id);
  34. iv[i].setOnClickListener(new OnClickListener() {
  35. @Override
  36. public void onClick(View v) {
  37.  
  38. //返回数据
  39. Intent intent = getIntent();
  40. Class cls2 = R.drawable.class;
  41. try {
  42. //内部类使用外部局部变量,需要final
  43. int imgid2 = cls2.getField("img0"+finalI).getInt(null);
  44. intent.putExtra("image", imgid2);
  45. setResult(RESULT_OK, intent);
  46. finish();
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. });
  52.  
  53. } catch (Exception e) {
  54. e.printStackTrace();
  55. }
  56. }
  57.  
  58. // for (int i = 0; i < iv.length; i++) {
  59. // final int finalI = i;
  60. // //给每一个ImageView找到id
  61. // iv[i] = (ImageView) findViewById(ids[i]);
  62. // //设置点击事件监听
  63. // iv[i].setOnClickListener(new OnClickListener() {
  64. // @Override
  65. // public void onClick(View v) {
  66. // //返回数据
  67. // Intent intent = getIntent();
  68. // //内部类使用外部局部变量,需要final
  69. // intent.putExtra("image", imgId[finalI]);
  70. // setResult(RESULT_OK, intent);
  71. // finish();
  72. // }
  73. // });
  74. // }
  75. }
  76.  
  77. }

最终效果图

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. Web字体库下载及转换工具

    1.字体现在网站: http://ztxz.org/ 2.Web字体在线格式转换器: http://www.freefontconverter.com/ 3.

  2. (转)一步一步学习PHP(3)——函数

    相信每个人在学习PHP之前至少都有着一定的C语言,或者是C++/Java/C#等其他语言的基础,所以在这里也不从头开始说起,只是来谈谈PHP方法的独特之处. 1. 方法概述 首先,写一个最简单的函数, ...

  3. struts2与spring整合问题,访问struts2链接时,spring会负责创建Action

    每次访问一次链接,spring会创建一个对象,并将链接所带的参数注入到Action的变量中(如何做到的呐) 因为: struts2的action每次访问都重新创建一个对象,那spring的ioc是怎么 ...

  4. 二、C# 数据类型

    C#语言的基本类型包括8种整数类型.2种用于科学计算的二进制浮点类型.1种用于金融计算的十 进制浮点类型.1种布尔类型以及1种字符类型. 2.1 基本数值类型 C#中的基本数据类型都有关键字和它们关联 ...

  5. 通过Unity依赖注入

    前言 Unity容器的思想起始于我在为Web Client Sofitware Factory项目工作的时候,微软的patterns&practices团队已经使用依赖注入的概念好几年了在那时 ...

  6. DOM中的node与element的区别

    先看document的两个常见method. document.createTextNode Constructor: Text document.createElement Constructor: ...

  7. 你好,C++(40)7.1 一切指针都是纸老虎:彻底理解指针

    第7章 C++世界的奇人异事 在武侠小说中,初入武林的毛头小子总是要遇到几位奇人,发生几件异事,经过高人的指点,经历一番磨炼,方能武功精进,从新手成长为高手.在C++世界,同样有诸多的奇人异事.在C+ ...

  8. uva 1378 A Funny Stone Game (博弈-SG)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=41555 把第i堆的每个石子看出一堆个数为n-i的石子,转换为组合游戏 #include & ...

  9. Js点餐加减数量

    <button class="add-on" onclick="chgNum(1,'del')" ><i class="icon-m ...

  10. eval("表达式")

    eval就是把字符串转成可执行代码eval("表达式");表达式被翻译成JavaScript代码执行比如eval("alert('test')");等于aler ...