package com.example.and6;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.util.AttributeSet;import android.widget.ImageView;public class MeshView  extends ImageView{Bitmap bitmap;//分割成50*50个格int WIDTH=50;int HEIGHT=50;//依次存放每一个点的 x y坐标float[]origs=new float[ ( (WIDTH+1)*(HEIGHT+1)  )*2];float[]verts=new float[origs.length];float k;boolean isStart=false;public MeshView(Context context) {super(context);init();}public MeshView(Context context, AttributeSet attrs) {super(context, attrs);init();}public MeshView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}@SuppressLint("NewApi")public MeshView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {super(context, attrs, defStyleAttr, defStyleRes);init();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);flagWave();k+=0.1f;canvas.drawBitmapMesh(bitmap, WIDTH, HEIGHT, verts, 0, null, 0, null);if (isStart) {invalidate();}}public void startAnim() {isStart=true;requestLayout();}public void stopAnim() {isStart=false;}private void init() {bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic);float bitmapHeight=bitmap.getHeight();float bitmapWidth=bitmap.getHeight();int index=0;for (int y = 0; y <= HEIGHT; y++) {float fy=bitmapHeight*y/HEIGHT;for (int x = 0; x <= WIDTH; x++) {float fx=bitmapWidth*x/WIDTH;origs[index*2+0]=verts[index*2+0]=fx;origs[index*2+1]=verts[index*2+1]=fy;index++;}}}private void flagWave() {for (int j = 0;j <= HEIGHT; j++) {for (int i = 0; i <= WIDTH; i++) {verts[ (j*(WIDTH+1)+i )*2+0 ]+=0;float offsetY=(float) Math.sin( i*1.0f/WIDTH*2*Math.PI + Math.PI*k);//k 实现周期变化verts[ (j*(WIDTH+1)+i )*2+1 ]=origs[ ( j*WIDTH+i )*2+1 ]+offsetY*100; //100 振幅}}}}


更多相关文章

  1. Android 坐标系统
  2. 学个明白--Android世界的坐标系
  3. android获取gps坐标
  4. Android View系列 - 坐标系
  5. Android AbsListView坐标体系解析
  6. android度量相对于地球坐标系的加速度
  7. Android 坐标系及动画移动坐标相关集合
  8. Android 自定义View之坐标系(一)
  9. android坐标系相关知识点

随机推荐

  1. Android(2017-2018)BAT面试题整理(java篇,
  2. Android机顶盒 adb命令模拟遥控器操作
  3. Android 常用ADB命令汇总!!! -- 持续补充
  4. Android中 备份短信 还原短信
  5. Animator记录一次属性动画实现的逐渐出现
  6. android链接rest services
  7. Android(安卓)studio修改apk release打包
  8. Android kotlin上传头像实现
  9. 《阿里巴巴Android开发手册》《深入探索A
  10. 使用 IntelliJ Debug Android 源码