AndroidStudio开发----图案竞猜小程序

基于安卓期中作业的要求,做一个图案竞猜小游戏,代码基础不是很好,谨慎借鉴!

内容要求:

(1) app首页启动后布局效果如图1-1所示,上方四个白色块不可点击;

(2) 在首页点击“开始竞猜”,上方四个按钮的随机生成四种图案的背景(图案是固定四种,显示位置必须要随机),界面底部为等待竞猜图案(一定是上方四个图案中的一个),竞猜结束前用图案展示。此时“开始竞猜”按钮文字变为“竞猜中…”,如图1-2所示;

(3) 手指点击上方四个图片中的一个,此时底部谜底图片区展示谜底图案,上方被选中图片若正确(与底部谜底图片一致),则在选中图片右上角显示打钩图案,如图1-3界面效果。反之,显示打叉图案则如图1-4效果,“竞猜中…”按钮文字变为“再来一次”。此时上面的色块都不可点击;
(4) 点击“再来一次”按钮,将重新开始竞猜,与步骤(4)将要显示的效果相同。
从左至右为,图1-1 图1-2 图1-3 图1-4

设计思路:

1. 设计所需布局4+4+1+1(“4”即图1-1中所示位于布局上半部分的四个用于显示随机图片的ImageView控件,第二个“4”表示第一个“4”右上角用于显示竞猜结果对错图案的ImageView控件,“1”表示位于布局中部的Butto控件,“1”表示布局下半部分显示竞猜答案的ImageView控件);
2. 设计交互布局,设置好各个控件的具体功能。

具体做法:

首先,根据设定的4+4+1+1布局结构设计好整体布局,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.administrator.pic123022016081.MainActivity"><ImageViewandroid:id="@+id/iv_pic1"android:layout_width="150dp"android:layout_height="100dp"android:layout_marginLeft="10dp"android:background="#dedbdb"android:scaleType="center"/><ImageViewandroid:id="@+id/iv_judge1"android:layout_width="40dp"android:layout_height="40dp"android:background="#dedbdb"android:layout_marginLeft="120dp"/><ImageViewandroid:id="@+id/iv_pic2"android:layout_width="150dp"android:layout_height="100dp"android:background="#dedbdb"android:layout_toRightOf="@+id/iv_pic1"android:layout_marginLeft="20dp"android:scaleType="center"/><ImageViewandroid:id="@+id/iv_judge2"android:layout_width="40dp"android:layout_height="40dp"android:background="#dedbdb"android:layout_marginLeft="290dp"/><ImageViewandroid:id="@+id/iv_pic3"android:layout_width="150dp"android:layout_height="100dp"android:layout_marginLeft="10dp"android:layout_below="@id/iv_pic1"android:layout_marginTop="20dp"android:background="#dedbdb"android:scaleType="center"/><ImageViewandroid:id="@+id/iv_judge3"android:layout_width="40dp"android:layout_height="40dp"android:background="#dedbdb"android:layout_below="@id/iv_pic1"android:layout_marginLeft="120dp"android:layout_marginTop="20dp"/><ImageViewandroid:id="@+id/iv_pic4"android:layout_width="150dp"android:layout_height="100dp"android:layout_below="@id/iv_pic2"android:layout_marginTop="20dp"android:layout_toRightOf="@id/iv_pic3"android:layout_marginLeft="20dp"android:background="#dedbdb"android:scaleType="center"/><ImageViewandroid:id="@+id/iv_judge4"android:layout_width="40dp"android:layout_height="40dp"android:background="#dedbdb"android:layout_marginLeft="290dp"android:layout_below="@id/iv_pic2"android:layout_marginTop="20dp"/><Buttonandroid:id="@+id/btn_start"android:layout_width="320dp"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_below="@id/iv_pic3"android:layout_marginTop="10dp"android:background="#fab84c"android:text="开始竞猜" /><ImageViewandroid:id="@+id/iv_pic5"android:layout_width="320dp"android:layout_height="200dp"android:layout_marginLeft="10dp"android:background="#dedbdb"android:layout_below="@+id/btn_start"android:layout_marginTop="10dp"/>
</RelativeLayout>

效果显示:

再者,本程序重点在于随机函数,以下就有两个随机函数:
随机函数1,用于产生一定范围内的一个随机数,在此用来显示答案的图片:

public static int getNum(int endNum){if(endNum > 0){Random random = new Random();return random.nextInt(endNum);}return 0;
}

随机函数2,用于产生一定范围内的一组随机数,例如(0,3,1,2),用来四个ImageView所要显示的图片:

public void get_RandomID() {//生成0-3之间的数组for (int i = 0; i < 4; i++) {image_id[i] = i;}for (int i = 0; i < 4; i++) {Random random = new Random();int tt = random.nextInt(4 - i) + i;int temp = image_id[i];image_id[i] = image_id[tt];image_id[tt] = temp;}
}

最后,设置各个控件的具体要求,完整代码如下:

package com.example.administrator.pic123022016081;
import android.media.Image;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.util.Random;public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private Button btn_one;private ImageView iv_pic11;private ImageView iv_pic22;private ImageView iv_pic33;private ImageView iv_pic44;private ImageView iv_jdg1;private ImageView iv_jdg2;private ImageView iv_jdg3;private ImageView iv_jdg4;private int image_id[] = new int[4];private int t;int[] ImageArray = new int[]{R.drawable.deer,R.drawable.snowman,R.drawable.santa,R.drawable.tree};    //随机函数public static int getNum(int endNum){if(endNum > 0){Random random = new Random();return random.nextInt(endNum);}return 0;}public void get_RandomID() {//生成0-3之间的数组for (int i = 0; i < 4; i++) {image_id[i] = i;}//开始随机 k 个不重复数出来for (int i = 0; i < 4; i++) {Random random = new Random();// t : i 至 4 的随机数// 目的:不再随机出已置换出去 的数 的下标int tt = random.nextInt(4 - i) + i;// 交换x[i],x[t]的值int temp = image_id[i];image_id[i] = image_id[tt];image_id[tt] = temp;}}    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);        btn_one=(Button) findViewById(R.id.btn_start);btn_one.setOnClickListener(this);        iv_pic11=(ImageView) findViewById(R.id.iv_pic1);iv_pic22=(ImageView) findViewById(R.id.iv_pic2);iv_pic33=(ImageView) findViewById(R.id.iv_pic3);iv_pic44=(ImageView) findViewById(R.id.iv_pic4);iv_pic11.setOnClickListener(this);iv_pic11.setEnabled(false);iv_pic22.setOnClickListener(this);iv_pic22.setEnabled(false);iv_pic33.setOnClickListener(this);iv_pic33.setEnabled(false);iv_pic44.setOnClickListener(this);iv_pic44.setEnabled(false);        iv_jdg1=(ImageView) findViewById(R.id.iv_judge1);iv_jdg2=(ImageView) findViewById(R.id.iv_judge2);iv_jdg3=(ImageView) findViewById(R.id.iv_judge3);iv_jdg4=(ImageView) findViewById(R.id.iv_judge4);}@Overridepublic void onClick(View v){ImageView iv=(ImageView)findViewById(R.id.iv_pic5);ImageView iv1=(ImageView)findViewById(R.id.iv_pic1);ImageView iv2=(ImageView)findViewById(R.id.iv_pic2);ImageView iv3=(ImageView)findViewById(R.id.iv_pic3);ImageView iv4=(ImageView)findViewById(R.id.iv_pic4);        switch (v.getId()){case R.id.btn_start:iv_jdg1.setImageResource(0);iv_jdg2.setImageResource(0);iv_jdg3.setImageResource(0);iv_jdg4.setImageResource(0);btn_one.setText("竞猜...");t=getNum(4);get_RandomID();//答案图iv.setImageResource(R.drawable.jingcai);// 在1-4处生成图片iv1.setImageResource(ImageArray[image_id[0]]);iv2.setImageResource(ImageArray[image_id[1]]);iv3.setImageResource(ImageArray[image_id[2]]);iv4.setImageResource(ImageArray[image_id[3]]);iv_pic11.setEnabled(true);iv_pic22.setEnabled(true);iv_pic33.setEnabled(true);iv_pic44.setEnabled(true);break;case R.id.iv_pic1:iv.setImageResource(0);iv.setImageResource(ImageArray[t]);;btn_one.setText("再来一次.");if( image_id[0]==t){iv_jdg1.setImageResource(R.drawable.dui);}else{iv_jdg1.setImageResource(R.drawable.cuowu);}break;case R.id.iv_pic2:iv.setImageResource(0);iv.setImageResource(ImageArray[t]);btn_one.setText("再来一次.");if( image_id[1]==t){iv_jdg2.setImageResource(R.drawable.dui);}else{iv_jdg2.setImageResource(R.drawable.cuowu);}break;case R.id.iv_pic3:iv.setImageResource(0);iv.setImageResource(ImageArray[t]);btn_one.setText("再来一次.");if( image_id[2]==t){iv_jdg3.setImageResource(R.drawable.dui);}else{iv_jdg3.setImageResource(R.drawable.cuowu);}break;case R.id.iv_pic4:iv.setImageResource(0);iv.setImageResource(ImageArray[t]);btn_one.setText("再来一次.");if( image_id[3]==t){iv_jdg4.setImageResource(R.drawable.dui);}else{iv_jdg4.setImageResource(R.drawable.cuowu);}break;}}
}

######效果显示
首页显示:
开始竞猜:

竞猜正确:

竞猜错误:

总结

代码还是不太成熟,有待加强!

AndroidStudio开发----图案竞猜小程序相关推荐

  1. 使用云数据库,国庆快速开发一个微信小程序

    国庆七天,如果不想峡谷.王者七日游,就来跟我一起开发个小程序吧,不需要多高的技术,只要你会一点点前端css.html知识,不需要你了解后端语言,更不需要单独部署一个后端服务,十分简单! 之前我写过一个 ...

  2. 都2020年,开发制作微信小程序商城,需要准备什么资料?应该不会不知道吧!

    微信小程序使用越来越广泛,而还未入局的对于微信小程序开发需要什么材料甚至不清楚,其实这些材料很简单.总结就是微信支付.微信小程序注册.小程序代码,下面展开说说. 小程序红利 从腾讯刚发布的财报看,微信 ...

  3. vue.js反编译_基于electron-vue开发的微信小程序反编译客户端

    开源一个小程序反编译客户端 咨询小程序反编译的同学比较多,虽然有开源库但是还是有同学不清楚如何去操作,所以索性做了一个客户端方便进行小程序的反编译 # 技术选型 网上已经有大佬实现了C#版的反编译工具 ...

  4. core和node开发小程序_成都小程序开发:微信小程序开发要多少钱?

    定制开发一个微信小程序要多少钱呢? 成都小程序开发需要多少钱,成都小程序定制多少钱,成都小程序开发获得报价 微信小程序背靠腾讯的亿级流量,有着非常强大的线上引流功能,目前微信小程序的开发越来越火爆,选 ...

  5. 王思聪吃热狗的c语言小程序,王思聪吃热狗火了,开发各种恶搞小程序!王校长:我不要面子的啊...

    原标题:王思聪吃热狗火了,开发各种恶搞小程序!王校长:我不要面子的啊 近日王校长上了不少次热搜,其中有一条就是王校长吃热狗火了,接下来就出现了各种各样的表情包,手机壳,素描等等.其实这些还不是最火爆的 ...

  6. 小程序·云开发,属于小程序的全栈开发机遇

    web前端教程 用大白话,来讲编程 近日,腾讯云"小程序·云开发"解决方案正式上线. 该方案通过简化复杂的后端和运维操作,让即便不具备一定后端知识的开发者也能高效开发出一款高质量的 ...

  7. 只需6步,教你从零开发一个签到小程序

    摘要:针对于具备瞬时流量.业务场景比较简单的小程序,开发者借助FunctionGraph,可以方便快捷的搭建一个健壮的小程序后台. 本文分享自华为云社区<智慧校园想搞好,FunctionGrap ...

  8. 一个程序如何连接到外网_如何从头开始开发一个微信小程序

    网上有很多的人在问:怎么开发一个微信小程序?今天我来给大家详细讲讲如何申请开发并部署一个微信小程序,大家看完这篇文章后就能够自己运营一个属于自己的小程序了. 现在的小程序有百度小程序,头条小程序,支付 ...

  9. 抢饭碗?这位 05 后开发三款小程序!

    整理 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 2017 年 1 月 9 日,微信小程序横空出世.而后,支付宝小程序.百度小程序.12大厂商联盟的快应用等纷纷入局,在短短两年的时间里, ...

最新文章

  1. Spring使用注解配置依赖注入
  2. caffe多个gpu数据合并到一起
  3. python4delphi 设置syspath
  4. 服务器弱口令修改,Tomcat服务器弱口令漏洞攻击实验
  5. OpenGL 3D 选择
  6. 可见性得以保障,并不意味着_战略模式并不意味着春天!
  7. ThreadLocal线程范围内的共享变量
  8. Pytorch:矩阵乘法总结
  9. JAVA:二进制和十进制互转
  10. C# 通用树形数据结构
  11. VS2013配置PDFLib 9.1.2的环境
  12. 利用VS2005进行dump文件调试
  13. 机器学习算法的Python实现 (1):logistics回归 与 线性判别分析(LDA)
  14. 电脑主板报警声音的故障现象对照表
  15. 微信小程序从云存储中读取图片
  16. 秋招 | 携程 | 携程集团2022秋招内推正式启动啦~!
  17. uni-app 170邀请加入群聊(二)
  18. Kettle连接 SAP Hana 数据库
  19. ROS下利用realsense采集RGBD图像合成点云
  20. 2022-2023年最新最全计算机相关专业毕设选题推荐

热门文章

  1. ie8支持css吗,教你如何轻松解决css不兼容IE8
  2. 物联网卡定向后引起网络通频繁掉线
  3. Google正式开始推送 Android 5.0 Lollipop
  4. 5个在线制作APP开发工具介绍和APP公司酷站欣赏
  5. 1042 Gone Fishing[DP/贪心]:钓鱼问题+易错数据集
  6. 计算机上网题通讯录小组,计算机兴趣小组计划、教案 总结.doc
  7. 操作系统第一次实验-短作业优先调度算法
  8. 机器狗写入到userinit.exe文件的下载者源码(c及汇编)
  9. 教育直播源码丨万岳教育直播平台源码丨源码支持二开
  10. 跨越:迈过成长阶梯的断层