//大家应该看过腾讯新闻的图片新闻的效果,点一张图,进入一个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>
效果如下图,可左右拖动,双手指放大.当前页数,关闭按钮.