PhoneGap Andriod 图片滚动+放大插件.

来源:互联网 发布:淘宝购买记录生成器 编辑:程序博客网 时间:2024/06/06 00:41
//大家应该看过腾讯新闻的图片新闻的效果,点一张图,进入一个active.这个页图片能左右滑动,双手指放大,同时能显示当前你看的是第几张图.以下为实现代码. 
package 你的包名import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.PointF;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.os.Parcelable;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.FloatMath;import android.util.Log;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class ShowImgActivity extends Activity {private static final String LOG_TAG = "ShowImgActivity";private Toast tips;//滑屏使用private ViewPager myViewPager;private MyPagerAdapter myAdapter;private LayoutInflater mInflater;private List<View> mListViews;private View layout1 = null;private View layout2 = null;private View layout3 = null;private View layout4 = null;private View layout5 = null;private TextView topTip;private TextView Close;private Integer PicNum = 0;private Integer NowPic=0;private String Pic1="";private String Pic2="";private String Pic3="";private String Pic4="";private String Pic5="";private ImageView NewsImg1;private ImageView NewsImg2;private ImageView NewsImg3;private ImageView NewsImg4;private ImageView NewsImg5;private byte[] BImg1=null;private byte[] BImg2=null;private byte[] BImg3=null;private byte[] BImg4=null;private byte[] BImg5=null;    private final static String ALBUM_PATH = Environment.getExternalStorageDirectory() + "/";    //放大缩小使用private static final int NONE = 0;private static final int DRAG = 1;private static final int ZOOM = 2;private int mode = NONE;private float oldDist;private Matrix matrix = new Matrix();private Matrix savedMatrix = new Matrix();private PointF start = new PointF();private PointF mid = new PointF();private String dhcode = "";private String domailurl = "";/////////@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//隐藏标题this.requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏提示信息this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);super.onCreate(savedInstanceState);getWindow().setWindowAnimations(1);//去除页面载入动画(左移动)setContentView(R.layout.show_img_activity);Log.i("3333","3333");topTip=(TextView)findViewById(R.id.toptip);Close=(TextView)findViewById(R.id.close);Close.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinish();}});//获取传来的信息dhcode=this.getIntent().getStringExtra("dhbm");domailurl=this.getIntent().getStringExtra("domailurl"); PicNum = Integer.valueOf(this.getIntent().getStringExtra("picnum"));NowPic=Integer.valueOf(this.getIntent().getStringExtra("nowpic"));Pic1=this.getIntent().getStringExtra("pic1");Pic2=this.getIntent().getStringExtra("pic2");Pic3=this.getIntent().getStringExtra("pic3");Pic4=this.getIntent().getStringExtra("pic4");Pic5=this.getIntent().getStringExtra("pic5");  Log.i("Pic1",Pic1.toString());Log.i("Pic2",Pic2.toString());////////////myAdapter = new MyPagerAdapter();myViewPager = (ViewPager) findViewById(R.id.viewpagerLayout);myViewPager.setAdapter(myAdapter);mListViews = new ArrayList<View>();mInflater = getLayoutInflater();layout1 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout2 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout3 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout4 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout5 = mInflater.inflate(R.layout.show_img_draw_activity, null);if(PicNum>=1){mListViews.add(layout1);}if(PicNum>=2){mListViews.add(layout2);}if(PicNum>=3){mListViews.add(layout3);}if(PicNum>=4){mListViews.add(layout4);}if(PicNum>=5){mListViews.add(layout5);}NewsImg1=(ImageView)layout1.findViewById(R.id.bigimg);NewsImg2=(ImageView)layout2.findViewById(R.id.bigimg);NewsImg3=(ImageView)layout3.findViewById(R.id.bigimg);NewsImg4=(ImageView)layout4.findViewById(R.id.bigimg);NewsImg5=(ImageView)layout5.findViewById(R.id.bigimg);Log.i("start1","=========");////////////////滑屏使用/////////// 初始化当前显示的viewmyViewPager.setCurrentItem(NowPic-1);topTip.setText(NowPic+"/"+PicNum);myViewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {// activity从1到2滑动,2被加载后掉用此方法//View v = mListViews.get(arg0);//Log.i(LOG_TAG, String.valueOf(arg0));switch(arg0){case(0):topTip.setText("1/"+PicNum);/*NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(1):topTip.setText("2/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(2):topTip.setText("3/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(3):topTip.setText("4/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(4):topTip.setText("5/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;default:break;}NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// 从1到2滑动,在1滑动前调用Log.i(LOG_TAG, "uu"+String.valueOf(arg0));}@Overridepublic void onPageScrollStateChanged(int arg0) {}});Log.i("tiptops","=========");///////////////显示大图片1if(Pic1.equals("")){NewsImg1.setImageResource(R.drawable.nopic);}else{//填充本地图片Bitmap bm1=null;    try{    Log.i("go try 1","===========");        Log.i("album_path",ALBUM_PATH+Pic1);    Log.i("dhcode",dhcode);    Log.i("===imgpath====",ALBUM_PATH+Pic1.replace("/newsimg", "newsdetail").replace(dhcode, ""));        bm1=BitmapFactory.decodeFile(ALBUM_PATH+Pic1.replace("/newsimg", "newsdetail").replace(dhcode, ""));        }catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}           NewsImg1.setImageBitmap(bm1);    }//显示大图片2if(Pic2.equals("")){NewsImg2.setImageResource(R.drawable.nopic);}else{//填充本地图片Bitmap bm2=null;    try{    bm2=BitmapFactory.decodeFile(ALBUM_PATH+Pic2.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm2=BitmapFactory.decodeFile(ALBUM_PATH+Pic2.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}             NewsImg2.setImageBitmap(bm2);}//显示大图片3if(Pic3.equals("")){NewsImg3.setImageResource(R.drawable.nopic);}else{//填充本地图片Bitmap bm3=null;    try{    bm3=BitmapFactory.decodeFile(ALBUM_PATH+Pic3.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm3=BitmapFactory.decodeFile(ALBUM_PATH+Pic3.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}         NewsImg3.setImageBitmap(bm3);}//显示大图片4if(Pic4.equals("")){NewsImg4.setImageResource(R.drawable.nopic);}else{//填充本地图片Bitmap bm4=null;    try{    bm4=BitmapFactory.decodeFile(ALBUM_PATH+Pic4.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm4=BitmapFactory.decodeFile(ALBUM_PATH+Pic4.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}             NewsImg4.setImageBitmap(bm4);}//显示大图片5if(Pic5.equals("")){NewsImg5.setImageResource(R.drawable.nopic);}else{//填充本地图片Bitmap bm5=null;    try{    bm5=BitmapFactory.decodeFile(ALBUM_PATH+Pic5.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm5=BitmapFactory.decodeFile(ALBUM_PATH+Pic5.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}         NewsImg5.setImageBitmap(bm5);}////////////////////////放大缩小开始////////////////////////////////////////NewsImg1.setTag("1");NewsImg1.setOnTouchListener(btnListener);NewsImg2.setTag("2");NewsImg2.setOnTouchListener(btnListener);NewsImg3.setTag("3");NewsImg3.setOnTouchListener(btnListener);NewsImg4.setTag("4");NewsImg4.setOnTouchListener(btnListener);NewsImg5.setTag("5");NewsImg5.setOnTouchListener(btnListener);/*NewsImg1.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {ImageView view = (ImageView) v;switch (event.getAction() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN:savedMatrix.set(matrix);start.set(event.getX(), event.getY());mode = DRAG;break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_POINTER_UP:mode = NONE;break;case MotionEvent.ACTION_POINTER_DOWN:oldDist = spacing(event);if (oldDist > 10f) {savedMatrix.set(matrix);midPoint(mid, event);mode = ZOOM;}break;case MotionEvent.ACTION_MOVE:if (mode == DRAG) {matrix.set(savedMatrix);matrix.postTranslate(event.getX() - start.x, event.getY()- start.y);} else if (mode == ZOOM) {float newDist = spacing(event);if (newDist > 10f) {matrix.set(savedMatrix);float scale = newDist / oldDist;matrix.postScale(scale, scale, mid.x, mid.y);}}break;}view.setImageMatrix(matrix);return true;}private float spacing(MotionEvent event) {float x = event.getX(0) - event.getX(1);float y = event.getY(0) - event.getY(1);return FloatMath.sqrt(x * x + y * y);}private void midPoint(PointF point, MotionEvent event) {float x = event.getX(0) + event.getX(1);float y = event.getY(0) + event.getY(1);point.set(x / 2, y / 2);}});*/////////////////////////放大缩小end////////////////////////////////////////}////////////滑动使用///////////////////private class MyPagerAdapter extends PagerAdapter {@Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView(mListViews.get(arg1));}@Overridepublic void finishUpdate(View arg0) {}@Overridepublic int getCount() {return mListViews.size();}@Overridepublic Object instantiateItem(View arg0, int arg1) {((ViewPager) arg0).addView(mListViews.get(arg1), 0);return mListViews.get(arg1);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == (arg1);}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}}////////////滑动使用end/////////////////////显示图片Handler showImageHandler = new Handler(){public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg1.setImageBitmap(GG.ByteArrayToBitmap(BImg1));}finally{}}};//显示图片Handler showImageHandler2 = new Handler(){public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg2.setImageBitmap(GG.ByteArrayToBitmap(BImg2));}finally{}}};//显示图片Handler showImageHandler3 = new Handler(){public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg3.setImageBitmap(GG.ByteArrayToBitmap(BImg3));}finally{}}};//显示图片Handler showImageHandler4 = new Handler(){public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg4.setImageBitmap(GG.ByteArrayToBitmap(BImg4));}finally{}}};//显示图片5Handler showImageHandler5 = new Handler(){public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg5.setImageBitmap(GG.ByteArrayToBitmap(BImg5));}finally{}}};// 放大private View.OnTouchListener btnListener = new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {String newstag=v.getTag().toString();ImageView view = (ImageView) v;switch (event.getAction() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN:savedMatrix.set(matrix);start.set(event.getX(), event.getY());mode = DRAG;break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_POINTER_UP:mode = NONE;break;case MotionEvent.ACTION_POINTER_DOWN:oldDist = spacing(event);if (oldDist > 10f) {savedMatrix.set(matrix);midPoint(mid, event);mode = ZOOM;}break;case MotionEvent.ACTION_MOVE:if (mode == DRAG) {matrix.set(savedMatrix);matrix.postTranslate(event.getX() - start.x, event.getY()- start.y);} else if (mode == ZOOM) {float newDist = spacing(event);if (newDist > 10f) {matrix.set(savedMatrix);float scale = newDist / oldDist;matrix.postScale(scale, scale, mid.x, mid.y);}}break;}view.setImageMatrix(matrix);return true;}private float spacing(MotionEvent event) {float x = event.getX(0) - event.getX(1);float y = event.getY(0) - event.getY(1);return FloatMath.sqrt(x * x + y * y);}private void midPoint(PointF point, MotionEvent event) {float x = event.getX(0) + event.getX(1);float y = event.getY(0) + event.getY(1);point.set(x / 4, y / 4);}};}


不知道大家有没有见过腾讯新闻的图片新闻的效果, 一篇新闻有好几张图,点其中一张进入到图片浏览,图片可左右拖动切换,并放大.

用纯js和难实现这样的效果.只能用原生代码来实现.具体的插件制作我就不描述了.可参看之前的文章.

 

分2个程序,1是插件接口程序.ShowDetailImg.java 用来获取js传递过来的参数.

需要注意的是,在js里,我已经把图片保存到手机了.这里传递图片的地址.

package 你的包名import org.apache.cordova.api.CallbackContext;import org.apache.cordova.api.CordovaPlugin; import org.json.JSONArray;import org.json.JSONException;import android.content.Intent;import android.util.Log;public class ShowDetailImg extends CordovaPlugin {@Overridepublic boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("ShowDetailImg")) {Log.i("start","starting getpara");                 String dhbm=(String) args.get(0).toString();            String picnum=(String) args.get(1).toString();            String nowpic=(String) args.get(2).toString();            String pic1=(String) args.get(3).toString();            String pic2=(String) args.get(4).toString();            String pic3=(String) args.get(5).toString();            String pic4=(String) args.get(6).toString();            String pic5=(String) args.get(7).toString();            String domailurl=(String) args.get(8).toString();                       Intent it = new Intent(cordova.getActivity().getApplication(),ShowImgActivity.class);                         Log.i("======","============");it.putExtra("dhbm", dhbm);it.putExtra("picnum", picnum);it.putExtra("nowpic", nowpic);it.putExtra("pic1", pic1);it.putExtra("pic2", pic2);it.putExtra("pic3", pic3);it.putExtra("pic4", pic4);it.putExtra("pic5", pic5);it.putExtra("domailurl", domailurl);   Log.i("==pic1===",pic1);Log.i("end","go other activety");cordova.getActivity().startActivity(it);return true;            }                     return false;    }}

 

2.ShowImgActivity.java为具体的图片显示代码.

 

package 包名;import java.util.ArrayList;import java.util.List;import android.annotation.SuppressLint;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.PointF;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.os.Parcelable; import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.FloatMath;import android.util.Log;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;import android.widget.TextView;@SuppressLint("HandlerLeak")public class ShowImgActivity extends Activity {private static final String LOG_TAG = "ShowImgActivity";private ViewPager myViewPager;private MyPagerAdapter myAdapter;private LayoutInflater mInflater;private List<View> mListViews;private View layout1 = null;private View layout2 = null;private View layout3 = null;private View layout4 = null;private View layout5 = null;private TextView topTip;private TextView Close;private Integer PicNum = 0;private Integer NowPic=0;private String Pic1="";private String Pic2="";private String Pic3="";private String Pic4="";private String Pic5="";private ImageView NewsImg1;private ImageView NewsImg2;private ImageView NewsImg3;private ImageView NewsImg4;private ImageView NewsImg5;private byte[] BImg1=null;private byte[] BImg2=null;private byte[] BImg3=null;private byte[] BImg4=null;private byte[] BImg5=null;    private final static String ALBUM_PATH = Environment.getExternalStorageDirectory() + "/";   private static final int NONE = 0;private static final int DRAG = 1;private static final int ZOOM = 2;private int mode = NONE;private float oldDist;private Matrix matrix = new Matrix();private Matrix savedMatrix = new Matrix();private PointF start = new PointF();private PointF mid = new PointF();private String dhcode = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);super.onCreate(savedInstanceState);getWindow().setWindowAnimations(1); setContentView(R.layout.show_img_activity);Log.i("3333","3333");topTip=(TextView)findViewById(R.id.toptip);Close=(TextView)findViewById(R.id.close);Close.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}}); dhcode=this.getIntent().getStringExtra("dhbm");this.getIntent().getStringExtra("domailurl"); PicNum = Integer.valueOf(this.getIntent().getStringExtra("picnum"));NowPic=Integer.valueOf(this.getIntent().getStringExtra("nowpic"));Pic1=this.getIntent().getStringExtra("pic1");Pic2=this.getIntent().getStringExtra("pic2");Pic3=this.getIntent().getStringExtra("pic3");Pic4=this.getIntent().getStringExtra("pic4");Pic5=this.getIntent().getStringExtra("pic5");  Log.i("Pic1",Pic1.toString());Log.i("Pic2",Pic2.toString());////////////myAdapter = new MyPagerAdapter();myViewPager = (ViewPager) findViewById(R.id.viewpagerLayout);myViewPager.setAdapter(myAdapter);mListViews = new ArrayList<View>();mInflater = getLayoutInflater();layout1 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout2 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout3 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout4 = mInflater.inflate(R.layout.show_img_draw_activity, null);layout5 = mInflater.inflate(R.layout.show_img_draw_activity, null);if(PicNum>=1){mListViews.add(layout1);}if(PicNum>=2){mListViews.add(layout2);}if(PicNum>=3){mListViews.add(layout3);}if(PicNum>=4){mListViews.add(layout4);}if(PicNum>=5){mListViews.add(layout5);}NewsImg1=(ImageView)layout1.findViewById(R.id.bigimg);NewsImg2=(ImageView)layout2.findViewById(R.id.bigimg);NewsImg3=(ImageView)layout3.findViewById(R.id.bigimg);NewsImg4=(ImageView)layout4.findViewById(R.id.bigimg);NewsImg5=(ImageView)layout5.findViewById(R.id.bigimg);Log.i("start1","========="); myViewPager.setCurrentItem(NowPic-1);topTip.setText(NowPic+"/"+PicNum);myViewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) { switch(arg0){case(0):topTip.setText("1/"+PicNum);/*NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(1):topTip.setText("2/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(2):topTip.setText("3/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(3):topTip.setText("4/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg5.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;case(4):topTip.setText("5/"+PicNum);/*NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);*/matrix.set(null);matrix.reset();break;default:break;}NewsImg1.setImageMatrix(null);NewsImg2.setImageMatrix(null);NewsImg3.setImageMatrix(null);NewsImg4.setImageMatrix(null);NewsImg5.setImageMatrix(null);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) { Log.i(LOG_TAG, "uu"+String.valueOf(arg0));}@Overridepublic void onPageScrollStateChanged(int arg0) {}});Log.i("tiptops","=========");///////////// if(Pic1.equals("")){NewsImg1.setImageResource(R.drawable.nopic);}else{ Bitmap bm1=null;    try{    Log.i("go try 1","===========");        Log.i("album_path",ALBUM_PATH+Pic1);    Log.i("dhcode",dhcode);    Log.i("===imgpath====",ALBUM_PATH+Pic1.replace("/newsimg", "newsdetail").replace(dhcode, ""));        bm1=BitmapFactory.decodeFile(ALBUM_PATH+Pic1.replace("/newsimg", "newsdetail").replace(dhcode, ""));        }catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}           NewsImg1.setImageBitmap(bm1);    } if(Pic2.equals("")){NewsImg2.setImageResource(R.drawable.nopic);}else{ Bitmap bm2=null;    try{    bm2=BitmapFactory.decodeFile(ALBUM_PATH+Pic2.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm2=BitmapFactory.decodeFile(ALBUM_PATH+Pic2.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}             NewsImg2.setImageBitmap(bm2);} if(Pic3.equals("")){NewsImg3.setImageResource(R.drawable.nopic);}else{ Bitmap bm3=null;    try{    bm3=BitmapFactory.decodeFile(ALBUM_PATH+Pic3.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm3=BitmapFactory.decodeFile(ALBUM_PATH+Pic3.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}         NewsImg3.setImageBitmap(bm3);} if(Pic4.equals("")){NewsImg4.setImageResource(R.drawable.nopic);}else{ Bitmap bm4=null;    try{    bm4=BitmapFactory.decodeFile(ALBUM_PATH+Pic4.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm4=BitmapFactory.decodeFile(ALBUM_PATH+Pic4.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}             NewsImg4.setImageBitmap(bm4);} if(Pic5.equals("")){NewsImg5.setImageResource(R.drawable.nopic);}else{ Bitmap bm5=null;    try{    bm5=BitmapFactory.decodeFile(ALBUM_PATH+Pic5.replace("/newsimg", "newsdetail").replace(dhcode, ""));    //bm5=BitmapFactory.decodeFile(ALBUM_PATH+Pic5.replace(domailurl, "").replace("/newsimg", "newsdetail").replace(dhcode, ""));}catch(Exception e){Log.i(LOG_TAG,"=============="+e.getMessage().toString());}         NewsImg5.setImageBitmap(bm5);}NewsImg1.setTag("1");NewsImg1.setOnTouchListener(btnListener);NewsImg2.setTag("2");NewsImg2.setOnTouchListener(btnListener);NewsImg3.setTag("3");NewsImg3.setOnTouchListener(btnListener);NewsImg4.setTag("4");NewsImg4.setOnTouchListener(btnListener);NewsImg5.setTag("5");NewsImg5.setOnTouchListener(btnListener); } private class MyPagerAdapter extends PagerAdapter { public void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView(mListViews.get(arg1));}public void finishUpdate(View arg0) {}public int getCount() {return mListViews.size();}public Object instantiateItem(View arg0, int arg1) {((ViewPager) arg0).addView(mListViews.get(arg1), 0);return mListViews.get(arg1);}public boolean isViewFromObject(View arg0, Object arg1) {return arg0 == (arg1);}public void restoreState(Parcelable arg0, ClassLoader arg1) {}public Parcelable saveState() {return null;}public void startUpdate(View arg0) {}} Handler showImageHandler = new Handler(){@SuppressLint("HandlerLeak")public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg1.setImageBitmap(GG.ByteArrayToBitmap(BImg1));}finally{}}}; @SuppressLint({ "HandlerLeak", "HandlerLeak", "HandlerLeak" })Handler showImageHandler2 = new Handler(){@SuppressLint("HandlerLeak")public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg2.setImageBitmap(GG.ByteArrayToBitmap(BImg2));}finally{}}}; Handler showImageHandler3 = new Handler(){@SuppressLint("HandlerLeak")public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg3.setImageBitmap(GG.ByteArrayToBitmap(BImg3));}finally{}}};Handler showImageHandler4 = new Handler(){@SuppressLint({ "HandlerLeak", "HandlerLeak" })public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg4.setImageBitmap(GG.ByteArrayToBitmap(BImg4));}finally{}}};Handler showImageHandler5 = new Handler(){public void handleMessage(Message msg){super.handleMessage(msg);try{NewsImg5.setImageBitmap(GG.ByteArrayToBitmap(BImg5));}finally{}}}; private View.OnTouchListener btnListener = new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {ImageView view = (ImageView) v;switch (event.getAction() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN:savedMatrix.set(matrix);start.set(event.getX(), event.getY());mode = DRAG;break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_POINTER_UP:mode = NONE;break;case MotionEvent.ACTION_POINTER_DOWN:oldDist = spacing(event);if (oldDist > 10f) {savedMatrix.set(matrix);midPoint(mid, event);mode = ZOOM;}break;case MotionEvent.ACTION_MOVE:if (mode == DRAG) {matrix.set(savedMatrix);matrix.postTranslate(event.getX() - start.x, event.getY()- start.y);} else if (mode == ZOOM) {float newDist = spacing(event);if (newDist > 10f) {matrix.set(savedMatrix);float scale = newDist / oldDist;matrix.postScale(scale, scale, mid.x, mid.y);}}break;}view.setImageMatrix(matrix);return true;}private float spacing(MotionEvent event) {float x = event.getX(0) - event.getX(1);float y = event.getY(0) - event.getY(1);return FloatMath.sqrt(x * x + y * y);}private void midPoint(PointF point, MotionEvent event) {float x = event.getX(0) + event.getX(1);float y = event.getY(0) + event.getY(1);point.set(x / 4, y / 4);}};}


/res/layout 加入show_img_activity.xml

 

<?xml version="1.0" encoding="utf-8"?><LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:background="#000000"  android:orientation="vertical">      <LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/uptext"android:layout_alignParentLeft="true" android:layout_alignParentTop="true"><TextView    android:id="@+id/toptip"    android:layout_marginLeft="6dp"    android:layout_marginTop="3dp"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="1/1"     android:textSize="16dp"/><TextView    android:id="@+id/close"    android:layout_marginLeft="12dp"    android:layout_marginTop="3dp"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="关闭"     android:textSize="16dp"/></LinearLayout>    <LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/down"android:layout_alignParentLeft="true" android:layout_alignParentTop="true"android:orientation="vertical"><!-- top --><!-- top end-->   <android.support.v4.view.ViewPager android:id="@+id/viewpagerLayout" android:layout_height="fill_parent" android:layout_width="fill_parent"/></LinearLayout><!--底部五大按钮  -->    <!--底部五大按钮结束  -->     <!-- <FrameLayout     android:layout_width="match_parent"      android:layout_height="fill_parent"  >     <LinearLayoutandroid:id="@+id/aaa"android:layout_width="fill_parent"android:layout_height="fill_parent" android:gravity="bottom|center"><ImageView     android:id="@+id/first"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:src="@drawable/setting_verson"/></LinearLayout> </FrameLayout> --> </LinearLayout>


 

res/layot/show_img_draw_activity.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center_vertical|center_horizontal"    android:orientation="vertical"    android:padding="10dp"    android:background="#000000" >    <ImageView        android:id="@+id/bigimg"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_gravity="center_vertical|center_horizontal"        android:gravity="center_vertical|center_horizontal"        android:paddingBottom="160dp"        android:paddingTop="160dp"        android:scaleType="matrix"        android:src="@drawable/nopic" /></LinearLayout>

 

效果如下图,可左右拖动,双手指放大.当前页数,关闭按钮.


 

原创粉丝点击