`

android

阅读更多
package funo.com.test;

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组件设计思想

    Android应用开发的哲学是把一切都看作是组件。把应用程序组件化的好处是降低模块间的耦合性,同时提高模块的复用性。Android的组件设计思想与传统的组件设计思想最大的区别在于,前者不依赖于进程。也就是说,进程...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    Android框架揭秘.pdf

    《Android框架揭秘》通过对Android系统源代码的分析,主要介绍Android框架的初始化过程及主要组件的工作原理。作者直接分析和整理了Android框架的主要源代码,并详细讲解了理解框架工作原理所需的各种基础知识和构成...

    android应用开发范例精解

    第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...

    Android BLE蓝牙例子(包括android版Lightblue)实例源码

    源码里面有Bluetooth4_3/BLEDemo/Android_Lightblue.apk三个.前两个是BLE的demo。BLEDemo这个功能较Bluetooth4_3多一些,有兴趣的可以都看下。Android_Lightblue.apk是Android版的lightblue,在进行ble开发的时候用...

    Android BLE开发之Android手机与BLE终端通信 程序文件

    Android 4.3才开始支持BLE API,所以请各位客官把本文代码运行在蓝牙4.0和Android 4.3及其以上的系统,另外本文所用的BLE终端是一个蓝牙4.0的串口蓝牙模块。 PS:我的i9100刷了4.4系统后,竟然也能跟BLE蓝牙模块通信...

    Android 8.0.0 (API 26) SDK Platform

    使用: export ANDROID_HOME="/opt/android-...# mv /opt/android-sdk/platforms/android-8.0.0 /opt/android-sdk/platforms/android-26 官网下载地址:https://dl.google.com/android/repository/platform-26_r01.zip

    Android 7.1.1 (API 25) SDK Platform 下载

    # mv /opt/android-sdk/platforms/android-25/android-7.1.1/* /opt/android-sdk/platforms/android-25/ # rm -rf /opt/android-sdk/platforms/android-25/android-7.1.1 官网下载地址:...

    Android support.v7包

    Android support.v7包

    android系统原理及开发要点详解

     第1章“Android系统概述”,概述Android系统方面的内容,包括智能手机平台的发展历程、Android系统的特点、Android的3种开发工作,以及Android的2种不同的开发方式。  第2章“Android系统开发综述”,介绍Android...

    android 经典代码例子

    android 经典代码例子,若干个。。。。

    c#开发Android应用实战

    《C#开发Android应用实战——使用Mono for Android和.NET/C# 全面透彻地讲解Android应用编程知识,分析如何结合使用C#和Mono来编写在Android设备系列上运行的应用程序。在这本由多位专家联袂撰写的必备精品书籍的...

    Android游戏源码大合集(主要是AndEngine和Libgdx的)

    最近在网络上看到有网友抱怨Android游戏源码找不到,所以小弟收集了一些AndEngine和Libgdx的游戏源码,以Eclipse工程的形式配置好环境,再陆续发出(某引擎避嫌,不在此列)。 虽说主要是由Libgdx与AndEngine开发的...

    Android平台开发之旅(第2版).pdf

    《Android平台开发之旅(第2版)》涵盖Android 3/4的新特性,立足实际的开发案例,介绍了Android平台开发的基础概念、实用技术和应用模式。主要内容包括应用程序框架、高级界面、数据库应用、网络通信与Web开发、无线...

    Android客户端调用webService上传图片到服务器

    调用服务器的webservice接口,实现从Android上传图片到服务器,然后从服务器下载图片到Android客户端 从Android端用io流读取到要上传的图片,用Base64编码成字节流的字符串,通过调用webservice把该字符串作为参数...

    Android应用程序输入事件处理机制

    在Android应用程序中,有一类特殊的消息,是专门负责与用户进行交互的,它们就是触摸屏和键盘等输入事件。触摸屏和键盘事件是统一由系统输入管理器InputManager进行分发的。也就是说,InputManager负责从硬件接收...

    《Google Android SDK开发范例大全(第3版)》.pdf

     全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及...

    Android开发之旅 完整版pdf

    • Android 开发之旅:android架构 • Android 开发之旅:应用程序基础及组件 • Android 开发之旅:应用程序基础及组件(续) • Android 开发之旅:活动与任务 • Android 开发之旅:进程与线程 • Android ...

Global site tag (gtag.js) - Google Analytics