閱讀148 返回首頁    go 魔獸


Android ZoomControls放大縮小圖片

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:andro
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:
    >
<ImageView
	android:
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/yuanyuan"
    />
    
<ZoomControls
	android:
	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);
        
        //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);
			}
        	
        });
    }
}

效果如下:
 

 





最後更新:2017-04-02 16:47:34

  上一篇:go linux知識
  下一篇:go c語言