不多说,直接上代码:

 package com.example.test;

 import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Cap;
import android.graphics.Paint.Join;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View; public class GuaGuaKaActivity extends Activity {
int screenWidth = 0;
int screenHeight = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels; setContentView(new GuaGuaKa(this));
}
class GuaGuaKa extends View{
private Canvas mCanvas = null;
private Path mPath = null;
private Paint mPaint = null;
private Bitmap bitmap = null;
public GuaGuaKa(Context context) {
super(context);
init(context);
} private void init(Context context) {
setBackground(); mPath = new Path();
bitmap = Bitmap.createBitmap(screenWidth, screenHeight, Config.ARGB_8888);
mPaint = new Paint();
mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setStyle(Style.STROKE);
mPaint.setStrokeWidth(10);
mPaint.setStrokeCap(Cap.ROUND);
mPaint.setStrokeJoin(Join.ROUND);
mPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
mPaint.setAlpha(0); mCanvas = new Canvas(bitmap);
mCanvas.drawColor(Color.GRAY);
} private void setBackground() {
Paint paint = new Paint();
Bitmap bitmap = Bitmap.createBitmap(screenWidth,screenHeight,Config.ARGB_8888);
paint.setTextSize(30);
paint.setColor(Color.BLACK);
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
paint.setAntiAlias(true); Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.drawText("谢谢惠顾", 100, 100, paint);
canvas.drawText("再来10瓶", 100, 250, paint);
setBackgroundDrawable(new BitmapDrawable(getResources(), bitmap)); } @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mCanvas.drawPath(mPath, mPaint);
canvas.drawBitmap(bitmap, 0, 0, null);
}
int x = 0;
int y = 0;
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
int currX = (int) event.getX();
int currY = (int) event.getY();
switch(action){
case MotionEvent.ACTION_DOWN:{
mPath.reset();
x = currX;
y = currY;
mPath.moveTo(x, y);
}break;
case MotionEvent.ACTION_MOVE:{
mPath.quadTo(x, y, currX, currY);
x = currX;
y = currY;
postInvalidate();
}break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:{
mPath.reset();
}break;
}
return true;
}
}
}

参考:

1、Android中Path类的lineTo方法和quadTo方法画线的区别:http://blog.csdn.net/stevenhu_223/article/details/9229337

2、android.graphics.Paint方法setXfermode :http://my.oschina.net/smalant/blog/40328

												

Android刮刮卡效果的更多相关文章

  1. Android 自定义View修炼-【2014年最后的分享啦】Android实现自定义刮刮卡效果View

    一.简介: 今天是2014年最后一天啦,首先在这里,我祝福大家在新的2015年都一个个的新健康,新收入,新顺利,新如意!!! 上一偏,我介绍了用Xfermode实现自定义圆角和椭圆图片view的博文& ...

  2. Android 自定义控件实现刮刮卡效果 真的就只是刮刮卡么

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40162163 , 本文出自:[张鸿洋的博客] 很久以前也过一个html5的刮刮卡 ...

  3. Android 自己定义控件实现刮刮卡效果 真的就仅仅是刮刮卡么

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40162163 , 本文出自:[张鸿洋的博客] 非常久以前也过一个html5的刮刮 ...

  4. 【Android - 自定义View】之自定义View实现“刮刮卡”效果

    首先来介绍一下这个自定义View: (1)这个自定义View的名字叫做 GuaguakaView ,继承自View类: (2)这个View实现了很多电商项目中的“刮刮卡”的效果,即用户可以刮开覆盖层, ...

  5. Android打造完美的刮刮乐效果控件

    技术:Android+Java   概述 趁着元旦假期之际,首先在这里,我祝福大家在新的2019年都一个个的新健康,新收入,新顺利,新如意!!! 上一偏,我介绍了用Xfermode实现自定义圆角和椭圆 ...

  6. qt qml 刮刮卡效果

    用canvas+mouseArea实现的刮刮卡效果. 表层是一层色彩,用手指划开,可看到下面的文字Lisence: MIT, 请保留本文档说明Author: surfsky.cnblogs.com 2 ...

  7. Html5实现移动端、PC端 刮刮卡效果

    刚从南方回来就分了一个刮刮卡效果的页面,特么的我在烦恼怎么用H5去实现这个效果呢,好不容易写出来了,产品居然说:“既然你可以写出来这个效果那当然好了,开始我只是打算让你实现点击就出现呢!”… … 尼玛 ...

  8. 用BlendFunc实现舞台灯光和刮刮卡效果

    [转]http://code.lovemiao.com/?p=136#more-136 之前写过一篇<不规则形状按钮的点击判定>,利用了CCRenderTexture创建一块画布,可以在上 ...

  9. 使用HTML5实现刮刮卡效果

    你玩过刮刮卡么?一不小心可以中奖的那种.今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果. 我们利用HTML5 ...

  10. 【Android界面实现】使用Canvas对象实现“刮刮乐”效果

    在淘宝.京东等电商举办活动的时候,常常能够看到在移动client推出的各种刮奖活动,而这样的活动也受到了非常多人的喜爱.从client的体验来说,这样的效果应该是通过网页来实现的,那么,我们使用And ...

随机推荐

  1. JMeter (2) —— JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial)

    JMeter (2) -- JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial) 主要内容 JMeter与WebDriver测试用户登陆以CAS SSO为例 环 ...

  2. VS2013安装MVC5

    打开VS 选择  .net 4.5 创建项目 右击项目 选择管理NuGet 输入Microsoft.AspNet.Mvc -Version 5.0.0 安装最新版本的MVC5

  3. js jQuery 右键菜单 清屏

    主要用到了oncontextmenu事件,在oncontextmenu事件中使用return false 屏蔽掉原生右键菜单,再使用event获取鼠标的坐标位置,设置自定义菜单的位置. http:// ...

  4. [spark] spark安装和基础使用

    [下载] 注意选择spark版本时,与hadoop的版本要搭配 http://spark.apache.org/downloads.html [安装]

  5. 初学Android的几个常见问题

    1.关于开发环境搭配,可以到网站http://developer.android.com/sdk/index.html下载adt-bundle-windows-x86-20131030.zip,里面包 ...

  6. Android单行本+多渠道脚本工具

    多渠道包的build相信广大android开发者应该很熟悉了,既可以用ant,写一写正则替换然后build出n个apk, 有时后情况会更复杂些,你比如你有一个app,需要build出一些单行本,代码基 ...

  7. Numpy 利用数组进行数据处理

    Numpy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环). 用数组表达式代替循环的做法,通常被称为矢量化.一般来说,矢量化数组运算要比等价的纯跑一趟湖南快 上一两个数量级( ...

  8. C++ 指针二维数组, C++二维指针数组笔记

    C++ 二维动态数组 一. 已知第一维 #include <iostream> using namespace std; int main(int argc, char const *ar ...

  9. [转]java加密算法简要介绍

    本篇内容简要介绍BASE64.MD5.SHA.HMAC几种加密算法.     BASE64编码算法不算是真正的加密算法.     MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密 ...

  10. (转)Android 5.1.1 源码目录结构

    转自:http://blog.csdn.net/tfslovexizi/article/details/51888458最近公司培训新同事,我负责整理一点关于android的基础知识,遥想当年,刚接触 ...