Android水波紋效果實現

技術小胖子發表於2017-11-07

    這個小DEMO是朋友發給小馬的,忘了是誰,在這感謝下他, 沒有這個DEMO我真不知道安卓水波紋是怎麼實現的,這個不多講了,模擬器中有點卡的樣子,大家在真機上試是正常的小馬直接上程式碼,上效果,有需要的朋友下載下附件DEMO就可以了, 裡面有些是呼叫NATIVE庫的,希望CPP高手C高手多留言指點指點,放在這,供大家下載學習交流,吼吼,好東西,必須分享,這個DEMO,小馬不多講了,直接寫了,原因看註釋裡面就行的了 效果如下:

主控制類程式碼如下:


  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的朋友,特此感謝!謝謝…

     本文轉自華華世界 51CTO部落格,原文連結:http://blog.51cto.com/mzh3344258/808842,如需轉載請自行聯絡原作者


相關文章