天天看點

Android 水波紋效果實作

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

<a target="_blank" href="http://blog.51cto.com/attachment/201203/192858302.gif"></a>

主要制類代碼如下:

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 &gt; 1000){  

            time = ct;  

            fps = 0;  

        }  

        fps++;        

        AnimRender.render(mBitmap);       

        canvas.drawBitmap(mBitmap, 0, 0, null);  

        postInvalidate();  

    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");  

          最後,代碼小馬就放在附件裡面,有需要的朋友可下載下傳學習下,在此感謝發我這人小DEMO的朋友,特此感謝!謝謝...

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

繼續閱讀