如何使用Android studio实现扑克牌翻牌效果?

使用Android studio实现扑克牌翻牌、洗牌效果,通过对话框进行选择翻看哪一张牌,效果如下

ps:前提是要提前准备4或者更多的扑克牌的正面图片以及一张扑克牌的背面图

代码如下:1、界面布局,我是用的是RelativeLayout作为父布局然后嵌入LinearLayout子布局。你们也可以使用LinearLayout作为父布局。效果如下图

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/Layout_1"
    >
<ImageView
    android:id="@+id/activity_iv1"
    android:layout_width="100dp"
    android:layout_height="200dp"
    android:src="@mipmap/hongtaoq" />
<ImageView
    android:id="@+id/activity_iv2"
    android:layout_width="100dp"
    android:layout_height="200dp"
    android:src="@mipmap/hongtaok" />
<ImageView
    android:id="@+id/activity_iv3"
    android:layout_width="100dp"
    android:layout_height="200dp"
    android:src="@mipmap/hongtaoj" />
<ImageView
    android:id="@+id/activity_iv4"
    android:layout_width="100dp"
    android:layout_height="200dp"
    android:src="@mipmap/heitaok" />
</LinearLayout>
<Button
    android:id="@+id/activity_xipai"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="洗牌"
    android:textColor="#bf62ff"
    android:textSize="40sp"
    android:layout_marginLeft="100dp"
    android:layout_below="@id/Layout_1"/>

<Button
    android:id="@+id/activity_xuanpai"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="选牌"
    android:textColor="#0000ff"
    android:textSize="40sp"
    android:layout_below="@id/Layout_1"
    android:layout_toRightOf="@id/activity_xuanpai"
    />

2、添加按键响应

//添加按键响应
builder=new AlertDialog.Builder(this);
bt1=(Button)findViewById(R.id.activity_xipai);
bt2=(Button)findViewById(R.id.activity_xuanpai);
iv1=(ImageView)findViewById(R.id.activity_iv1);
iv2=(ImageView)findViewById(R.id.activity_iv2);
iv3=(ImageView)findViewById(R.id.activity_iv3);
iv4=(ImageView)findViewById(R.id.activity_iv4);

3、创建对话框+复选框选项列表

bt2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        builder.setTitle("选牌");//设置标题
        builder.setIcon(R.mipmap.tubiao);//设置图标
        //列表选项
        builder.setMultiChoiceItems(xuanxiang, null, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
//按钮Button(洗牌)响应
            public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                paimian=xuanxiang[i];
//向对话框列表里面添加选项实现复选框效果
                if (i == 0) {
                    if (b == true) {
                        li.add("红桃K");
                        li.contains(R.mipmap.hongtaok);
                    } else {
                        li.remove("红桃K");
                    }

                }
                if (i == 1) {
                    if (b == true) {
                        li.add("红桃J");
                    } else {
                        li.remove("红桃J");
                    }
                    li.contains(hongtaoj);
                }
                if(i==2){
                    if(b== true) {
                        li.add("红桃Q");
                    }else {
                        li.remove("红桃Q");
                    }
                    li.contains(R.mipmap.hongtaoq);
                }
                if (i==3){
                    if(b==true){
                        li.add("黑桃K");
                    }else {
                        li.remove("黑桃K");
                    }
                    li.contains(R.mipmap.heitaok);
                }
            }
        });
//点击确定,实现选中哪张牌就翻看哪张牌
     builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
         @Override
         public void onClick(DialogInterface dialogInterface, int i) {
             if(paimian.equals("红桃K")){
                 li.contains(R.mipmap.hongtaok);
                 iv1.setImageResource(R.mipmap.hongtaok);
             }else {//如果没选中即仍然是背面的效果
                 iv1.setImageResource(R.mipmap.beimian);
             }
             if(paimian.equals("红桃J")){
                 li.contains(hongtaoj);
                 iv2.setImageResource(hongtaoj);
             }else {
                 iv2.setImageResource(R.mipmap.beimian);
             }
             if(paimian.equals("红桃Q")){
                 li.contains(hongtaoq);
                 iv3.setImageResource(hongtaoq);
             }else {
                 iv3.setImageResource(R.mipmap.beimian);
             }
             if(paimian.equals("黑桃K")){
                 li.contains(heitaok);
                 iv4.setImageResource(heitaok);
             }else {
                 iv4.setImageResource(R.mipmap.beimian);
             }
         }
     });
     builder.setNeutralButton("取消", new DialogInterface.OnClickListener() {
         @Override
         public void onClick(DialogInterface dialogInterface, int i) {

         }
     });
        builder.create();//创建对话框
        builder.show();//显示对话框
    }
});

4、点击洗牌按钮,实现洗牌(翻牌)效果

bt1.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
         iv1.setImageResource(R.mipmap.beimian);
         iv2.setImageResource(R.mipmap.beimian);
         iv3.setImageResource(R.mipmap.beimian);
         iv4.setImageResource(R.mipmap.beimian);
     }
 });

5、漏了一点;前面还要创建一些变量哦

Button bt1,bt2;
ImageView iv1,iv2,iv3,iv4;
AlertDialog.Builder builder;//创建对话框变量
String paimian=" ";
String[] xuanxiang={"红桃K","红桃Q","黑桃K","红桃J"};//对话框的列表选项
List<String> li=new ArrayList<>();

好啦,代码可直接用,希望能对你们有帮助!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值