`
woaimoliha4
  • 浏览: 13181 次
社区版块
存档分类
最新评论

android图片放大 缩小 旋转

阅读更多
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图片放大缩小旋转完美demo"和描述,深入探讨Android中如何实现图片的触摸缩放、旋转以及在网络环境下的加载,同时会提及到使用ViewPager展示图片的功能。 首先,Android提供了一些基本的图像...

    android应用源码图片放大缩小旋转涂鸦源码.zip

    这份"android应用源码图片放大缩小旋转涂鸦源码.zip"提供了完整的源代码,可以作为学习和设计此类应用的参考。以下是基于这个源码包可能涉及到的关键知识点: 1. **图片加载库**:在Android中,高效地加载和显示...

    android图片放大缩小 ImageView

    9. **动画效果**: 除了静态的放大缩小,还可以通过Animation类或ObjectAnimator实现平滑的缩放动画效果,增强用户体验。 10. **性能考量**: 当处理大量图片或高分辨率图片时,要注意内存管理,合理使用Bitmap的配置...

    android 图片编辑(旋转,放大缩小,剪裁,网格等)

    本教程将探讨如何在Android中实现图片的旋转、放大缩小、剪裁以及添加网格等常见编辑功能,通过内存缓存机制确保操作的高效与稳定性。 首先,让我们关注图片的旋转功能。在Android中,我们可以使用`Matrix`类来处理...

    解决Android 图片放大、缩小、旋转等问题

    要旋转图片,我们先创建一个Matrix对象,然后调用其`setRotate()`方法设置旋转角度,最后使用`Bitmap.createBitmap()`结合Matrix完成旋转操作。注意,旋转可能会导致图片边缘被裁剪,因此在实际应用中可能需要调整...

    android 图片放大缩小滑动

    2. **手势识别**: 实现图片的放大缩小,我们需要使用Android的手势库(`android.gesture`),特别是` GestureDetector`和` ScaleGestureDetector`。`GestureDetector`用于识别单击、双击等基本手势,而`...

    Android实现图片放大缩小Demo

    在Android开发中,实现图片的放大缩小功能是常见的需求,特别是在设计相册或者查看图片的应用中。本Demo主要展示了如何在Android环境中实现这样的功能,既支持网络图片的加载,也支持本地图片的显示,并允许用户进行...

    android 图片放大缩小移动 demo

    这个“android 图片放大缩小移动 demo”项目旨在提供一个实例,演示如何在Android应用中实现这些功能。接下来,我们将深入探讨相关知识点。 1. **ImageView组件**:在Android中,显示图片的基本组件是`ImageView`。...

    android 可放大缩小拖动的ImageView

    通过实现`GestureDetector.SimpleOnGestureListener`接口来响应用户的双击、单击等手势动作,从而控制图片的放大、缩小等功能。`GestureDetector`是Android系统提供的用于识别复杂手势的类,可以方便地检测出如滑动...

    Android图片放大缩小

    以下是关于Android图片放大缩小的关键知识点和实现细节: 1. **ImageView组件**: Android中的`ImageView`是用于显示图像的基本组件。在实现图片缩放功能时,我们通常会用到它。通过设置`ImageView`的`scaleType`...

    android 实现图片放大缩小

    `android 实现图片放大缩小`的主题,意味着我们需要探讨如何在应用中实现对图片的缩放和平移功能,这通常涉及自定义ImageView子类来扩展其默认行为。在这个场景中,`DragImageView`就是我们自定义的组件,用于实现这...

    Android图片随手势放大缩小

    在Android开发中,实现图片随手势放大缩小的功能是一项常见的需求,尤其在查看照片、阅读电子书或使用图像编辑应用时。这项技术的核心是利用Android提供的触摸事件处理机制和矩阵操作来改变图片的缩放比例。以下将...

    android 图片放大与缩小

    在Android开发中,图片...综上所述,这个示例展示了如何使用自定义View和按键事件实现简单的图片放大缩小功能。在实际项目中,可能需要结合手势识别、`Matrix` 变换以及内存管理等技术来提供更流畅、更高效的用户体验。

    android 图片双击放大缩小

    在Android开发中,图片双击放大缩小是一种常见的交互方式,为用户提供更好的查看体验。这个开源项目 "ImageViewZoom-master" 正是提供了这样的功能,让用户在查看图片时可以通过双击手势来实现图片的缩放操作。下面...

    android应用源码图片放大缩小旋转涂鸦源码-IT计算机-毕业设计.zip

    这份"android应用源码图片放大缩小旋转涂鸦源码"是一个针对IT计算机专业学生的毕业设计项目,旨在帮助学生理解和实践Android App的开发流程。以下是基于这个主题的详细知识点解析: 1. **Android SDK与环境搭建**:...

    android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载

    android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...

    安卓图片的放大缩小及旋转

    总结一下,Android图片的放大缩小及旋转涉及到`ImageView`的使用、手势识别、`Matrix`变换以及图片的加载与内存管理。理解并掌握这些知识点,能够帮助开发者在Android应用中实现丰富的图片交互功能。在实际操作中,...

Global site tag (gtag.js) - Google Analytics