Android编程实现图片放大缩小功能ZoomControls控件用法实例
作者:ITzhongzi 发布时间:2022-07-16 22:01:11
标签:Android,图片,控件
本文实例讲述了Android编程实现图片放大缩小功能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();
//设置图片放大但比例
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(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();
//设置图片放大但比例
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(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):现这个方法来处理触摸屏移动事件
setIsZoomInEnabled(boolean isEnabled):是否允许放大
setIsZoomOutEnabled(boolean isEnabled):是否允许缩小
setOnZoomInClickListener(View.OnClickListener listener):注册放大 *
setOnZoomOutClickListener(View.OnClickListener listener):注册缩小 *
setZoomSpeed(long speed):设置缩放速度
show():显示
希望本文所述对大家Android程序设计有所帮助。
来源:http://blog.csdn.net/itzhongzi/article/details/52277105


猜你喜欢
- 前言Java8 由Oracle在2014年发布,是继Java5之后最具革命性的版本。Java8吸收其他语言的精髓带来了函数式编程,lambd
- 项目需求:根据年级下拉框的变化使得科目下拉框绑定次年级下对应有的值我们用三层架构的模式来实现1.我们想和数据库交互,我们首先得来先解决DAL
- 一、下载安装包 1. JDK1.8百度云下载路径:百度网盘下载链接: https://pan.baidu
- 本文实例讲述了Android实现在xml文件中引用自定义View的方法。分享给大家供大家参考,具体如下:在xml中引用自定义view方法一:
- 本文实例为大家分享了Java实现分页功能的具体代码,供大家参考,具体内容如下不用根据改变SQL的形式去查询; 直接查询所有的数据,根据页码自
- maven项目中在pom.xml中依赖2个jar包,其他的spring的jar包省略:<dependency> &
- 说明SpringBoot版本:2.1.4.RELEASEjava版本:1.8文中所说JPA皆指spring-boot-starter-dat
- 前言哈哈哈哈哈。。。。。。。。问题终于解决了,让我得瑟一会(吗卖批,折腾了两天)~~~如果你的Android Studio出现以下错误,那么
- git忽略的原理:git设置本地忽略必须保证git的远程仓库分支上没有这个要忽略的文件,如果远程分支上存在这个文件,本地在设置ignore
- 本文实例讲述了Android中AsyncTask与handler用法。分享给大家供大家参考,具体如下:首先,我们得明确下一个概念,什么是UI
- 前言众所周知,随着Google I/O大会的召开,Google宣布将支持Kotlin作为Android的开发语言,最近几日,关于Kotlin
- 本文实例讲述了C#实现图片切割的方法。分享给大家供大家参考,具体如下:图片切割就是把一幅大图片按用户要求切割成多幅小图片。dotnet环境下
- 本文实例讲述了Android ActionBar Item用法。分享给大家供大家参考,具体如下:这里主要讲述ActionBar Item的使
- 面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。在面向对象程序设计(OOP)中,不必关心对象的具体实现。
- 简介我们在前面的Android教程中已经提到过这么一件事:Android在启动后会有一个主线程。它不允许任何子线程去改变主UI线程里的内容。
- java 数据类型:在Java中,数据类型分为两大种:基本数据类型(值类型)和包装类型(引用数据类型)。基本数据类型不是对象,不能调用toS
- 本文实例为大家分享了Android下拉展示条目的具体代码,供大家参考,具体内容如下布局文件<?xml version="1.
- 1.流布局FlowLayout所有组件像流一样,一个一个排放,排满了一行之后排下一行,默认情况下,每个组件是居中排列的,但是也可以设置。流布
- 本文实例讲述了android电源信息查看方法。分享给大家供大家参考。具体如下:1. PowerTestActivity:import and
- Android layoutAnimation详解及应用前言:最近在玩一个APP的时候,发现刚进入他的页面,他页面的子控件都是从