登录
首页 » Android » Android 使用Matrix.postRotate方法旋转图片

Android 使用Matrix.postRotate方法旋转图片

于 2022-03-14 发布 文件大小:32.93 kB
0 283
下载积分: 2 下载次数: 1

代码说明:

Android图像操作一例,使用Matrix.postRotate方法旋转图片,这些的图片格式是BMP,其它格式可能也能用吧,没测试,旋转BMP图片的效果如截图所示,用户单击向左或向右按钮后,图片旋转90度,旋转角度根据自己需要自定义。旋转方法主要是使用Matrix.postRotate,旋转的过程保持图片原有的比例,实现思路,以向左旋转图片为例:   程序刚运行,加载默认的Drawable ,设置维持的图像比例,ScaleTimes=1,维持1:1的宽高比例,使用Matrix.postScale设置维度 ,使用Matrix.postRotate方法旋转Bitmap,然后再创建新的Bitmap对象。   向右旋转则与此相似,具体实现请下载源码包。

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • android监听网络连接状态
    应用背景你是否见过android的app在断网的情况下打开之后不出现界面, 然后打开网络的时候还是不会出现界面,这就需要在activity中检测网络的连接状态, 这时候如果有网络你就可以做网络访问了,如果没有网络的话,就继续监听 一旦网络连接了,就会自动去加载你要联网的操作, 关键技术 此源码是检测网络状态是否连接,在activity创建的时候检查一遍是否有网络
    2022-08-10 15:04:07下载
    积分:1
  • 人脸识别APP代码
    人脸识别APP代码,安卓开发环境,手机端识别人脸。 人脸识别APP代码,安卓开发环境,手机端识别人脸。
    2022-07-02 19:37:58下载
    积分:1
  • Android带AI的局域网对战五子棋游戏
    Android编写的支持AI技术的局域网对战五子棋游戏,人机对战响应、人人对战响应、退出游戏响应、更多游戏响应则跳转到相应的游戏下载界面。   同时游戏中还涉及到消息处理(弹出一些提示消息等)、退出房间响应、棋盘监听(主要是监听游戏是否开始)、重置棋手信息、发送处理消息、通讯监听(主要是监听请求进入游戏的对手信息)、退出当前游戏(如果是主机身份请求退出游戏界面 则撤销建立的主机 返回准备界面)等的响应处理。
    2022-08-22 07:40:00下载
    积分:1
  • GooglePAndroidcode
    全部内容基于Android SDK 随书附赠400多分钟的详细教学视频,286段示例代码 从事一线开发的作者团队提供在线答疑.(GoogleAndroidDevelopment and Practice)
    2013-11-19 14:12:36下载
    积分:1
  • 3D打印机固件Repetier-Firmware
    应用背景#define NUM_EXTRUDER 1 #define MOTHERBOARD 33 #include "pins.h" // ################## EDIT THESE SETTINGS MANUALLY ################ // ################ END MANUAL SETTINGS ########################## #define FAN_BOARD_PIN -1 //#define EXTERNALSERIAL  use Arduino serial library instead of build in. Requires more ram, has only 63 byte input buffer. // Uncomment the following line if you are using arduino compatible firmware made for Arduino version earlier then 1.0 // If it is incompatible you will get compiler errors about write functions not beeing compatible! //#define COMPAT_PRE1 #define BLUETOOTH_SERIAL  -1 #define BLUETOOTH_BAUD  115200 #define MIXING_EXTRUDER 0 #define DRIVE_SYSTEM 0 #define XAXIS_STEPS_PER_MM 80 #define YAXIS_STEPS_PER_MM 80 #define ZAXIS_STEPS_PER_MM
    2022-06-20 21:55:21下载
    积分:1
  • 声波通信
    * 1. 识别率更高,支付宝,等软件的识别效率更高。 * 2. 复杂的环境下,依然能保持很高的识别率。 * 3. 能支持更多token的识别,通过编码可以传送所有字符。 * 4. 通过定制可以实现相同字符的连续传递,比如“234456”。 * 5. 支持自动纠错功能,在有3个以内字符解码出错的情况下可以自动纠正。 * 6. 程序运行效率非常高,可以用于智能手机,功能手机,嵌入式设备,PC,平板等嵌入式系统上。 * 7. 声波的频率声音和音量可定制。
    2022-03-05 04:58:12下载
    积分:1
  • android-phone-battery-sourcecode
    在装有android系统的手机上,该程序可以检测手机电池的存余量并显示。(This program can detect the battery of the phone and show the amount of the battery.)
    2011-12-01 21:44:58下载
    积分:1
  • Android tcp通讯学习用
    核心代码:package com.Test;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.app.Activity;import android.view.Menu;import android.widget.Button;import android.view.View;import android.view.View.OnClickListener;import java.io.BufferedInputStream;import java.io.InputStream;import java.io.OutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.PrintWriter;import java.io.Reader;import java.net.Socket;import java.net.ServerSocket;import java.net.UnknownHostException;import android.view.TextureView;import android.widget.EditText;import java.lang.String;import java.lang.Thread;public class MainActivity extends Activity implements OnClickListener{ private Button m_btn; private Button m_sendbtn; private ServerSocket mySerSocket; private Socket clientSocket; private EditText m_edit; private String line; boolean conn = true; private Socket accSocket; private static final String Host = "10.0.2.2"; private static final int Port = 12000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); m_btn = (Button)findViewById(R.id.button1); m_sendbtn = (Button)findViewById(R.id.button2); m_edit = (EditText)findViewById(R.id.editText1); //m_btn.setOnClickListener(this); m_btn.setOnClickListener(new ReceiverListener()); m_sendbtn.setOnClickListener(this); //Socket clientSocket = new Socket(Host, Port); } class ReceiverListener implements OnClickListener { private ReceiveThread mReceiveThread = null; private boolean stop = true; private Handler mHandler = null; public void onClick(View v) { try { if(clientSocket == null) { clientSocket = new Socket(Host, Port); } // InputStream myInputStream = clientSocket.getInputStream();// // //BufferedReader in = new BufferedReader(new InputStreamReader(myInputStream));//// byte [] buffer = new byte[myInputStream.available()]; //int temp = 0; //String strMsg = in.readLine(); // myInputStream.read(buffer);// // // String strMsg = new String(buffer);// // m_edit.setText(strMsg);// while ((temp = myInputStream.read(buffer)) != -1)// {// m_edit.setText(new String(buffer, 0, temp));//// } mReceiveThread = new ReceiveThread(clientSocket); stop = false; mReceiveThread.start(); } catch (IOException e) { e.printStackTrace(); } //消息处理 mHandler = new Handler() { public void handleMessage(Message msg) { m_edit.setText((msg.obj).toString()); } }; } private class ReceiveThread extends Thread { private InputStream inStream = null; private byte[] buf; private String str = null; ReceiveThread(Socket s) { try { this.inStream = s.getInputStream(); } catch(IOException e) { e.printStackTrace(); } } public void run() { while(!stop) { this.buf = new byte[512]; try { this.inStream.read(this.buf); } catch(IOException e) { e.printStackTrace(); } try { this.str = new String(this.buf, "GB2312").trim(); } catch(UnsupportedEncodingException e) { e.printStackTrace(); } Message msg = new Message(); msg.obj = this.str; mHandler.sendMessage(msg); } } } } public void onClick(View v) {// if (v.getId() == R.id.button1)// {// new Thread()// {// public void run()// {// try // {// if(clientSocket == null)// {// clientSocket = new Socket(Host, Port);// } // InputStream myInputStream = clientSocket.getInputStream();// // BufferedReader in = new BufferedReader(new InputStreamReader(myInputStream));//// byte [] buffer = new byte[1024 * 4];//// int temp = 0;// // String strMsg = in.readLine();// // //myInputStream.read(buffer);// // //String strMsg = new String(buffer);// // m_edit.setText(strMsg);////// while ((temp = myInputStream.read(buffer)) != -1)//// {//// m_edit.setText(new String(buffer, 0, temp));//////// }// // }// catch (IOException e)// {// e.printStackTrace();// }// }// }.start();// // } if(v.getId() == R.id.button2) { new Thread() { public void run() { try { if(clientSocket == null) { clientSocket = new Socket(Host, Port); } //inputStream clientInputStream = clientSocket. String msg = "RESET-SHOW"; //InputStream clientInputStream = clientSocket.getInputStream(); //BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); //BufferedReader br = new BufferedReader(); //line = br.readLine(); OutputStream clientOutputStream = clientSocket.getOutputStream(); byte buffer[]=msg.getBytes(); clientOutputStream.write(buffer); clientOutputStream.flush(); //int temp = 0; // PrintWriter out = new PrintWriter(clientOutputStream);// // out.println("Serer Message: " msg); } catch(IOException e) { e.printStackTrace(); } } }.start(); } }private Reader InputStreamReader() { // TODO Auto-generated method stub return null; }// private Handler handler = new Handler()// {// public void handleMessage(Message msg)// {// super.handleMessage(msg);// //处理UI// m_edit.setText("Finish");// Log.i("PDA", "Finish");// // }// }; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
    2014-08-18下载
    积分:1
  • Android应用源码随手记安卓记账项目
    Android应用源码随手记安卓记账项目
    2015-03-09下载
    积分:1
  • android二维码生成与扫描demo
    android二维码生成与扫描demo,android二维码生成与扫描demoandroid二维码生成与扫描demo,android二维码生成与扫描demo,android二维码生成与扫描demo,android二维码生成与扫描demo,android二维码生成与扫描demo,android二维码生成与扫描demo
    2022-10-24 01:55:04下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载