亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程實現圖片的瀏覽、縮放、拖動和自動居中效果

2020-04-11 11:18:24
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程實現圖片的瀏覽、縮放、拖動和自動居中效果的方法。分享給大家供大家參考,具體如下:

Touch.java

/** * 圖片瀏覽、縮放、拖動、自動居中 */public class Touch extends Activity implements OnTouchListener { Matrix matrix = new Matrix(); Matrix savedMatrix = new Matrix(); DisplayMetrics dm; ImageView imgView; Bitmap bitmap; float minScaleR;// 最小縮放比例 static final float MAX_SCALE = 4f;// 最大縮放比例 static final int NONE = 0;// 初始狀態 static final int DRAG = 1;// 拖動 static final int ZOOM = 2;// 縮放 int mode = NONE; PointF prev = new PointF(); PointF mid = new PointF(); float dist = 1f; @Override public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.scale);  imgView = (ImageView) findViewById(R.id.imag);// 獲取控件  bitmap = BitmapFactory.decodeResource(getResources(), this.getIntent()    .getExtras().getInt("IMG"));// 獲取圖片資源  imgView.setImageBitmap(bitmap);// 填充控件  imgView.setOnTouchListener(this);// 設置觸屏監聽  dm = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(dm);// 獲取分辨率  minZoom();  center();  imgView.setImageMatrix(matrix); } /**  * 觸屏監聽  */ public boolean onTouch(View v, MotionEvent event) {  switch (event.getAction() & MotionEvent.ACTION_MASK) {  // 主點按下  case MotionEvent.ACTION_DOWN:   savedMatrix.set(matrix);   prev.set(event.getX(), event.getY());   mode = DRAG;   break;  // 副點按下  case MotionEvent.ACTION_POINTER_DOWN:   dist = spacing(event);   // 如果連續兩點距離大于10,則判定為多點模式   if (spacing(event) > 10f) {    savedMatrix.set(matrix);    midPoint(mid, event);    mode = ZOOM;   }   break;  case MotionEvent.ACTION_UP:  case MotionEvent.ACTION_POINTER_UP:   mode = NONE;   break;  case MotionEvent.ACTION_MOVE:   if (mode == DRAG) {    matrix.set(savedMatrix);    matrix.postTranslate(event.getX() - prev.x, event.getY()      - prev.y);   } else if (mode == ZOOM) {    float newDist = spacing(event);    if (newDist > 10f) {     matrix.set(savedMatrix);     float tScale = newDist / dist;     matrix.postScale(tScale, tScale, mid.x, mid.y);    }   }   break;  }  imgView.setImageMatrix(matrix);  CheckView();  return true; } /**  * 限制最大最小縮放比例,自動居中  */ private void CheckView() {  float p[] = new float[9];  matrix.getValues(p);  if (mode == ZOOM) {   if (p[0] < minScaleR) {    matrix.setScale(minScaleR, minScaleR);   }   if (p[0] > MAX_SCALE) {    matrix.set(savedMatrix);   }  }  center(); } /**  * 最小縮放比例,最大為100%  */ private void minZoom() {  minScaleR = Math.min(    (float) dm.widthPixels / (float) bitmap.getWidth(),    (float) dm.heightPixels / (float) bitmap.getHeight());  if (minScaleR < 1.0) {   matrix.postScale(minScaleR, minScaleR);  } } private void center() {  center(true, true); } /**  * 橫向、縱向居中  */ protected void center(boolean horizontal, boolean vertical) {  Matrix m = new Matrix();  m.set(matrix);  RectF rect = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());  m.mapRect(rect);  float height = rect.height();  float width = rect.width();  float deltaX = 0, deltaY = 0;  if (vertical) {   // 圖片小于屏幕大小,則居中顯示。大于屏幕,上方留空則往上移,下方留空則往下移   int screenHeight = dm.heightPixels;   if (height < screenHeight) {    deltaY = (screenHeight - height) / 2 - rect.top;   } else if (rect.top > 0) {    deltaY = -rect.top;   } else if (rect.bottom < screenHeight) {    deltaY = imgView.getHeight() - rect.bottom;   }  }  if (horizontal) {   int screenWidth = dm.widthPixels;   if (width < screenWidth) {    deltaX = (screenWidth - width) / 2 - rect.left;   } else if (rect.left > 0) {    deltaX = -rect.left;   } else if (rect.right < screenWidth) {    deltaX = screenWidth - rect.right;   }  }  matrix.postTranslate(deltaX, deltaY); } /**  * 兩點的距離  */ 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); }}

scale.xml

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" > <ImageView  android:id="@+id/imag"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:layout_gravity="center"  android:scaleType="matrix" > </ImageView></FrameLayout>

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲午夜视频在线观看| 欧美一区二区大胆人体摄影专业网站| 精品亚洲永久免费精品| 久久人人爽亚洲精品天堂| 日韩精品福利网站| 精品久久久久久久久久久久| 日韩精品亚洲视频| 久久久精品影院| 国产精品视频999| 欧美日韩不卡合集视频| 亚洲人成绝费网站色www| 日韩电影在线观看中文字幕| 精品亚洲永久免费精品| 久久亚洲精品毛片| 成人妇女免费播放久久久| 欧美精品videos性欧美| 亚洲第一网站男人都懂| 色悠悠国产精品| 日韩成人免费视频| 国产91精品最新在线播放| 欧美一级视频在线观看| 久久久久亚洲精品成人网小说| 粉嫩av一区二区三区免费野| 在线色欧美三级视频| 亚洲精品免费一区二区三区| 91日本在线观看| 亚洲精品网站在线播放gif| 午夜精品久久久久久99热软件| 日韩在线视频观看| 久久久久久这里只有精品| 日韩av在线一区| 91精品久久久久久久久| 久久久久日韩精品久久久男男| 亚洲精品自拍第一页| 国内精品久久久久影院优| 亚洲国产精品久久久久久| 日韩女优在线播放| 久久精品成人一区二区三区| 久久伊人91精品综合网站| 最近中文字幕日韩精品| 韩剧1988在线观看免费完整版| 国产精品久久久| 国产欧美精品xxxx另类| 姬川优奈aav一区二区| 国产91色在线免费| 欧美性视频网站| 国产成人免费av| 国产精品第一第二| 精品成人国产在线观看男人呻吟| 在线精品高清中文字幕| 亚洲精品自拍第一页| 亚洲人成伊人成综合网久久久| 亚洲图片在区色| 欧美黑人巨大xxx极品| 亚洲欧美日本另类| 亚洲日本欧美日韩高观看| 热99精品里视频精品| 亚洲视频国产视频| 欧美黄网免费在线观看| 国产精品成人aaaaa网站| 国产欧美日韩免费看aⅴ视频| 欧美大片在线看| 国产精品视频一区二区高潮| 亚洲男人第一网站| 俺去了亚洲欧美日韩| 一区二区在线视频| 国产精品一区专区欧美日韩| 欧美综合在线观看| 国产欧美精品一区二区三区介绍| 久久福利视频网| 国产精品96久久久久久| 亚洲影视中文字幕| 午夜精品国产精品大乳美女| 自拍偷拍亚洲欧美| 欧美激情国产精品| 欧美成人一二三| 亚洲精品www久久久久久广东| 欧美在线免费观看| 成人精品久久av网站| 国产精品一区专区欧美日韩| 欧美国产视频日韩| 久久久久久久激情视频| 午夜精品蜜臀一区二区三区免费| 精品国产31久久久久久| 精品呦交小u女在线| 国产69精品久久久久9| 在线电影av不卡网址| 高清欧美性猛交| 亚洲毛片在线观看.| www亚洲欧美| 尤物yw午夜国产精品视频明星| 亚洲精品成人久久电影| 日韩中文字幕在线看| 欧美精品一二区| 国产精品亚洲视频在线观看| 欧美性生交xxxxx久久久| 中文字幕亚洲字幕| 亚洲精品视频中文字幕| 在线播放国产一区二区三区| 欧美一乱一性一交一视频| 日本高清+成人网在线观看| 国产91精品久久久久| 亚洲国产婷婷香蕉久久久久久| 日韩av一区二区在线| 高清日韩电视剧大全免费播放在线观看| 在线午夜精品自拍| 俺去了亚洲欧美日韩| 国产精品久久久久久久美男| 亚洲精品国产精品国自产在线| 国产成人精品亚洲精品| 亚洲国产精品悠悠久久琪琪| 亚洲欧美中文字幕在线一区| 久久久久久高潮国产精品视| 美日韩精品视频免费看| 久久久久久久久久久人体| 精品久久中文字幕久久av| 久久手机精品视频| 亚洲激情视频在线播放| 97av在线播放| 亚洲欧洲国产伦综合| 久久精品电影网站| 97精品国产91久久久久久| www.日韩av.com| 久久久人成影片一区二区三区| 日韩精品在线影院| 国产极品jizzhd欧美| 国产精品久久久久aaaa九色| 国语自产偷拍精品视频偷| 国产精品最新在线观看| 中文字幕国产精品久久| 国产日韩欧美91| 久久精品国产v日韩v亚洲| 欧美视频在线看| 亚洲欧美成人在线| 欧洲成人免费aa| 国产91精品最新在线播放| 亚洲激情 国产| 日本久久久久亚洲中字幕| 一本大道亚洲视频| 欧美在线视频免费播放| 国产成人一区三区| 欧美午夜片欧美片在线观看| 亚洲风情亚aⅴ在线发布| 中文字幕久久亚洲| 国产综合福利在线| 国产精自产拍久久久久久蜜| 国产精品视频公开费视频| 欧美床上激情在线观看| 欧美大片欧美激情性色a∨久久| 国产日产久久高清欧美一区| 亚洲国产精品久久久久| 欧美壮男野外gaytube| 日韩av网址在线观看| 在线亚洲午夜片av大片| 亚洲国内精品视频| 成人久久久久久久| 久久全球大尺度高清视频| 九色精品免费永久在线| 精品国产自在精品国产浪潮| 国产在线观看不卡| 中文字幕在线精品| 91在线视频精品| 欧美理论片在线观看| 奇米影视亚洲狠狠色|