多功能记事本开发之路——02 实现事件监听器







   第二节主要是在第一节的基础上加上事件监听,并且写了添加照片的方法。


  设置按键监听主要代码如下: 

class ClickEvent implements OnClickListener{
		@Override
		public void onClick(View v) {
			switch(v.getId()){
			case R.id.bt_back :
				//当前Activity结束,则返回上一个Activity
				AddActivity.this.finish();
				break;
				//将记事添加到数据库中 
			case R.id.bt_save :
			}
		}
	}

 只写出了添加的照片的时间监听:

//设置菜单项监听器
		class MenuClickEvent implements OnItemClickListener{

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
				Intent intent;
				switch(position){
				//手写
				case 0:
					
				//绘图
				case 1:

				//语音
				case 2:

				//照片 
				case 3:
					//添加图片的主要代码 
					intent = new Intent();
					//设定类型为image
					intent.setType("image/*");
					//设置action
					intent.setAction(Intent.ACTION_GET_CONTENT);
					//选中相片后返回本Activity
					startActivityForResult(intent, 1);
					break;
				//拍照
				case 4 :
				

				
				//附件
				case 5 :
				
					
				}

			}
		}

因为用了startActivityForResult方法,所以需要实现onActivityResult方法,在该方法中将返回的照片添加在EditText中,在这里面也实现了对图片的等比例缩放,以至于不会充满整个屏幕,添加照片的主要方法体:


		protected void onActivityResult(int requestCode, int resultCode, Intent data) {
			super.onActivityResult(requestCode, resultCode, data);
			if(resultCode == RESULT_OK){
				//取得数据
				Uri uri = data.getData();
				ContentResolver cr = AddActivity.this.getContentResolver();
				Bitmap bitmap = null;
				Bundle extras = null;
				//如果是选择照片
				if(requestCode == 1){
					
					try {
						//将对象存入Bitmap中 
						bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
						
						
					} catch (FileNotFoundException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				
				int imgWidth = bitmap.getWidth();
				int imgHeight = bitmap.getHeight();
				double partion = imgWidth*1.0/imgHeight;
				double sqrtLength = Math.sqrt(partion*partion + 1);
				//新的缩略图大小
				double newImgW = 320*(partion / sqrtLength);
				double newImgH = 320*(1 / sqrtLength);
				float scaleW = (float) (newImgW/imgWidth);
				float scaleH = (float) (newImgH/imgHeight);
				
				Matrix mx = new Matrix();
				//对原图片进行缩放
				mx.postScale(scaleW, scaleH);
				bitmap = Bitmap.createBitmap(bitmap, 0, 0, imgWidth, imgHeight, mx, true);
				final ImageSpan imageSpan = new ImageSpan(this,bitmap);
				SpannableString spannableString = new SpannableString("test");
				spannableString.setSpan(imageSpan, 0, spannableString.length(), SpannableString.SPAN_MARK_MARK);
				//光标移到下一行
				et_Notes.append("\n");
				Editable editable = et_Notes.getEditableText();
				int selectionIndex = et_Notes.getSelectionStart();
				spannableString.getSpans(0, spannableString.length(), ImageSpan.class);
				
				//将图片添加进EditText中
				editable.insert(selectionIndex, spannableString);
				//添加图片后自动空出两行 
				et_Notes.append("\n\n");
			}
		}


至此已完成照片添加功能。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值