这个小DEMO是朋友发给小马的,忘了是谁,在这感谢下他, 没有这个DEMO我真不知道安卓水波纹是怎么实现的,这个不多讲了,模拟器中有点卡的样子,大家在真机上试是正常的小马直接上代码,上效果,有需要的朋友下载下附件DEMO就可以了, 里面有些是调用NATIVE库的,希望CPP高手C高手多留言指点指点,放在这,供大家下载学习交流,吼吼,好东西,必须分享,这个DEMO,小马不多讲了,直接写了,原因看注释里面就行的了 效果如下:

Android 水波纹效果实现 _原因

主控制类代码如下:

  1.  
  2. package com.example.plasma;  
  3.  
  4. import android.app.Activity;  
  5. import android.content.Context;  
  6. import android.content.Intent;  
  7. import android.os.Bundle;  
  8. import android.util.AttributeSet;  
  9. import android.view.MotionEvent;  
  10. import android.view.View;  
  11. import android.view.Window;  
  12. import android.graphics.Bitmap;  
  13. import android.graphics.BitmapFactory;  
  14. import android.graphics.Canvas;  
  15. import android.graphics.Color;  
  16.  
  17.  
  18. /**    
  19. * @Title: AnimActivity.java  
  20. * @Package com.example.plasma  
  21. * @Description: 安卓水波纹效果制作学习  
  22. * @author XiaoMa  
  23.  
  24. * 这个小DEMO是朋友发给小马的,忘了是谁,在这感谢下他,  
  25. * 没有这个DEMO我真不知道安卓水波纹是怎么实现的,这个不多讲了,  
  26. * 模拟器中有点卡的样子,大家在真机上试是正常的  
  27. * 小马直接上代码,上效果,有需要的朋友下载下附件DEMO就可以了  
  28. * 里面有些是调用NATIVE库的,希望CPP高手C高手多留言指点指点,  
  29. * 放在这,供大家下载学习交流,吼吼,好东西,必须分享  
  30.  
  31. */ 
  32. public class AnimActivity extends Activity {  
  33.  
  34.     @Override 
  35.     public void onCreate(Bundle savedInstanceState){  
  36.         super.onCreate(savedInstanceState);  
  37.         setContentView(new PlasmaView(this));  
  38. //      this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  39.     }  
  40.       
  41.       
  42. }  
  43.  
  44. class PlasmaView extends View implements View.OnTouchListener{    
  45.     private Bitmap mBitmap;  
  46.     long time;  
  47.     long fps;  
  48.  
  49.     public PlasmaView(Context context) {  
  50.         super(context);          
  51.         Bitmap bmp = BitmapFactory.decodeResource(this.getResources(),R.drawable.lvzi);  
  52.         mBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.RGB_565);  
  53.         AnimRender.setBitmap(bmp);  
  54.         this.setOnTouchListener(this);  
  55.     }  
  56.  
  57.     @Override   
  58.     protected void onDraw(Canvas canvas) {  
  59.         long ct = System.currentTimeMillis();  
  60.         if(ct - time > 1000){  
  61.             time = ct;  
  62.             fps = 0;  
  63.         }  
  64.         fps++;        
  65.           
  66.         AnimRender.render(mBitmap);       
  67.         canvas.drawBitmap(mBitmap, 00null);  
  68.         postInvalidate();  
  69.     }  
  70.  
  71.     @Override 
  72.     public boolean onTouch(View v, MotionEvent event) {  
  73.         AnimRender.drop((int)event.getX(), (int)event.getY(), 500);  
  74.         return false;  
  75.     }  
  76. }  
  77.  
  78. class AnimRender{  
  79.     public static native void setBitmap(Bitmap src);  
  80.     public static native void render(Bitmap dst);  
  81.     public static native void drop(int x, int y, int height);  
  82.      
  83.     static {  
  84.         System.loadLibrary("plasma");  
  85.     }  
  86. }  

          最后,代码小马就放在附件里面,有需要的朋友可下载学习下,在此感谢发我这人小DEMO的朋友,特此感谢!谢谢...