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),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Android 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-01Android判斷用戶2G/3G/4G移動數(shù)據(jù)網(wǎng)絡(luò)
這篇文章主要介紹了Android判斷用戶2G/3G/4G移動數(shù)據(jù)網(wǎng)絡(luò)的方法,感興趣的小伙伴們可以參考一下2015-12-12Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟
這篇文章主要介紹了Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法
這篇文章主要為大家詳細(xì)介紹了android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03android開發(fā)教程之清除android數(shù)據(jù)緩存示例(清除本地數(shù)據(jù)緩存)
android清除本地數(shù)據(jù)緩存示例,主要功能清除內(nèi)/外緩存,清除數(shù)據(jù)庫,清除sharedPreference,清除files和清除自定義目錄,需要的朋友可以參考下2014-02-02