Android ImageView 点击更换头像

首先搭建布局
主界面布局:
<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 点击更换头像的更多相关文章
- PHP - 点击更换头像
原理: 操作流程: 首先点击头像图片,弹出选择窗口,选中其中一个则窗口推出头像更换. 效果: 主页面代码: <tr> <td>头像:</td> <td> ...
- Android ImageView点击效果
ImageView设置点击效果需要注意两点,第一个设置android:clickable="true",第二个 <item android:drawable="@d ...
- Android自定义控件实例,圆形头像(图库 + 裁剪+设置),上传头像显示为圆形,附源码
Android项目开发中经常会遇见需要实现圆角或者圆形的图片功能,如果仅仅使用系统自带的ImageView控件显然无法实现此功能,所以通过系列文章的形式由简到繁全方位的介绍一下此功能的实现,巩固一下自 ...
- Android ImageView圆形头像
转载自:http://m.oschina.net/blog/321024 Android ImageView圆形头像 图片完全解析 我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ.用户在用 ...
- 5分钟实现Android中更换头像功能
写在前面:更换头像这个功能在用户界面几乎是100%出现的.通过拍摄照片或者调用图库中的图片,并且进行剪裁,来进行头像的设置.功能相关截图如下: 下面我们直接看看完整代码吧: 1 2 3 4 5 6 7 ...
- 【转】Android ImageView圆形头像
Android ImageView圆形头像 图片完全解析 我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ.用户在用QQ更换头像的时候,上传的图片都是矩形的,但显示的时候确是圆形的. 原理: ...
- Android图片上传(头像裁切+原图原样)
下面简单铺一下代码: (一)头像裁切.上传服务器(代码) 这里上边的按钮是头像的点击事件,弹出底部的头像选择框,下边的按钮跳到下个页面,进行原图上传. ? 1 2 3 4 5 6 7 8 9 10 1 ...
- Android实现类似换QQ头像功能(图片裁剪)
现在几乎所有的App都有用户登录模块,需要设置用户头像,而关于用户头像部分无疑也是比较头疼的,目前大部分应用的头像部分会有两种方式:一种是利用系统的裁剪功能去获取用户头像,一种就是获取到图片或者照片的 ...
- Android ImageView显示本地图片
Android ImageView 显示本地图片 布局文件 <?xml version="1.0" encoding="utf-8"?> <R ...
随机推荐
- 新建android系统服务
一.Android系统服务 Android提供了很多系统服务:如ActivityManger,PowerManger,WindowManger,WifiManger等等. 这些服务都是系统启动开始就一 ...
- oracle 添加表分区
alter table DF_WRITE_FILES_H add partition DF_WRITE_FILES_H96 values less than (201512) tablespace T ...
- UIScrollView设置了contentSize后还是没办法滚动?
1.最常见的原因是 contentSize 这个属性,比uiscrollview的frame要小, 无需滚动, 自然就滚动不了. scrollenabled 这个属性,标识着是否允许滚动,要言设成ye ...
- 01.Net入门知识
1..Net学习路线及几个容易混淆的概念 .Net只是一个平台,提供运行.Net程序需要的虚拟机.类库等 C#就是.Net平台下的一个开发语言,.Net下的语言还有VB.Net.PowerShell等 ...
- 正则表达式 U贪婪模式
<?php/*模式修正符号: i u 位置:"//模式修正符位置" 可以一次使用一个,也可以一次使用多个 对整个正则表达式调优用的,也可以说是对正则表达式功能的扩展 &quo ...
- bootstrap瀑布流代码
<extend name="Base/common" /> <block name="search-cate"> <include ...
- Ecshop后台菜单添加
首先需要修改四个文件:inc_priv.php, inc_menu.php, priv_action.php, commn.php 假如当前的项要加在商品管理的菜单下 一:在languages/zh_ ...
- php 带cookie登陆
<?php /** * @version $id */ define('SCRIPT_ROOT',dirname(__FILE__).'/'); $act = trim($_REQUEST['a ...
- Python使用Pygame.mixer播放音乐
Python使用Pygame.mixer播放音乐 frequency这里是调频率... 播放网络中的音频: #!/usr/bin/env python # -*- coding: utf-8 -*- ...
- 初识MVC模式
一.概念:MVC是 模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工. 二.问题描述:通过一个简单的例子(计算圆面积)来体会MVC模式和普通的s ...