你的位置:首页 > 软件开发 > 操作系统 > 初识android中的动画

初识android中的动画

发布时间:2016-11-05 03:00:39
动画效果可以大大提高界面的交互效果,因此,动画在移动开发中的应用场景较为普遍。掌握基本的动画效果在成熟的软件开发中不可或缺。除此之外,用户对于动画的接受程度远高于文字和图片,利用动画效果可以加深用户对于产品的印象。因此本文给出安卓设计中几种常见的动画效果。 ...

       动画效果可以大大提高界面的交互效果,因此,动画在移动开发中的应用场景较为普遍。掌握基本的动画效果在成熟的软件开发中不可或缺。除此之外,用户对于动画的接受程度远高于文字和图片,利用动画效果可以加深用户对于产品的印象。因此本文给出安卓设计中几种常见的动画效果。

       基础知识

       在介绍安卓中的动画效果之前,有必要介绍一下安卓中的图片处理机制。图片的特效包括图形的缩放、镜面、倒影、旋转、平移等。图片的特效处理方式是将原图的图形矩阵乘以一个特效矩阵,形成一个新的图形矩阵来实现的。矩阵Matrix 类,维护了一个3*3 的矩阵去更改像素点的坐标。Android 手机的屏幕坐标系以左上角为原点,从左向右为x轴正方向,从上到下为y轴正方向。第一行表示像素点的x 坐标:x = 1*x + 0*y + 0*z,第二行表示像素点的y 坐标:y = 0*x + 1*y + 0*z,第三行表示像素点的z 坐标:z = 0*x + 0*y + 1*z。图片的特效处理正是通过更改图形矩阵的值来实现的,在android下Matrix这个类帮我们封装了矩阵的一些基本用法,所以我们可以直接使用即可。用代码编辑图片,最好处理都是图片在内存中的拷贝,不去处理原图,因此需要用Bitmap创建一个与原图大小一致,格式相同的空白位图。

    对照片进行操作的基本步骤:

      1. 创建一个空白的bitmap,宽高信息和原图保存一致;

      2. 创建一个画板;

      3. 创建一个画笔;

      4. 设置matrix矩阵;

      5. 对照着原图在画纸上面画出一模一样的样子出来。

      下面分别给出对图片缩放、平移、旋转、镜面操作的代码。

/**   * 图片缩放   *   */  private void zoom() {    Bitmap srcBitmap = BitmapFactory.decodeFile("mnt/sdcard/b.jpg");    iv_src.setImageBitmap(srcBitmap);    Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());    Canvas canvas = new Canvas(copyBitmap);    Paint paint = new Paint();    paint.setColor(Color.BLACK);    Matrix matrix = new Matrix();    matrix.setScale(0.6f, 0.6f);    canvas.drawBitmap(srcBitmap, matrix, paint);    iv_dest.setImageBitmap(copyBitmap);  }    /**   * 图片平移   *   */  public void translation(){    Options ops = new Options();    ops.inSampleSize = 4;  //等比放缩    Bitmap srcBitmap = BitmapFactory.decodeFile("/mnt/sdcard/b.jpg",ops);    iv_src.setImageBitmap(srcBitmap);    Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());    Canvas canvas = new Canvas(copyBitmap);    Paint paint = new Paint();    paint.setColor(Color.BLACK);    Matrix matrix = new Matrix();    matrix.setTranslate(100, 100);    canvas.drawBitmap(srcBitmap, matrix, paint);    iv_dest.setImageBitmap(copyBitmap);  }  /**   * 旋转   *   */  public void scole(){    Bitmap srcBitmap = BitmapFactory.decodeFile("/mnt/sdcard/b.jpg");    iv_src.setImageBitmap(srcBitmap);     Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());    Canvas canvas = new Canvas(copyBitmap);    Paint paint = new Paint();    paint.setColor(Color.BLACK);    Matrix matrix = new Matrix();    matrix.setRotate(180, srcBitmap.getWidth()/2, srcBitmap.getHeight()/2);//绕原点旋转    canvas.drawBitmap(srcBitmap, matrix, paint);    iv_dest.setImageBitmap(copyBitmap);  }  /**   * 镜面特效/倒影特效   * 原理一样,一个关于x轴旋转,一个关于y轴旋转   */  public void mirror(){    Bitmap srcBitmap = BitmapFactory.decodeFile("/mnt/sdcard/b.jpg");    iv_src.setImageBitmap(srcBitmap);    Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());    Canvas canvas = new Canvas(copyBitmap);    Paint paint = new Paint();    paint.setColor(Color.BLACK);    Matrix matrix = new Matrix();    matrix.setScale(-1, 1);    matrix.postTranslate(srcBitmap.getWidth(), 0);    canvas.drawBitmap(srcBitmap, matrix, paint);    iv_dest.setImageBitmap(copyBitmap);  }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:初识android中的动画

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录