Android的UI—ZoomControls放大縮小圖片

來源:互聯網
上載者:User

ZoomControls控制項是一個可以縮放但控制項,效果如

以下是它但一些主要但方法

hasFocus():判斷焦點

hide():隱藏

onTouchEvent(MotionEvent event):現這個方法來處理觸控螢幕移動事件

setIsZoomInEnabled(boolean isEnabled):是否允許放大

setIsZoomOutEnabled(boolean isEnabled):是否允許縮小

setOnZoomInClickListener(View.OnClickListener listener):註冊放大監聽器

setOnZoomOutClickListener(View.OnClickListener listener):註冊縮小監聽器

setZoomSpeed(long speed):設定縮放速度

show():顯示

這裡面,如果將setIsZoomInEnabled()方法設定為false,那麼這個放大的按鈕就變成了灰色,不能用了,其實這個控制項就是兩個按鈕而已,只是有外觀,沒有功能,如果你要放大圖片或者縮小圖片,還是要在監聽事件中實現

開始看代碼

main.xml檔案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/layout1"
    >
<ImageView
 android:id="@+id/imgview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/yuanyuan"
    />
   
<ZoomControls
 android:id="@+id/zoomcontrol"
 android:layout_gravity="bottom"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
/>
</LinearLayout>

 

ZoomExampleActivity.java檔案:

package com.loulijun.zoomcontroltest;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ZoomControls;

public class ZoomExampleActivity extends Activity {
 private LinearLayout layout1;
 private ZoomControls zoom;
 private ImageView img;
 private int id=0;
 private int displayWidth;
 private int displayHeight;
 private float scaleWidth = 1;
 private float scaleHeight = 1;
 private Bitmap bmp;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        layout1 = (LinearLayout)findViewById(R.id.layout1);
        //取得螢幕解析度大小
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        displayWidth = dm.widthPixels;
        //螢幕高度減去zoomControls的高度
        displayHeight = dm.heightPixels;
        bmp = BitmapFactory.decodeResource(getResources(), R.drawable.yuanyuan);
        img = (ImageView)findViewById(R.id.imgview);
        //zoom.hide();隱藏zoomControls
        //zoom.show();顯示zoomCOntrols
       
        zoom = (ZoomControls)findViewById(R.id.zoomcontrol);
        img = (ImageView)findViewById(R.id.imgview);
        zoom.setIsZoomInEnabled(true);
        zoom.setIsZoomOutEnabled(true);
        //圖片放大
        zoom.setOnZoomInClickListener(new OnClickListener()
        {
         public void onClick(View v)
         {
          int bmpWidth = bmp.getWidth();
    int bmpHeight = bmp.getHeight();
    //設定圖片放大但比例
    double scale = 1.25;
    //計算這次要放大的比例
    scaleWidth = (float)(scaleWidth*scale);
    scaleHeight = (float)(scaleHeight*scale);
    //產生新的大小但Bitmap對象
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,bmpHeight,matrix,true);
    img.setImageBitmap(resizeBmp);

         }
        });
        //圖片減小
        zoom.setOnZoomOutClickListener(new OnClickListener()
        {

   public void onClick(View v) {
    int bmpWidth = bmp.getWidth();
    int bmpHeight = bmp.getHeight();
    //設定圖片放大但比例
    double scale = 0.8;
    //計算這次要放大的比例
    scaleWidth = (float)(scaleWidth*scale);
    scaleHeight = (float)(scaleHeight*scale);
    //產生新的大小但Bitmap對象
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,bmpHeight,matrix,true);
    img.setImageBitmap(resizeBmp);
   }
         
        });
    }
}

 

效果如下:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.