這個小DEMO是朋友發給小馬的,忘了是誰,在這感謝下他, 沒有這個DEMO我真不知道安卓水波紋是怎麼實作的,這個不多講了,模拟器中有點卡的樣子,大家在真機上試是正常的小馬直接上代碼,上效果,有需要的朋友下載下傳下附件DEMO就可以了, 裡面有些是調用NATIVE庫的,希望CPP高手C高手多留言指點指點,放在這,供大家下載下傳學習交流,吼吼,好東西,必須分享,這個DEMO,小馬不多講了,直接寫了,原因看注釋裡面就行的了 效果如下:
- package com.example.plasma;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.util.AttributeSet;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.Window;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Canvas;
- import android.graphics.Color;
- /**
- * @Title: AnimActivity.java
- * @Package com.example.plasma
- * @Description: 安卓水波紋效果制作學習
- * @author XiaoMa
- *
- * 這個小DEMO是朋友發給小馬的,忘了是誰,在這感謝下他,
- * 沒有這個DEMO我真不知道安卓水波紋是怎麼實作的,這個不多講了,
- * 模拟器中有點卡的樣子,大家在真機上試是正常的
- * 小馬直接上代碼,上效果,有需要的朋友下載下傳下附件DEMO就可以了
- * 裡面有些是調用NATIVE庫的,希望CPP高手C高手多留言指點指點,
- * 放在這,供大家下載下傳學習交流,吼吼,好東西,必須分享
- *
- */
- public class AnimActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(new PlasmaView(this));
- // this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- }
- }
- class PlasmaView extends View implements View.OnTouchListener{
- private Bitmap mBitmap;
- long time;
- long fps;
- public PlasmaView(Context context) {
- super(context);
- Bitmap bmp = BitmapFactory.decodeResource(this.getResources(),R.drawable.lvzi);
- mBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.RGB_565);
- AnimRender.setBitmap(bmp);
- this.setOnTouchListener(this);
- }
- @Override
- protected void onDraw(Canvas canvas) {
- long ct = System.currentTimeMillis();
- if(ct - time > 1000){
- time = ct;
- fps = 0;
- }
- fps++;
- AnimRender.render(mBitmap);
- canvas.drawBitmap(mBitmap, 0, 0, null);
- postInvalidate();
- }
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- AnimRender.drop((int)event.getX(), (int)event.getY(), 500);
- return false;
- }
- }
- class AnimRender{
- public static native void setBitmap(Bitmap src);
- public static native void render(Bitmap dst);
- public static native void drop(int x, int y, int height);
- static {
- System.loadLibrary("plasma");
- }
- }