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.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class ChangePicture extends Activity {
private ImageView mImageView;
private Button btn1,btn2,btn3;
private LinearLayout layout1;
private Bitmap bmp;
private int id=0;
private int displayWidth,displayHeight;
private float scaleWidth=1,scaleHeight=1;
private int degree = 30;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picture);
//取得屏幕分辨率
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
displayWidth=dm.widthPixels;
displayHeight=dm.heightPixels-80;
System.out.println(displayWidth +","+displayHeight);
bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.pic);
layout1=(LinearLayout)findViewById(R.id.layout1);
mImageView=(ImageView)findViewById(R.id.myImageView);
btn1=(Button)findViewById(R.id.myButton1);
btn1.setOnClickListener(new OnClickListener(){
public void onClick(View v){
small();
}
});
btn2=(Button)findViewById(R.id.myButton2);
btn2.setOnClickListener(new OnClickListener(){
public void onClick(View v){
big();
}
});
btn3 = (Button)findViewById(R.id.myButton3);
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
circle();
}
});
}
private void small(){
//获得Bitmap的高和宽
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
//设置缩小比例
double scale=0.8;
//计算出这次要缩小的比例
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
//产生resize后的Bitmap对象
Matrix matrix=new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
if(id==0){
layout1.removeView(mImageView);
}
else{
layout1.removeView((ImageView)findViewById(id));
}
id++;
ImageView imageView=new ImageView(this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);
btn2.setEnabled(true);
}
private void big(){
//获得Bitmap的高和宽
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
//设置缩小比例
double scale=1.25;
//计算出这次要缩小的比例
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
//产生resize后的Bitmap对象
Matrix matrix=new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
if(id==0){
layout1.removeView(mImageView);
}
else{
layout1.removeView((ImageView)findViewById(id));
}
id++;
ImageView imageView=new ImageView(this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);
if(scaleWidth*scale*bmpWidth>displayWidth||scaleHeight*scale*scaleHeight>displayHeight){
btn2.setEnabled(false);
}
}
//旋转
private void circle() {
//位图的旋转
//获得Bitmap的高和宽
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
//产生resize后的Bitmap对象
Matrix matrix=new Matrix();
matrix.postRotate(degree);
degree += 30;
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
// int id = 0;
if(id==0){
layout1.removeView(mImageView);
}
else{
layout1.removeView((ImageView)findViewById(id));
}
id++;
ImageView imageView=new ImageView(this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);
}
}
//xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/myButton1"
android:layout_width="90px"
android:layout_height="60px"
android:text="缩小"
android:textSize="18sp"
>
</Button>
<Button
android:id="@+id/myButton2"
android:layout_width="90px"
android:layout_height="60px"
android:text="放大"
android:textSize="18sp"
>
</Button>
<Button
android:id="@+id/myButton3"
android:layout_width="90px"
android:layout_height="60px"
android:text="旋转"
android:textSize="18sp"
/>
</LinearLayout>
<ImageView
android:id="@+id/myImageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/pic"
android:layout_x="0px"
android:layout_y="0px"
>
</ImageView>
</LinearLayout>
分享到:
相关推荐
本文将基于标题"Android图片放大缩小旋转完美demo"和描述,深入探讨Android中如何实现图片的触摸缩放、旋转以及在网络环境下的加载,同时会提及到使用ViewPager展示图片的功能。 首先,Android提供了一些基本的图像...
这份"android应用源码图片放大缩小旋转涂鸦源码.zip"提供了完整的源代码,可以作为学习和设计此类应用的参考。以下是基于这个源码包可能涉及到的关键知识点: 1. **图片加载库**:在Android中,高效地加载和显示...
9. **动画效果**: 除了静态的放大缩小,还可以通过Animation类或ObjectAnimator实现平滑的缩放动画效果,增强用户体验。 10. **性能考量**: 当处理大量图片或高分辨率图片时,要注意内存管理,合理使用Bitmap的配置...
本教程将探讨如何在Android中实现图片的旋转、放大缩小、剪裁以及添加网格等常见编辑功能,通过内存缓存机制确保操作的高效与稳定性。 首先,让我们关注图片的旋转功能。在Android中,我们可以使用`Matrix`类来处理...
要旋转图片,我们先创建一个Matrix对象,然后调用其`setRotate()`方法设置旋转角度,最后使用`Bitmap.createBitmap()`结合Matrix完成旋转操作。注意,旋转可能会导致图片边缘被裁剪,因此在实际应用中可能需要调整...
2. **手势识别**: 实现图片的放大缩小,我们需要使用Android的手势库(`android.gesture`),特别是` GestureDetector`和` ScaleGestureDetector`。`GestureDetector`用于识别单击、双击等基本手势,而`...
在Android开发中,实现图片的放大缩小功能是常见的需求,特别是在设计相册或者查看图片的应用中。本Demo主要展示了如何在Android环境中实现这样的功能,既支持网络图片的加载,也支持本地图片的显示,并允许用户进行...
这个“android 图片放大缩小移动 demo”项目旨在提供一个实例,演示如何在Android应用中实现这些功能。接下来,我们将深入探讨相关知识点。 1. **ImageView组件**:在Android中,显示图片的基本组件是`ImageView`。...
通过实现`GestureDetector.SimpleOnGestureListener`接口来响应用户的双击、单击等手势动作,从而控制图片的放大、缩小等功能。`GestureDetector`是Android系统提供的用于识别复杂手势的类,可以方便地检测出如滑动...
以下是关于Android图片放大缩小的关键知识点和实现细节: 1. **ImageView组件**: Android中的`ImageView`是用于显示图像的基本组件。在实现图片缩放功能时,我们通常会用到它。通过设置`ImageView`的`scaleType`...
`android 实现图片放大缩小`的主题,意味着我们需要探讨如何在应用中实现对图片的缩放和平移功能,这通常涉及自定义ImageView子类来扩展其默认行为。在这个场景中,`DragImageView`就是我们自定义的组件,用于实现这...
在Android开发中,实现图片随手势放大缩小的功能是一项常见的需求,尤其在查看照片、阅读电子书或使用图像编辑应用时。这项技术的核心是利用Android提供的触摸事件处理机制和矩阵操作来改变图片的缩放比例。以下将...
在Android开发中,图片...综上所述,这个示例展示了如何使用自定义View和按键事件实现简单的图片放大缩小功能。在实际项目中,可能需要结合手势识别、`Matrix` 变换以及内存管理等技术来提供更流畅、更高效的用户体验。
在Android开发中,图片双击放大缩小是一种常见的交互方式,为用户提供更好的查看体验。这个开源项目 "ImageViewZoom-master" 正是提供了这样的功能,让用户在查看图片时可以通过双击手势来实现图片的缩放操作。下面...
这份"android应用源码图片放大缩小旋转涂鸦源码"是一个针对IT计算机专业学生的毕业设计项目,旨在帮助学生理解和实践Android App的开发流程。以下是基于这个主题的详细知识点解析: 1. **Android SDK与环境搭建**:...
android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...
总结一下,Android图片的放大缩小及旋转涉及到`ImageView`的使用、手势识别、`Matrix`变换以及图片的加载与内存管理。理解并掌握这些知识点,能够帮助开发者在Android应用中实现丰富的图片交互功能。在实际操作中,...