Android編程實現(xiàn)圖片放大縮小功能ZoomControls控件用法實例
本文實例講述了Android編程實現(xiàn)圖片放大縮小功能ZoomControls控件用法。分享給大家供大家參考,具體如下:
MainActivity代碼:
package example.com.myapplication;
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 MainActivity extends Activity {
private LinearLayout llLayout;
private ZoomControls zoomcontrols;
private ImageView img;
private int id=0;
private int displayWidth;
private int displayHeight;
private float scaleWidth = 1;
private float scaleHeight = 1;
private Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
llLayout =(LinearLayout)findViewById(R.id.layout);
//取得屏幕分辨率大小
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
displayWidth = dm.widthPixels;
//屏幕高度減去zoomControls的高度
displayHeight = dm.heightPixels;
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.c);
img =(ImageView)findViewById(R.id.image);
//zoom.hide();隱藏zoomControls
//zoom.show();顯示zoomCOntrols
zoomcontrols =(ZoomControls)findViewById(R.id.zoomcontrol);
img =(ImageView)findViewById(R.id.image);
zoomcontrols.setIsZoomInEnabled(true);
zoomcontrols.setIsZoomOutEnabled(true);
//圖片放大
zoomcontrols.setOnZoomInClickListener(new OnClickListener()
{
public void onClick(View v)
{
int bmpWidth = bitmap.getWidth();
int bmpHeight = bitmap.getHeight();
//設(shè)置圖片放大但比例
double scale = 1.25;
//計算這次要放大的比例
scaleWidth =(float)(scaleWidth*scale);
scaleHeight =(float)(scaleHeight*scale);
//產(chǎn)生新的大小但Bitmap對象
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bmpWidth,bmpHeight,matrix,true);
img.setImageBitmap(resizeBmp);
}
});
//圖片減小
zoomcontrols.setOnZoomOutClickListener(new OnClickListener()
{
public void onClick(View v) {
int bmpWidth = bitmap.getWidth();
int bmpHeight = bitmap.getHeight();
//設(shè)置圖片放大但比例
double scale = 0.8;
//計算這次要放大的比例
scaleWidth =(float)(scaleWidth*scale);
scaleHeight =(float)(scaleHeight*scale);
//產(chǎn)生新的大小但Bitmap對象
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bmpWidth,bmpHeight,matrix,true);
img.setImageBitmap(resizeBmp);
}
});
}
}
activity_main布局文件代碼:
<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/layout"
>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/c"
/>
<ZoomControls
android:id="@+id/zoomcontrol"
android:layout_gravity="bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
常見方法說明:
hasFocus():判斷焦點
hide():隱藏
onTouchEvent(MotionEvent event):現(xiàn)這個方法來處理觸摸屏移動事件
setIsZoomInEnabled(boolean isEnabled):是否允許放大
setIsZoomOutEnabled(boolean isEnabled):是否允許縮小
setOnZoomInClickListener(View.OnClickListener listener):注冊放大監(jiān)聽器
setOnZoomOutClickListener(View.OnClickListener listener):注冊縮小監(jiān)聽器
setZoomSpeed(long speed):設(shè)置縮放速度
show():顯示
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android多設(shè)備多module打包fat-aar(最新推薦)
這篇文章主要介紹了Android多設(shè)備多module打包(fat-aar),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Android 7.0開發(fā)獲取存儲設(shè)備信息的方法
這篇文章主要介紹了Android 7.0開發(fā)獲取存儲設(shè)備信息的方法,結(jié)合實例形式分析了Android7.0針對存儲設(shè)備信息的獲取、判斷操作方法與相關(guān)注意事項,需要的朋友可以參考下2017-11-11
使用ViewPager實現(xiàn)高仿launcher左右拖動效果
今天用ViewPager這個類實現(xiàn)了同樣的左右拖動效果,這樣代碼更少,但是效果是一樣的,ViewPager是實現(xiàn)左右兩個屏幕平滑地切換的一個類,它是Google提供的,有需要的朋友可以了解下2013-01-01
Android判斷用戶2G/3G/4G移動數(shù)據(jù)網(wǎng)絡(luò)
這篇文章主要介紹了Android判斷用戶2G/3G/4G移動數(shù)據(jù)網(wǎng)絡(luò)的方法,感興趣的小伙伴們可以參考一下2015-12-12
Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟
這篇文章主要介紹了Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法
這篇文章主要為大家詳細介紹了android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
android開發(fā)教程之清除android數(shù)據(jù)緩存示例(清除本地數(shù)據(jù)緩存)
android清除本地數(shù)據(jù)緩存示例,主要功能清除內(nèi)/外緩存,清除數(shù)據(jù)庫,清除sharedPreference,清除files和清除自定義目錄,需要的朋友可以參考下2014-02-02

