简介
继续在之前基础上,添加图库功能。
mapstorageActivity
具体代码
1、在预览拍照界面上,加上图库按钮。点击该按钮则进入到图库当中。
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
...............
else if(v.getId() == 5){
if(myVariable.myMapstorageFlag == 0){
myVariable.myMapstorageFlag = 1;
}else{
myVariable.myMapstorageFlag = 0;
}
Intent intent = new Intent(MainActivity.this, mapstorageActivity.class);
startActivity(intent);
myVariable.mOpenCvCameraView.disableView();
}
}
注意在进入mapstorageActivity之后,需要使用myVariable.mOpenCvCameraView.disableView(),关闭掉camera,否则当从新返回预览拍照界面时候,出出现camera无法连接的错误。
2、mapstorageActivity中,从上到下,一共有4个可操作控件,最上方的是返回和图片选择控件。
mapvariable.myMapBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(mapstorageActivity.this, MapFilePathActivity.class);
startActivity(intent);
finish();
}
});
mapvariable.myMapChoice.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(mapvariable.imageFilePath != 100){
Intent intent = new Intent();
intent.putExtra("picNumber", mapvariable.imageCurNumber);
intent.putExtra("doPicEditing", mapvariable.adjustEdit);
Bundle b=new Bundle();
b.putStringArray("imageIds", mapvariable.imageIds);
intent.putExtras(b);
intent.setClass(mapstorageActivity.this, PicDoing.class);
mapstorageActivity.this.startActivity(intent);
finish();
}else{
Intent intent = new Intent();
intent.putExtra("PingTuPicture", mapvariable.imageIds[mapvariable.imageCurNumber]);
setResult(100, intent);
mapstorageActivity.this.finish();
}
}
});
点击返回之后,图库继续回退到MapFilePathActivity界面中。
点击选择之后,图库将当前被选择的图片,作为参数,然后进入到PicDoing界面中;另外如果解析到的imageFilePath 为100的特殊情况,则会进入一些
其他处理。
3、接着是一个ImageView的图像显示窗口,在该窗口上,将会显示出当前被选中的图片;
另外,在该窗口上左右滑动时候,会进行图片切换;在长按该窗口之后也会默认选择该图片,继续进入到PicDoing界面中。
mapvariable.mapGestureDetector = new GestureDetector(this, this);
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
if(mapvariable.imageFilePath != 100){
Intent intent = new Intent();
intent.putExtra("picNumber", mapvariable.imageCurNumber);
Bundle b=new Bundle();
b.putStringArray("imageIds", mapvariable.imageIds);
intent.putExtras(b);
intent.setClass(mapstorageActivity.this, PicDoing.class);
this.startActivity(intent);
finish();
}else{
Intent intent = new Intent();
intent.putExtra("PingTuPicture", mapvariable.imageIds[mapvariable.imageCurNumber]);
setResult(100, intent);
mapstorageActivity.this.finish();
}
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
if(e1.getX() - e2.getX() > mapvariable.mapFilpDistance){
if(mapvariable.imageCurNumber < mapvariable.imageNumber - 1){
mapvariable.imageCurNumber += 1;
}
Bitmap bitmap = mapvariable.mapimageScane.getLoacalBitmap(mapvariable.imageIds[mapvariable.imageCurNumber]);
mapvariable.mapStorageImageView_1.setImageBitmap(bitmap);
}
if(e2.getX() - e1.getX() > mapvariable.mapFilpDistance){
if(mapvariable.imageCurNumber > 0){
mapvariable.imageCurNumber -= 1;
}
Bitmap bitmap = mapvariable.mapimageScane.getLoacalBitmap(mapvariable.imageIds[mapvariable.imageCurNumber]);
mapvariable.mapStorageImageView_1.setImageBitmap(bitmap);
}
return true;
}
这里注册了一个手势操作GestureDetector,onFling表示为滑动,根据检查出来的左右滑动,切换显示选中的图片。
4、最下面是一个Gallery组件,当前目录下的所有图片都导入进去,当滑动gallery的时候,同样对应更新选中的图片,并imageview中显示出来。
5、当进入mapstorageActivity,但是mycamera并没有图片的时候,会进入到nopictue的布局,点击中间的camera图片,会重新退回到预览拍照界面。
@Override
public void onClick(View v) {
if(v.getId() == 0){
finish();
}
}
public void noPicture(mapVariable mapvariable,Context context, MapButtonListener btnFirstMapMenu){
LinearLayout.LayoutParams lp;
mapvariable.retBtnCamera = new ImageButton(context);
mapvariable.retBtnCamera .setId(0);
mapvariable.retBtnCamera.setImageResource(R.drawable.image_picture);
lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, 1);
mapvariable.retBtnCamera.setLayoutParams(lp);
mapvariable.retBtnCamera.setBackgroundColor(Color.BLACK);
mapvariable.retBtnCamera.setOnClickListener(btnFirstMapMenu);
mapvariable.retBtnCamera.setOnTouchListener(btnFirstMapMenu);
}
效果演示
效果截图如下:
(没有图片) (正常图库)
MapFilePathActivity
1、在最顶部有一个返回控件,点击之后,会退回到预览拍照界面。
mapFilePathVariable.myMapFilePathBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MapFilePathActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
2、接着是图片选择的文件夹目录选项,当前有mycamera和secret两个目录,点击对应选项,进入到mapstorageActivity界面,显示出该目录的图片信息。
class MapButtonListener implements OnClickListener, OnTouchListener{
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg0.getId() == 0){
Intent intent = new Intent();
intent.putExtra("GridViewMycameraPicNumber", mapFilePathVariable.myMapFilePath_mycamera_number);
intent.putExtra("GridViewSecretPicNumber", mapFilePathVariable.myMapFilePath_secret_number);
intent.putExtra("curFilePath", arg0.getId());
Bundle b=new Bundle();
b.putStringArray("mapstroaImageIds", mapFilePathVariable.imageIds);
intent.putExtras(b);
intent.setClass(MapFilePathActivity.this, mapstorageActivity.class);
MapFilePathActivity.this.startActivity(intent);
finish();
}else if(arg0.getId() == 1){
Intent intent = new Intent();
intent.putExtra("mapstroaMycameraPicNumber", mapFilePathVariable.myMapFilePath_mycamera_number);
intent.putExtra("mapstroaSecretPicNumber", mapFilePathVariable.myMapFilePath_secret_number);
intent.putExtra("curFilePath", arg0.getId());
Bundle b=new Bundle();
b.putStringArray("mapstroaImageIds", mapFilePathVariable.imageIds);
intent.putExtras(b);
intent.setClass(MapFilePathActivity.this, mapstorageActivity.class);
MapFilePathActivity.this.startActivity(intent);
finish();
}
// TODO Auto-generated method stub
return false;
}
有设置目录mycamera的ID为0,secret目录的ID为1。
效果演示
效果截图如下:
(图片目录选择)
具体演示下载:http://download.csdn.net/detail/u011630458/9261617