android实现图片反转效果
作者:lijiao 发布时间:2022-09-24 20:48:11
标签:android,图片反转,图片翻转,图片水平翻转
可能有些同学不明白,为啥要图片反转(不是旋转哦),我们在游戏开发中,为了节省图片资源(空间) 有可能会使用到图片反转,例如,一个人物图片,面向左,或右,如果不能实现图片反转的情况下,就需要两张图片了,废话少说,看效果上代码:
在上图中,实际两个人物使用的是一张图片,只是针对一张图片做了处理而已。
详细代码:
public class ImageSurfaceView extends SurfaceView implements SurfaceHolder.Callback{
public Bitmap image_bitmap;
public ImageSurfaceView(Context context) {
super(context);
//添加回调
SurfaceHolder holder=this.getHolder();
holder.addCallback(this);
initBitmap(context);
}
public void initBitmap(Context context){
Resources r=context.getResources();
image_bitmap=BitmapFactory.decodeResource(r,R.drawable.ima);
}
//界面渲染
public void onDraw(Canvas canvas){
canvas.drawBitmap(image_bitmap,0,0, null); //输出第一张图片
//初始化Matrix 该类是针对图形做一些效果的工具类
Matrix m=new Matrix();
m.setScale(-1,1);
m.postTranslate(image_bitmap.getWidth()*2,0); //向右平移两个图片宽度的位置
canvas.drawBitmap(image_bitmap, m, paint); //输出第二张图片
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas=holder.lockCanvas(); //调用渲染界面的方法 渲染出界面
onDraw(canvas);
holder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}


猜你喜欢
- OkHttp流程图OkHttp基本使用gradle依赖implementation 'com.squareup.okhttp3:ok
- 这篇文章主要介绍了Java中 switch关键原理及用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 简单的理解,MyBatis逆向工程,就是通过相应插件,自动生成MyBatis数据库连接的一些文件。mybatis需要编写sql语句,myba
- 传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets
- 背景spring的profile大家都是用的溜的飞起~那么profile的组合如何使用呢???比如我们这样使用@Profile({"
- 本文实例为大家分享了C#实现网页画图的具体代码,供大家参考,具体内容如下代码贴着保存下using System;using System.C
- 目录前言connectTimeout:callTimeout:pingIntervalwriteTimeoutreadTimeout总结前言
- 前言 * 体系是Struts2框架的重要组成部分,不夸张的说,没有 * 体系,也就没有这么好用的Struts2框架了。在Struts2框架中
- 目录前言if-thenif-then-elseswitch使用 Stringwhiledo-whileforbreakcontinueret
- 一开始,学了 * 与过滤器,咋一看两者有点像,实际上两者有很大的不同。就用 * 和过滤器分别做了登录验证试验,这次先说 * 。下面是自己实践
- 本文实例讲述了Android开发之删除项目缓存的方法。分享给大家供大家参考,具体如下:如何删除项目的缓存:getCacheDir()能够得到
- 三态的基本概念1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据。用new创建的对象,它没有持久化,
- 线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开启好几个下载通道。当服务器提供下载服务时,使用下载者是共享带宽的
- 单例模式(Singleton),故名思议就是说在整个应用程序中,某一对象的实例只应该存在一个。比如,一个类加载数据库中的数据到
- 突然需要改一堆文件的后缀名,所以想编程解决,话不多说直接上代码javaimport java.io.File;import java.uti
- 基类:using System;using System.Collections.Generic;using System.Linq;usi
- 一、背景在Idea中有些文件无需与远程git库同步,仅是本地使用,比如*.iml 、.idea(文件夹)等。如果不进行设置,那么每次提交列表
- 引言我已经一个多星期没碰过电脑了,今日上班,打开电脑的第一件事就是想着写点什么。反正大家都还沉浸在节后的喜悦中,还没进入工作状态,与其浪费时
- 最近在用SpringMvc做Http接口时,对方在调用我接口时发现Date格式的默认转化为long,因此在前端页面看到的是一串数字。我们可以
- 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间