现在的位置: 首页 > 综合 > 正文

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

2013年06月05日 ⁄ 综合 ⁄ 共 27274字 ⁄ 字号 评论关闭
//大家应该看过腾讯新闻的图片新闻的效果,点一张图,进入一个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 = "";
	
	/////////
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		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() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				finish();
			}
		});
		//获取传来的信息
		
		
		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","=========");
		
		////////////////滑屏使用/////////
		// 初始化当前显示的view
		myViewPager.setCurrentItem(NowPic-1);
		topTip.setText(NowPic+"/"+PicNum);
		
		myViewPager.setOnPageChangeListener(new OnPageChangeListener() {
			@Override
			public 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);
			}
			
			

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// 从1到2滑动,在1滑动前调用
				Log.i(LOG_TAG, "uu"+String.valueOf(arg0));
			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
			}

		});
		
		
		Log.i("tiptops","=========");
		/////////////
		//显示大图片1
		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);
		    
			
		}
		//显示大图片2
		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);
		}
		//显示大图片3
		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);
			
		}
		//显示大图片4
		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);
		}
		//显示大图片5
		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);
		/*NewsImg1.setOnTouchListener(new OnTouchListener() {
			@Override
			public 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 {
	@Override
	public void destroyItem(View arg0, int arg1, Object arg2) {
		((ViewPager) arg0).removeView(mListViews.get(arg1));
	}
	
	@Override
	public void finishUpdate(View arg0) {
	}
	
	@Override
	public int getCount() {
		return mListViews.size();
	}
	
	@Override
	public Object instantiateItem(View arg0, int arg1) {
		((ViewPager) arg0).addView(mListViews.get(arg1), 0);
		return mListViews.get(arg1);
	}
	
	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0 == (arg1);
	}
	
	@Override
	public void restoreState(Parcelable arg0, ClassLoader arg1) {
	}
	
	@Override
	public Parcelable saveState() {
		return null;
	}
	
	@Override
	public 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{}
				}
			};
			//显示图片5
			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() {
					@Override
					public 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 {
	
	
	@Override
	public 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 = "";
	@Override
	protected 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() {
			@Override
			public 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() {
			@Override
			public 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);
			}
			
			

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				 
				Log.i(LOG_TAG, "uu"+String.valueOf(arg0));
			}

			@Override
			public 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() {
					@Override
					public 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">
  
    <LinearLayout
	android: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>
	
    
	<LinearLayout
	android: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"  >
 		    <LinearLayout
			android: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>

 

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


 

抱歉!评论已关闭.