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

首頁 > 系統 > Android > 正文

android ImageView 的幾點經驗總結

2020-04-11 12:08:25
字體:
來源:轉載
供稿:網友

最近作圖片的顯示,遇到了些問題,簡單總結
1)可以用ImageSwicher和ImageView結合在來做,這樣會用到setFectory(),華而不實
最要命的是如果圖片的大小超過屏幕,實現比較困難,目前是沒有找到方法

2)最簡單的方法是用ImageView,圖片直接FIT_CENTER,android會根據圖片的大小自動調節
保持圖片的比例。如果圖片分辨率超過屏幕,android也會自動的調整到屏幕能放下整張的圖片
在放大圖片的時候,可以用ImageView的SetFrame() 和setScale()方法,可以把圖片放大
到超過屏幕,原理就是ImageView放大,圖片跟著放大。同時也是可以添加各種animation.
大致如下:

復制代碼 代碼如下:

Animation animation = AnimationUtils.loadAnimation(Main.this, R.anim.my_scale_action);
imageView.setLayoutParams(new Gallery.LayoutParams(206, 206));
imageView.startAnimation(animation);

寫一個自己的MyImageView類,代碼如下,可以直接用
復制代碼 代碼如下:

package com.practice.imageviewpic;

import android.app.Activity; 
import android.content.Context; 
import android.graphics.*; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.Bundle; 
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent; 
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView; 
import android.widget.ImageView.ScaleType; 
import android.widget.LinearLayout;
    //創建一個自己的ImageView類 
    class MyImageView extends ImageView { 
        private float scale = 0.1f; 

      //兩點觸屏后之間的長度 
        private float beforeLenght; 
        private float afterLenght; 

        //單點移動的前后坐標值 
        private float afterX,afterY; 
        private float beforeX,beforeY; 

        public MyImageView(Context context) { 
            super(context); 
        } 
        public MyImageView(Context context, AttributeSet attrs) { 
        this(context, attrs, 0);

        }
        public MyImageView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
        //用來設置ImageView的位置 
        private void setLocation(int x,int y) { 
            this.setFrame(this.getLeft()+x, this.getTop()+y, this.getRight()+x, this.getBottom()+y); 
        } 

         
        /*
         * 用來放大縮小ImageView
         * 因為圖片是填充ImageView的,所以也就有放大縮小圖片的效果
         * flag為0是放大圖片,為1是小于圖片
         */ 
        public void setScale(float temp,int flag) { 

            if(flag==0) { 
                this.setFrame(this.getLeft()-(int)(temp*this.getWidth()),  
                              this.getTop()-(int)(temp*this.getHeight()),  
                              this.getRight()+(int)(temp*this.getWidth()),  
                              this.getBottom()+(int)(temp*this.getHeight()));    
            }else { 
                this.setFrame(this.getLeft()+(int)(temp*this.getWidth()),  
                              this.getTop()+(int)(temp*this.getHeight()),  
                              this.getRight()-(int)(temp*this.getWidth()),  
                              this.getBottom()-(int)(temp*this.getHeight())); 
            } 
        } 

        //繪制邊框       
         @Override 
          protected void onDraw(Canvas canvas) { 
              super.onDraw(canvas);     
              Rect rec=canvas.getClipBounds(); 
              rec.left++;
              rec.top++;
              rec.bottom--; 
              rec.right--; 
              Paint paint=new Paint(); 
              paint.setColor(Color.RED); 
              paint.setStyle(Paint.Style.STROKE); 
              canvas.drawRect(rec, paint); 
          } 

          
        /* 讓圖片跟隨手指觸屏的位置移動
         * beforeX、Y是用來保存前一位置的坐標
         * afterX、Y是用來保存當前位置的坐標
         * 它們的差值就是ImageView各坐標的增加或減少值
         */ 
        public void moveWithFinger(MotionEvent event) { 

            switch(event.getAction()) { 

            case MotionEvent.ACTION_DOWN: 
            //Log.d(TAG, "down ..");
                beforeX = event.getX(); 
                beforeY = event.getY(); 
                break; 
            case MotionEvent.ACTION_MOVE: 

            //Log.d(TAG, "move ..");
                afterX = event.getX(); 
                afterY = event.getY(); 

                this.setLocation((int)(afterX-beforeX),(int)(afterY-beforeY)); 

                beforeX = afterX; 
                beforeY = afterY; 
                break; 

            case MotionEvent.ACTION_UP: 
            //Log.d(TAG, "up ..");
                break; 
            } 
        } 

        /*
         * 通過多點觸屏放大或縮小圖像
         * beforeLenght用來保存前一時間兩點之間的距離
         * afterLenght用來保存當前時間兩點之間的距離
         */ 
        public void scaleWithFinger(MotionEvent event) { 
            float moveX = event.getX(1) - event.getX(0); 
            float moveY = event.getY(1) - event.getY(0); 

            switch(event.getAction()) { 
            case MotionEvent.ACTION_DOWN: 
                beforeLenght = (float) Math.sqrt( (moveX*moveX) + (moveY*moveY) ); 
                break; 
            case MotionEvent.ACTION_MOVE: 
                //得到兩個點之間的長度 
                afterLenght = (float) Math.sqrt( (moveX*moveX) + (moveY*moveY) ); 

                float gapLenght = afterLenght - beforeLenght; 

                if(gapLenght == 0) { 
                    break; 
                } 

                //如果當前時間兩點距離大于前一時間兩點距離,則傳0,否則傳1 
                if(gapLenght>0) { 
                    this.setScale(scale,0); 
                }else { 
                    this.setScale(scale,1); 
                } 

                beforeLenght = afterLenght; 
                break; 
            } 
        } 

   //這里來監聽屏幕觸控時間 
   @Override 
    public boolean onTouchEvent(MotionEvent event) { 

       /*
        * 判定用戶是否觸摸到了圖片
        * 如果是單點觸摸則調用控制圖片移動的方法
        * 如果是2點觸控則調用控制圖片大小的方法
        */ 
        if(event.getY() > this.getTop() && event.getY() < this.getBottom() 
                && event.getX() > this.getLeft() && event.getX() < this.getRight()) { 
            if(event.getPointerCount() == 2) { 
            this.scaleWithFinger(event); 
            }else if(event.getPointerCount() == 1) { 
            this.moveWithFinger(event); 
            }            
        } 
        return true; 
    }        

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
丝袜亚洲另类欧美重口| 亚洲一区亚洲二区| 国产精品福利无圣光在线一区| 亚洲专区中文字幕| 国产精品www网站| 日韩精品在线视频| 庆余年2免费日韩剧观看大牛| www.精品av.com| 国产aaa精品| 久久成年人视频| 国产精品国产亚洲伊人久久| 黑人欧美xxxx| 欧美裸体xxxx极品少妇软件| 国产精品爽爽爽| 国产精品美女主播在线观看纯欲| 欧洲精品在线视频| 国产精品自产拍在线观看中文| 日日狠狠久久偷偷四色综合免费| 亚洲毛片一区二区| 日韩在线激情视频| 国产91在线播放九色快色| 日韩欧美国产免费播放| 91色视频在线导航| 日韩av在线网址| 国产精品麻豆va在线播放| 成人做爰www免费看视频网站| 日日骚久久av| 久久人人爽人人爽人人片av高清| 蜜臀久久99精品久久久无需会员| 伊人伊成久久人综合网站| 亚洲成人av片在线观看| 97视频在线观看网址| 精品亚洲夜色av98在线观看| 主播福利视频一区| 亚洲天堂成人在线视频| 日本精品一区二区三区在线| 亚洲女性裸体视频| 97免费中文视频在线观看| 亚洲国产精品久久91精品| 国内伊人久久久久久网站视频| 欧美丝袜一区二区三区| 久久av中文字幕| 中文字幕精品在线视频| 国产精品成人一区二区三区吃奶| 亚洲精品白浆高清久久久久久| 亚洲欧美在线x视频| 亚洲无av在线中文字幕| 日韩免费在线观看视频| 国产精品69精品一区二区三区| 九九热精品视频在线播放| 亚洲伊人一本大道中文字幕| 日韩欧美一区二区在线| 91精品在线观| 国产一区av在线| 国产一区二区三区在线观看网站| 国产精品永久免费观看| 亚洲最大中文字幕| 岛国视频午夜一区免费在线观看| 久久av中文字幕| 亚洲美女激情视频| 成人网在线免费观看| 亚洲国产精品高清久久久| 久久久久久国产精品美女| 8090理伦午夜在线电影| 久久香蕉国产线看观看网| 在线观看精品自拍私拍| 日韩精品中文字| 国产成人福利夜色影视| 欧美一性一乱一交一视频| 成人在线一区二区| 国产91露脸中文字幕在线| 国产日韩欧美视频在线| 亚洲免费电影在线观看| 中文国产成人精品| 欧美一区二粉嫩精品国产一线天| 91黑丝高跟在线| 亚洲理论片在线观看| 国产视频精品自拍| 精品久久香蕉国产线看观看gif| 九九热精品在线| 亚洲成**性毛茸茸| 91久久精品国产91性色| 国产丝袜精品视频| 精品国产欧美一区二区五十路| 在线看福利67194| 一区二区三区美女xx视频| 亚洲欧美中文字幕| 成人国产在线激情| 亚洲精品久久在线| 成人精品视频99在线观看免费| 成人精品一区二区三区电影免费| 日韩动漫免费观看电视剧高清| 亚洲一二三在线| 欧美激情精品久久久久久蜜臀| 亚洲欧美日韩成人| 国产精品一区二区久久久久| 91高潮在线观看| 国产福利精品av综合导导航| 欧美成人精品在线视频| 欧美日韩免费区域视频在线观看| 97视频在线观看免费高清完整版在线观看| www.亚洲一区| 精品成人69xx.xyz| 亚洲人成人99网站| 在线激情影院一区| 亚洲毛片在线观看| 91精品久久久久久久久| 久久综合色影院| 尤物精品国产第一福利三区| 国产精品色悠悠| 欧美激情按摩在线| 亚洲自拍欧美另类| 久久久久国产一区二区三区| 最近2019免费中文字幕视频三| 欧美日韩一区二区在线播放| 欧美成人黑人xx视频免费观看| 在线观看成人黄色| 孩xxxx性bbbb欧美| 奇米影视亚洲狠狠色| 久久久久国产精品免费网站| 久久久久久久久久久免费精品| 国产精品jvid在线观看蜜臀| 国产精品成熟老女人| 日韩精品视频观看| 久久影院资源站| 中文字幕精品一区二区精品| 亚洲在线免费视频| 久久躁狠狠躁夜夜爽| 日韩欧美在线观看| 精品久久久一区| 丝袜亚洲另类欧美重口| 日本久久精品视频| 欧美多人乱p欧美4p久久| 国产精品美女视频网站| 久久夜精品va视频免费观看| 国产精自产拍久久久久久蜜| 精品国产一区二区三区久久| 欧美大片在线免费观看| 97精品久久久中文字幕免费| 亚洲日本成人女熟在线观看| 日韩福利在线播放| 国产亚洲精品成人av久久ww| 91高清视频免费观看| 国产精品香蕉国产| 欧美视频专区一二在线观看| 精品视频在线观看日韩| 中文日韩在线视频| 国产成人aa精品一区在线播放| 午夜欧美大片免费观看| 中文字幕v亚洲ⅴv天堂| 亚洲精美色品网站| 久久免费成人精品视频| 欧美孕妇孕交黑巨大网站| 成人黄色午夜影院| 国产亚洲一区精品| 欧美在线一级视频| 一本色道久久88综合日韩精品| 亚洲福利影片在线| 日韩电影中文字幕一区| 国产日韩av高清| 亚洲欧美三级伦理| 国产精品老牛影院在线观看| 亚洲成人精品久久久| 国产视频久久久久|