android实现动态相册浏览图片
上一篇:http://www.zzzyk.com/kf/201201/116591.html上一篇文章基本上实现了图片的拖拉 放大等更能, 有缺点,经过今天的测试发现bug 不少:
一是: 在拖动的过程中效果很生硬,没有上一张下一张的效果 :下面将采用动画效果实现。
二是:在动态过去图片的过程浏览的过程中下一张浏览的信息依然保留了上一张图片图片浏览的信息,比如,我把上一张图片进行了放大的查看,而在拖动下一张查看的时候出现了上一上浏览的时的矩阵状态,放大的状态,原因是:没有进行初始化新图片信息。
三是:从服务器获取图片时候,有时候是获取不到图片,对获取不到图片进行的权限控制操作。
四是: 程序快速拖动查看图片的时很容易出现 内存溢出的问题 原因:没有对bitmap进行有效的释放,合理合时的的释放。
因为时间关系:先回家了,服务器也挂了,截图又不能给上传给你们看了,这是我写的,可能写的不是很好,忘指教
[java]
package com.jh.dongyi.activity;
import java.util.ArrayList;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.util.FloatMath;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.ImageView.ScaleType;
import com.jh.dongyi.entity.ProjectImage;
import com.jh.dongyi.enumate.CustomerType;
import com.jh.dongyi.impl.DBFunction;
import com.jh.dongyi.util.BaseActivity;
import com.jh.dongyi.util.Configuration;
import com.jh.dongyi.util.ImageFactory;
import com.jh.dongyi.util.POAException;
import com.jh.dongyi.util.TakePhotoListener;
/**
*
* <code>LocalePicDatailsActivity</code>
* @description: TODO(查看原始图片信息)
* @version 1.0
* @author liaoyp
* @since 2011-12-14
*/
public class LocalePicDatailsActivity extends BaseActivity implements OnTouchListener {
private Button bt_back;
private Button im_take_photo;
private TextView title;
private Button bt_save;
// 材料科
private TextView tv_photo_type;
// 工程部-巡检 熊洋亭//上传于 2009-8-7 14:54
private TextView tv_photo_job;
private ProjectImage projectImage;
private ProgressBar loadingpb;
private String path;
private Bitmap bitmap;
private ImageView iv_work_photo;
private Bundle bundle;
// 是否下载图片
private boolean download =true;;
// 动画显示
private boolean isShowNext =true;;
// 手势监听
//private GestureDetector gestureDetector;
//图像矩阵
Matrix matrix = new Matrix();
//Matrix savedMatrix = new Matrix();
// 记录第一个点
PointF first = new PointF();
PointF start = new PointF();
PointF mid = new PointF();
private float oldDist;
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;
private long beginTime,endTime;
//禁止拖动扩大
boolean forbidZoom =true;
// 当前点击的是哪一张照片的位置
private int position;
// 所有图片列表
private ArrayList<ProjectImage> projectImageList;
// 是否是客户
private boolean isCustomer;
// 拍照
private TakePhotoListener photoListener;
// 数据库
private DBFunction function;
// 设备高 宽
int dwidth ,dheight;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what == 10){
loadingpb.setVisibility(View.GONE);
if(bitmap != null){
forbidZoom = true;
// 在下载完图片后初始画后一张图片的矩阵信息,对找不到服务器上的图片在本地进行默认图片替换 同时对其进行权限控制,使其不能扩大 缩小,拖动
[java]
initScaleBitmap(bitmap,true);
//iv_work_photo.setImageBitmap(bitmap);
}else{
forbidZoom = false;
//iv_work_photo.setImageResource(R.drawable.file_broken);
initScaleBitmap(bitmap,false);
showToast("加载错误!");
}
}else{
&nb
补充:移动开发 , Android ,