第二节主要是在第一节的基础上加上事件监听,并且写了添加照片的方法。
设置按键监听主要代码如下:
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");
}
}
至此已完成照片添加功能。