国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Android - android ImageView 的幾點(diǎn)經(jīng)驗(yàn)總結(jié)

android ImageView 的幾點(diǎn)經(jīng)驗(yàn)總結(jié)

2021-01-31 18:06Android開(kāi)發(fā)網(wǎng) Android

本篇文章是對(duì)android中ImageView的使用技巧進(jìn)行了幾點(diǎn)經(jīng)驗(yàn)總結(jié),需要的朋友參考下

最近作圖片的顯示,遇到了些問(wèn)題,簡(jiǎn)單總結(jié)
1)可以用ImageSwicher和ImageView結(jié)合在來(lái)做,這樣會(huì)用到setFectory(),華而不實(shí)
最要命的是如果圖片的大小超過(guò)屏幕,實(shí)現(xiàn)比較困難,目前是沒(méi)有找到方法

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

復(fù)制代碼 代碼如下:

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


寫(xiě)一個(gè)自己的MyImageView類,代碼如下,可以直接用

復(fù)制代碼 代碼如下:


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;
    //創(chuàng)建一個(gè)自己的ImageView類 
    class MyImageView extends ImageView { 
        private float scale = 0.1f; 

      //兩點(diǎn)觸屏后之間的長(zhǎng)度 
        private float beforeLenght; 
        private float afterLenght; 

        //單點(diǎn)移動(dòng)的前后坐標(biāo)值 
        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);
        }
        //用來(lái)設(shè)置ImageView的位置 
        private void setLocation(int x,int y) { 
            this.setFrame(this.getLeft()+x, this.getTop()+y, this.getRight()+x, this.getBottom()+y); 
        } 

         
        /*
         * 用來(lái)放大縮小ImageView
         * 因?yàn)閳D片是填充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); 
          } 

          
        /* 讓圖片跟隨手指觸屏的位置移動(dòng)
         * beforeX、Y是用來(lái)保存前一位置的坐標(biāo)
         * afterX、Y是用來(lái)保存當(dāng)前位置的坐標(biāo)
         * 它們的差值就是ImageView各坐標(biāo)的增加或減少值
         */ 
        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; 
            } 
        } 

        /*
         * 通過(guò)多點(diǎn)觸屏放大或縮小圖像
         * beforeLenght用來(lái)保存前一時(shí)間兩點(diǎn)之間的距離
         * afterLenght用來(lái)保存當(dāng)前時(shí)間兩點(diǎn)之間的距離
         */ 
        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: 
                //得到兩個(gè)點(diǎn)之間的長(zhǎng)度 
                afterLenght = (float) Math.sqrt( (moveX*moveX) + (moveY*moveY) ); 

                float gapLenght = afterLenght - beforeLenght; 

                if(gapLenght == 0) { 
                    break; 
                } 

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

                beforeLenght = afterLenght; 
                break; 
            } 
        } 

   //這里來(lái)監(jiān)聽(tīng)屏幕觸控時(shí)間 
   @Override 
    public boolean onTouchEvent(MotionEvent event) { 

       /*
        * 判定用戶是否觸摸到了圖片
        * 如果是單點(diǎn)觸摸則調(diào)用控制圖片移動(dòng)的方法
        * 如果是2點(diǎn)觸控則調(diào)用控制圖片大小的方法
        */ 
        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; 
    }        

}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品一区二区三区久久久久久 | av看片网 | 日本在线一区二区三区 | 国产黄色免费网站 | 国产精品美女久久久久久久久久久 | 免费观看的av | 黄色av免费看 | 日韩高清在线一区 | 在线一区| 欧美xxxx黑人又粗又长 | 精品视频一区二区三区 | 免费毛片一级 | 久久中文字幕av | 日韩精品一区二区三区视频播放 | 欧美色综合天天久久综合精品 | 亚洲第一成av人网站懂色 | 懂色av一区二区三区免费观看 | 欧美成人a | 日本 欧美 国产 | 91人人| 免费的av网站 | 91视频免费看 | 国产欧美日韩精品一区 | 龙珠z国语版291集全 | 二区在线观看 | 欧美一区 | 开心久久婷婷综合中文字幕 | 久在线草 | 久久久婷婷 | 亚洲视频在线免费观看 | 国产免费视频在线 | 色婷婷综合久久久中字幕精品久久 | 最新中文字幕视频 | 欧美日韩一级二级三级 | 久热久| 色日韩| 国产精品高清在线观看 | 天天久久 | 欧美国产日韩一区 | 四虎影院最新地址 | 人一级毛片 |