首页 > 代码库 > Android ImageView 点击更换头像
Android ImageView 点击更换头像
首先搭建布局
主界面布局:
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 <ImageView15 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 <Button22 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 <TableLayout31 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 <ImageView15 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 <ImageView22 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 <ImageView29 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 <ImageView36 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 <ImageView43 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 <ImageView50 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 <ImageView57 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 <ImageView64 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 @Override16 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 @Override25 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 @Override34 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 }45 46
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 @Override19 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 @Override36 public void onClick(View v) {37 38 //返回数据39 Intent intent = getIntent();40 Class cls2 = R.drawable.class;41 try {42 //内部类使用外部局部变量,需要final43 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找到id61 // iv[i] = (ImageView) findViewById(ids[i]);62 // //设置点击事件监听63 // iv[i].setOnClickListener(new OnClickListener() {64 // @Override65 // public void onClick(View v) {66 // //返回数据67 // Intent intent = getIntent();68 // //内部类使用外部局部变量,需要final69 // intent.putExtra("image", imgId[finalI]);70 // setResult(RESULT_OK, intent);71 // finish();72 // }73 // });74 // }75 }76 77 }
最终效果图
Android ImageView 点击更换头像
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。