波纹效果

安卓的一个简单的波纹特效,网上学习到的,分享一下。

 

Activity代码:

 

package com.example.plasma;

import java.io.File;
import java.io.IOException;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Environment;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;


public class AnimActivity extends Activity {
    public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);

		setContentView(new PlasmaView(this));
	}
    
}

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.mm);
        mBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.RGB_565);
        AnimRender.setBitmap(bmp);
        this.setOnTouchListener(this);
    }

    protected void onDraw(Canvas canvas) {
    	long ct = System.currentTimeMillis();
    	if(ct - time > 500){
    		Log.v("Fps:" + String.valueOf(fps));
    		time = ct;
    		fps = 0;
    	}
    	fps++;
    	
        AnimRender.render(mBitmap);    	
        canvas.drawBitmap(mBitmap, 0, 0, null);
        postInvalidate();
    }

    //屏幕触碰
	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub
		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");
    }
}

 

 

Log.java代码:

 

package com.example.plasma;

import android.util.Config;

public class Log {
	public final static String LOGTAG = "ad";

	private static final boolean DEBUG = true;
	//private static final boolean DEBUG = false;
	static final boolean LOGV = DEBUG ? Config.LOGD : Config.LOGV;

	public static void v(String msg) {
		if (LOGV) {
			android.util.Log.v(LOGTAG, msg);
		}
	}

	public static void e(String msg) {
		android.util.Log.e(LOGTAG, msg);
	}
	
	public static void d(String msg) {
		android.util.Log.d(LOGTAG, msg);
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值