导航:首页 > 操作系统 > android刮刮卡

android刮刮卡

发布时间:2023-01-18 16:20:50

Ⅰ 淘宝里面的刮刮卡在哪里面!求帮助

淘宝里面的刮刮卡只适用于手机和Ipad,需要下载一个淘宝手机客户端,打开之后,页面上就有大大的宣传广告,直接点击进入即可。
1、手机参与方式:可以通过手机淘宝客户端(ios3.4.0及以上或android3.9.3及以上版本)活动入口,或使用扫一扫功能扫描“3.8手机淘宝生活节”平面广告上或淘宝、天猫页面上的二维码进入活动页面
2、ipad参与方式:用户可以通过ipad淘宝客户端(2.3.3版本及以上)各活动入口点击进入活动页面。

Ⅱ 携程那个刮刮卡是从客户端哪里进去啊

您好!感谢您对携程旅行网的关注!


您登录携程旅行客户端之后,在“我的-我的钱包-返现-2元博大礼 抢4999红包”中进入刮刮卡的页面哦。如有问题,建议您在关注携程微信(iCtrip)后,在9:00-18:00之间发送“KF”进入人工告知您的订单号及具体事宜,我们会有专员为您核实处理。


更多优惠信息,欢迎点击这里:http://www.dwz.cn/sPrvQ了解一下~~


#抢500元红包#活动火热上线,下载“携程旅行”APP↙↙↙


IOS客户端:http://m.ctrip.com/m/c270?app=1;


Android客户端:http://m.ctrip.com/m/c270?app=3,


☆立即领取专属红包,让您的暑期不再“宅”~“携程在手,说走就走!”


动动手指,扫描以下二维码图片即可下载,预订咨询更容易哦~

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

新手的话,先学习一下现有的控件怎么用,如何把它们组织起来完成特定的任务,熟悉之后再琢磨自定义控件开发也不迟的。学习不只是看示例,试着写一写,运行一下,成功以后再考虑如何作出改动,动手比较重要,比你看十遍的效果都要好得多,希望对你有帮助。

Ⅳ android ui开发中,常见的刮刮卡是通过什么布局实现的

思想:
将一个View设计成多层,内层(包括中奖信息)和外层(用于刮奖),外层的图层用Canvas与一个Bitmap关联,用这个关联的Bitmap来处理手势的滑动,类似于刮奖的动作。
使用paint.setXfermode 来进行消除手势滑动区域

package com.jackie.guaguale;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
* Created by Administrator on 2015/7/29.
*/
public class GuaView extends View {
private Path mPath;
private Paint mInnerPaint; //内层图层Paint
private Paint mOuterPaint; //外层图层Paint
private Bitmap mGuaBitmap; //用于处理刮奖的Bitmap
private Bitmap mOuterBitmap; //外层图层Bitmap
private Canvas mCanvas;

private int mWidth, mHeight;

private float mLastX;
private float mLastY;

private String mText;

public GuaView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}

private void init() {
mPath = new Path();
mOuterPaint = new Paint();
mInnerPaint = new Paint();

//创建外层图层
mOuterBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.guaguaka).(Bitmap.Config.ARGB_8888, true);
mText = ¥500;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);

mWidth = mOuterBitmap.getWidth();
mHeight = mOuterBitmap.getHeight();

//创建内层图层
mGuaBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mGuaBitmap);
mCanvas.drawBitmap(mOuterBitmap, 0, 0, null); //将mOuterBitmap画到mCanvas上,与mGuaBitmap关联

setOuterPaint();
setInnerPaint();
}

private void setInnerPaint() {
mInnerPaint.setColor(Color.RED);
mInnerPaint.setStyle(Paint.Style.STROKE);
mInnerPaint.setStrokeCap(Paint.Cap.ROUND);
mInnerPaint.setStrokeJoin(Paint.Join.ROUND);
mInnerPaint.setAntiAlias(true);
mInnerPaint.setDither(true); //防抖
mInnerPaint.setStrokeWidth(5);
mInnerPaint.setTextSize(100);
mInnerPaint.setTextAlign(Paint.Align.CENTER);
}

private void setOuterPaint() {
mOuterPaint.setColor(Color.GREEN);
mOuterPaint.setStyle(Paint.Style.STROKE);
mOuterPaint.setStrokeCap(Paint.Cap.ROUND);
mOuterPaint.setStrokeJoin(Paint.Join.ROUND);
mOuterPaint.setAntiAlias(true);
mOuterPaint.setDither(true); //防抖
mOuterPaint.setStrokeWidth(20);
}

@Override //Path
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mLastX = x;
mLastY = y;
mPath.moveTo(x, y);
break;
case MotionEvent.ACTION_MOVE:
float deltaX = Math.abs(x - mLastX);
float deltaY = Math.abs(y - mLastY);
if (deltaX > 5 || deltaY > 5) {
mPath.lineTo(x, y);
}
mLastX = x;
mLastY = y;
break;
case MotionEvent.ACTION_UP:
break;
}
invalidate();
return true;
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

canvas.drawColor(Color.parseColor(#bbbbbb)); //背景底色 灰色
canvas.drawText(mText, mWidth / 2, mHeight / 4 * 3, mInnerPaint); //绘制文本
canvas.drawBitmap(mGuaBitmap, 0, 0, null); //绘制外层Bitmap, 将mBitmap显示在界面上
drawPath();
}

private void drawPath() {
//使用该mode:dst和src相交后, 只保留dst,且除去相交的部份
mOuterPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
mCanvas.drawPath(mPath, mOuterPaint);
}
}

Ⅳ 我不能刮刮刮卡是怎样问题

备注:目前安卓4.1的系统跟微信4.5有些兼容性问题,导致刮刮卡不能刮,还是可以抽奖,就是少了刮的体验,其他都正常,如果介意的话,请等待微信升级解决此问题后

Ⅵ 天猫刮刮卡在哪里进入

淘宝里的刮刮卡只适用于手机和Ipad。你需要下载一个淘宝手机客户端。打开之后,页面上会出现一个大大的广告。点击进入即可。

1.手机参与:可通过手机淘宝客户端(ios3.4.0及以上或android3.9.3及以上)的活动入口进入活动页面,或使用扫描功能扫描“3.8手机淘宝生活节”平面广告或淘宝、天猫页面上的二维码。

2.ipad参与模式:用户可以通过ipad淘宝客户端(2.3.3及以上版本)的活动入口点击进入活动页面。

Ⅶ 如何用android开发otp

otp从技术来分有三种形式, 时间同步、事件同步、挑战/应答。
(1) 时间同步
原理是基于 动态令牌和 动态口令验证服务器的时间比对,基于 时间同步的 令牌,一般每60秒产生一个新口令,要求服务器能够十分精确的保持正确的时钟,同时对其令牌的晶振频率有严格的要求,这种技术对应的终端是硬件令牌。
(2)事件同步
基于事件同步的令牌,其原理是通过某一特定的事件次序及相同的种子值作为输入,通过HASH算法中运算出一致的密码。
(3)挑战/应答
常用于的网上业务,在网站/应答上输入 服务端下发的 挑战码, 动态令牌输入该挑战码,通过内置的算法上生成一个6/8位的随机数字,口令一次有效,这种技术目前应用最为普遍,包括刮刮卡、短信密码、动态令牌也有挑战/应答形式。

主流的动态令牌技术是时间同步和挑战/应答两种形式。
项目采用:
https://code.google.com/p/androidtoken/ 实现TOTP动态口令登录
android token 该项目支持HOTP (事件令牌)和TOTP (时间令牌)规范
配置令牌支持:KeyUriFormat和QR码,以及手动创建;

项目实现:
我这里采用添加方便的qr码,也就是常见的二维码来实现用户通过手机来绑定一个token;
首先,需要有的就是服务器端和客户端都共有的一个seed。

private final static String NUM_CHAR = "0123456789";

private static int charLen = NUM_CHAR.length();

/**

* 根据系统时间获得指定位数的随机数

* @param randomNumberDigit 随机数的位数

* @return 获得的随机数

*/

public static String getRandomNumber(int randomNumberDigit) {

long seed = System.currentTimeMillis();// 获得系统时间,作为生成随机数的种子

StringBuffer sb = new StringBuffer();// 装载生成的随机数

Random random = new Random(seed);// 调用种子生成随机数

for (int i = 0; i < randomNumberDigit; i++) {

sb.append(NUM_CHAR.charAt(random.nextInt(charLen)));

}

return sb.toString();

}

Ⅷ html5 canvas 刮刮卡问题


<!DOCTYPEhtml>
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=UTF-8">
<title>-jsFiddledemobyartwl</title>

<scripttype='text/javascript'src='/js/lib/mmy.js'></script>
<linkrel="stylesheet"type="text/css"href="/css/result-light.css">

<styletype='text/css'>
body{
height:1000px;
}
#lotteryContainer{
position:relative;
width:300px;
height:100px;
}
#drawPercent{
color:#F60;
}
</style>

</head>
<body>
<buttonid="freshBtn">刷新</button><label>已刮开<spanid="drawPercent">0%</span>区域。</label>
<divid="lotteryContainer"></div><scripttype='text/javascript'>//<![CDATA[

functionLottery(id,cover,coverType,width,height,drawPercentCallback){
this.conId=id;
this.conNode=document.getElementById(this.conId);
this.cover=cover;
this.coverType=coverType;
this.background=null;
this.backCtx=null;
this.mask=null;
this.maskCtx=null;
this.lottery=null;
this.lotteryType='image';
this.width=width||300;
this.height=height||100;
this.clientRect=null;
this.drawPercentCallback=drawPercentCallback;
}

Lottery.prototype={
createElement:function(tagName,attributes){
varele=document.createElement(tagName);
for(varkeyinattributes){
ele.setAttribute(key,attributes[key]);
}
returnele;
},
getTransparentPercent:function(ctx,width,height){
varimgData=ctx.getImageData(0,0,width,height),
pixles=imgData.data,
transPixs=[];
for(vari=0,j=pixles.length;i<j;i+=4){
vara=pixles[i+3];
if(a<128){
transPixs.push(i);
}
}
return(transPixs.length/(pixles.length/4)*100).toFixed(2);
},
resizeCanvas:function(canvas,width,height){
canvas.width=width;
canvas.height=height;
canvas.getContext('2d').clearRect(0,0,width,height);
},
drawPoint:function(x,y){
this.maskCtx.beginPath();
varradgrad=this.maskCtx.createRadialGradient(x,y,0,x,y,30);
radgrad.addColorStop(0,'rgba(0,0,0,0.6)');
radgrad.addColorStop(1,'rgba(255,255,255,0)');
this.maskCtx.fillStyle=radgrad;
this.maskCtx.arc(x,y,30,0,Math.PI*2,true);
this.maskCtx.fill();
if(this.drawPercentCallback){
this.drawPercentCallback.call(null,this.getTransparentPercent(this.maskCtx,this.width,this.height));
}
},
bindEvent:function(){
var_this=this;
vardevice=(/android|webos|iphone|ipad|ipod|blackberry|iemobile|operamini/i.test(navigator.userAgent.toLowerCase()));
varclickEvtName=device?'touchstart':'mousedown';
varmoveEvtName=device?'touchmove':'mousemove';
if(!device){
varisMouseDown=false;
document.addEventListener('mouseup',function(e){
isMouseDown=false;
},false);
}else{
document.addEventListener("touchmove",function(e){
if(isMouseDown){
e.preventDefault();
}
},false);
document.addEventListener('touchend',function(e){
isMouseDown=false;
},false);
}
this.mask.addEventListener(clickEvtName,function(e){
isMouseDown=true;
vardocEle=document.documentElement;
if(!_this.clientRect){
_this.clientRect={
left:0,
top:0
};
}
varx=(device?e.touches[0].clientX:e.clientX)-_this.clientRect.left+docEle.scrollLeft-docEle.clientLeft;
vary=(device?e.touches[0].clientY:e.clientY)-_this.clientRect.top+docEle.scrollTop-docEle.clientTop;
_this.drawPoint(x,y);
},false);

this.mask.addEventListener(moveEvtName,function(e){
if(!device&&!isMouseDown){
returnfalse;
}
vardocEle=document.documentElement;
if(!_this.clientRect){
_this.clientRect={
left:0,
top:0
};
}
varx=(device?e.touches[0].clientX:e.clientX)-_this.clientRect.left+docEle.scrollLeft-docEle.clientLeft;
vary=(device?e.touches[0].clientY:e.clientY)-_this.clientRect.top+docEle.scrollTop-docEle.clientTop;
_this.drawPoint(x,y);
},false);
},
drawLottery:function(){
this.background=this.background||this.createElement('canvas',{
style:'position:absolute;left:0;top:0;'
});
this.mask=this.mask||this.createElement('canvas',{
style:'position:absolute;left:0;top:0;'
});

if(!this.conNode.innerHTML.replace(/[wW]|/g,'')){
this.conNode.appendChild(this.background);
this.conNode.appendChild(this.mask);
this.clientRect=this.conNode?this.conNode.getBoundingClientRect():null;
this.bindEvent();
}

this.backCtx=this.backCtx||this.background.getContext('2d');
this.maskCtx=this.maskCtx||this.mask.getContext('2d');

if(this.lotteryType=='image'){
varimage=newImage(),
_this=this;
image.onload=function(){
_this.width=this.width;
_this.height=this.height;
_this.resizeCanvas(_this.background,this.width,this.height);
_this.backCtx.drawImage(this,0,0);
_this.drawMask();
}
image.src=this.lottery;
}elseif(this.lotteryType=='text'){
this.width=this.width;
this.height=this.height;
this.resizeCanvas(this.background,this.width,this.height);
this.backCtx.save();
this.backCtx.fillStyle='#FFF';
this.backCtx.fillRect(0,0,this.width,this.height);
this.backCtx.restore();
this.backCtx.save();
varfontSize=30;
this.backCtx.font='Bold'+fontSize+'pxArial';
this.backCtx.textAlign='center';
this.backCtx.fillStyle='#F60';
this.backCtx.fillText(this.lottery,this.width/2,this.height/2+fontSize/2);
this.backCtx.restore();
this.drawMask();
}
},
drawMask:function(){
this.resizeCanvas(this.mask,this.width,this.height);
if(this.coverType=='color'){
this.maskCtx.fillStyle=this.cover;
this.maskCtx.fillRect(0,0,this.width,this.height);
this.maskCtx.globalCompositeOperation='destination-out';
}elseif(this.coverType=='image'){
varimage=newImage(),
_this=this;
image.onload=function(){
_this.maskCtx.drawImage(this,0,0);
_this.maskCtx.globalCompositeOperation='destination-out';
}
image.src=this.cover;
}
},
init:function(lottery,lotteryType){
this.lottery=lottery;
this.lotteryType=lotteryType||'image';
this.drawLottery();
}
}

window.onload=function(){
varlottery=newLottery('lotteryContainer','#CCC','color',300,100,drawPercent);
lottery.init('http://www..com/img/bdlogo.gif','image');

document.getElementById('freshBtn').onclick=function(){
drawPercentNode.innerHTML='0%';
lottery.init(getRandomStr(10),'text');
}

vardrawPercentNode=document.getElementById('drawPercent');

functiondrawPercent(percent){
drawPercentNode.innerHTML=percent+'%';
}
}

functiongetRandomStr(len){
vartext="";
varpossible="";
for(vari=0;i<len;i++)
text+=possible.charAt(Math.floor(Math.random()*possible.length));
returntext;
}
//]]>

</script>


</body>


</html>

亲,看看这个对你有帮助么

阅读全文

与android刮刮卡相关的资料

热点内容
桌面文件全部加密 浏览:401
6s怎么外接u盘需要什么app 浏览:131
linux查看文件权限命令 浏览:685
安卓手游存档怎么用 浏览:761
linuxyum安装ftp 浏览:690
村委会主任可以推行政命令吗 浏览:102
电脑文件夹封面多张图片 浏览:263
网吧总服务器叫什么 浏览:922
多个算法解决同一个问题 浏览:455
小车解压后我的购车发票呢 浏览:977
做app开发用什么云服务器 浏览:177
linux网卡子接口 浏览:985
21岁职高毕业学程序员怎么学 浏览:321
vs如何对单个文件编译 浏览:6
为什么有的电脑不能安装python 浏览:75
金蝶迷你版加密狗检测到过期 浏览:186
硬件描述语言编译结果 浏览:655
程序员逆天改命 浏览:19
金斗云服务器 浏览:447
港口工程pdf 浏览:770