设为首页 加入收藏

TOP

Android实现刮奖的效果(一)
2014-11-23 23:16:59 来源: 作者: 【 】 浏览:18
Tags:Android 实现 效果

核心部分是借鉴网上代码的,不过找不到源地址了。


实现了基本的刮奖效果,并且进行了一定的封装,拷贝其中的类即可使用。


具体下载目录在 /2014年资料/5月/26日/Android实现刮奖的效果


示例图:



代码如下:


ErnieActivity类:


public class ErnieActivity extends Activity{
Button erniebtn;
RelativeLayout container;
ErinieShow erinieShow;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

erniebtn=(Button) findViewById(R.id.erniebtn);
container=(RelativeLayout) findViewById(R.id.container);

erniebtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showErnie();
}
});


}



private void showErnie(){
// container
container.removeAllViews();

int level = getLevel();
erinieShow=new ErinieShow(this, level);

container.addView(erinieShow,new LayoutParams(-2,-2));
}

/**
* 获取奖励等级
* @return
*/
public int getLevel(){
//随机,看看几等奖
double d=Math.random()*100;
if(d<50){
return 0;
}
if(d<80){
return 3;
}
if(d<95){
return 2;
}
return 1;

}

@Override
protected void onDestroy() {
super.onDestroy();
}


}


ErinieShow类:


public class ErinieShow extends RelativeLayout {
Context context;
RelativeLayout rubblerBG;
RubblerShow rubblerShow;
Button getReward;


int rubblerBGId = 10001;
int getRewardId = 10002;


int level;


public ErinieShow(Context context, int level) {
super(context);
this.context = context;
this.level = level;
getElement();
setElementLP();
setElementStyle();
setElement();
}


private void getElement() {
rubblerBG = new RelativeLayout(context);
rubblerShow = new RubblerShow(context,handler);
getReward = new Button(context);


rubblerBG.setId(rubblerBGId);
getReward.setId(getRewardId);
rubblerBG.addView(rubblerShow);
addView(rubblerBG);
addView(getReward);
}


private void setElementLP() {
int[] resolution = PhoneUtil.getResolution(context);
RelativeLayout.LayoutParams rubblerBG_LP = new RelativeLayout.LayoutParams(
resolution[0], PhoneUtil.getFitHeight(context, 125));


rubblerBG.setLayoutParams(rubblerBG_LP);
rubblerShow.setLayoutParams(rubblerBG_LP);

RelativeLayout.LayoutParams getReward_LP = new LayoutParams(-2, -2);
getReward_LP.addRule(RelativeLayout.CENTER_HORIZONTAL);
getReward_LP.addRule(RelativeLayout.BELOW,rubblerBGId);
getReward.setLayoutParams(getReward_LP);

}


private void setElementStyle() {
switch (level) {
case 0:
rubblerBG.setBackgroundResource(R.drawable.rewardlevel0);


break;
case 1:
rubblerBG.setBackgroundResource(R.drawable.rewardlevel1);


break;
case 2:
rubblerBG.setBackgroundResource(R.drawable.rewardlevel2);
break;
default:
rubblerBG.setBackgroundResource(R.drawable.rewardlevel3);
break;
}
// getReward.setBackgroundResource(R.drawable.get_award);
}


private void setElement() {
rubblerShow.beginRubbler(Color.parseColor("#d3d3d3"), 30, 10);


getReward.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if(level==0){
Toast.makeText(context, "很遗憾,此次未中奖,再接再厉吧!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "恭喜您,获得了"+level+"等奖。", Toast.LENGTH_SHORT).show();
}
}
});
//先设置为不可点击
getReward.setClickable(false);

getReward.setText("领奖");
}

Handler handler=new Handler(){


@Over

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android中异步加载类AsyncTask的.. 下一篇Android异步操作----AsyncTask类

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: