public class Demo01 extends Activity{
private Bitmap bitmap = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this, R.drawable.background));
} private class MyView extends View{
private final int WIDTH = 20;
private final int HEIGHT = 20;
private final int COUNT = (WIDTH+1)*(HEIGHT+1);
private final float[] verts = new float[COUNT*2];
private final float[] orgs = new float[COUNT*2];
public MyView(Context context,int drawableId) {
super(context);
setFocusable(true);
bitmap = BitmapFactory.decodeResource(getResources(), drawableId);
float bitmapWidth = bitmap.getWidth();
float bitmapHeight = bitmap.getHeight();
int index = 0;
for(int y=0;y<=HEIGHT;y++){
float fy = bitmapHeight / WIDTH * y;
for(int x = 0;x<=WIDTH;x++){
float fx = bitmapWidth / HEIGHT * x;
verts[index*2 + 0 ] = orgs[index*2 + 0] = fx;
verts[index*2 + 1 ] = orgs[index*2 + 1] = fy;
index ++;
}
}
setBackgroundColor(Color.WHITE);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmapMesh(bitmap, WIDTH, HEIGHT, verts, 0, null, 0, null);
} private void warp(float fx , float fy){
for(int i=0;i<COUNT*2;i+=2){
float dx = fx - orgs[i+0];
float dy = fy - orgs[i+1];
float dd = dx*dx + dy*dy;
float d = (float) Math.sqrt(dd);
float pull = 80000 / (float)(dd*d);
if(pull > 1){
verts[i+0] = fx;
verts[i+1] = fy;
}else{
verts[i+0] = orgs[i+0] + dx*pull;
verts[i+1] = orgs[i+1] + dy*pull;
}
}
invalidate();
} @Override
public boolean onTouchEvent(MotionEvent event) {
warp(event.getX(),event.getY());
return true;
}
}
}

Android实现能够揉动的图片的更多相关文章

  1. Android实现自定义带文字和图片的Button

    Android实现自定义带文字和图片的Button 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就 ...

  2. Android学习笔记进阶之在图片上涂鸦(能清屏)

    Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...

  3. Android实现OCR扫描识别数字图片之图片扫描识别

    [Android实例] Android实现OCR扫描识别数字图片之图片扫描识别 Android可以识别和扫描二维码,但是识别字符串呢? google提供了以下解决方案用的是原来HP的相关资料. 可以吧 ...

  4. Android TextView背景颜色与背景图片设置

    Android TextView 背景颜色与背景图片设置,android textview 控件,android textview 背景, android textview 图片,android te ...

  5. Android尽量避免使用开发jpg图片

    因为jpgeasy失真,因此,Android尽量避免使用开发.jpg图片,相反,使用.png图片,它使用LZ77衍生无损数据压缩算法. 事实上在这一点上,Google他已经暗示我们: 发现了没有,在r ...

  6. Android的ListView异步加载图片时,错位、重复、闪烁问题的分析及解决方法

    Android ListView异步加载图片错位.重复.闪烁分析以及解决方案,具体问题分析以及解决方案请看下文. 我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图 ...

  7. Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38140505 自从Gallery被谷歌废弃以后,Google推荐使用ViewPa ...

  8. 图解android开发在界面上显示图片

    图解android开发在界面上显示图片<申明:转自百度> <原文章地址:http://jingyan.baidu.com/article/49711c6153a277fa441b7c ...

  9. [Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络)

    [Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络) 地址: http://www.eoeandroid.com/thread-918356-1-1.html h ...

随机推荐

  1. [JavaEE] DWR框架实现Ajax

    Ajax是时下比较流行的一种web界面设计新思路,其核心思想是从浏览器获取XMLHttp对象与服务器端进行交互. DWR(Direct Web Remoting)就是实现了这种Ajax技术的一种web ...

  2. BPM不同表单之间子表的赋值

    上次写的是同一个表单的子表之间赋值,这次是不同表单之间子表的赋值 首先,我们给需要赋值的表单添加一个复制按钮 $.MvcSheet.AddAction({            Action: &qu ...

  3. c++对象关系映射(ORM)框架

    ORM(Object Relational Mapping, 对象关系映射),用来将基于对象的数据结构映射到SQL的数据结构中,即将基于对象的数据映射到关系表中的字段,然后我们可以通过对象提供的接口来 ...

  4. C - Elephant(贪心)

    Problem description An elephant decided to visit his friend. It turned out that the elephant's house ...

  5. ACM-ICPC北京赛区[2017-11-19]

    Domains K-Dimensional Foil Graph Chinese Checkers Cats and Fish #include<stdio.h> #include< ...

  6. hdu 2485 Destroying the bus stations 最小费用最大流

    题意: 最少需要几个点才能使得有向图中1->n的距离大于k. 分析: 删除某一点的以后,与它相连的所有边都不存在了,相当于点的容量为1.但是在网络流中我们只能直接限制边的容量.所以需要拆点来完成 ...

  7. Android PopupWindow使用方法小结

    前几天要用到PopupWindow,一时竟想不起来怎么用,赶紧上网查了查,自己写了个demo,并在此记录一下PopupWindow的用法. 使用场景 PopupWindow,顾名思义,就是弹窗,在很多 ...

  8. OData + jqgrid 部署在IIS 8.0上可增加但不能删除修改问题

    解决方法: <system.webServer>里添加 <modules> <remove name="WebDAVModule" /> < ...

  9. vue首次进入微信没有标题问题

    首先实在路由改变的时候可以有标题的    首次进入路由不显示标题,查到很多,最有解决可以自定义标签, 后者引入一个包vue-wechat-title,我就是用的后者,前面的没有式过 上地址  http ...

  10. Verilog之$sreadmemb

    1 Memories  Memories file format is shown below, the address is specified as @ <address> in he ...