效果演示

显示学生姓名与图片

选择缺勤类型

提交缺勤名单

代码

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView_name"android:layout_width="168dp"android:layout_height="59dp"android:layout_marginStart="113dp"android:layout_marginTop="10dp"android:layout_marginEnd="103dp"android:layout_marginBottom="346dp"android:text="TextView"android:textSize="30sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.0" /><Buttonandroid:id="@+id/btn_up"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="71dp"android:layout_marginTop="360dp"android:layout_marginEnd="60dp"android:layout_marginBottom="265dp"android:text="上一个"android:textSize="20sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@+id/btn_down"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.0" /><Buttonandroid:id="@+id/btn_down"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="97dp"android:layout_marginTop="360dp"android:layout_marginEnd="67dp"android:layout_marginBottom="265dp"android:text="下一个"android:textSize="18sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/btn_up"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.0" /><RadioGroupandroid:id="@+id/rio_group"android:layout_width="302dp"android:layout_height="150dp"android:layout_marginStart="12dp"android:layout_marginBottom="12dp"app:layout_constraintBottom_toTopOf="@+id/btn_submit"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toEndOf="@+id/btn_up"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.736"><RadioButtonandroid:id="@+id/rio_1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:checked="true"android:text="出勤" /><RadioButtonandroid:id="@+id/rio_late"android:layout_width="wrap_content"android:layout_height="48dp"android:layout_weight="1"android:text="迟到" /><RadioButtonandroid:id="@+id/rio_absent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="缺席" /><RadioButtonandroid:id="@+id/rio_leave"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="请假" /></RadioGroup><Buttonandroid:id="@+id/btn_submit"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="166dp"android:layout_marginTop="259dp"android:layout_marginEnd="157dp"android:layout_marginBottom="16dp"android:text="提交"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.666"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/radioGroup" /><ImageViewandroid:id="@+id/image_stu"android:layout_width="356dp"android:layout_height="132dp"android:layout_marginStart="113dp"android:layout_marginTop="21dp"android:layout_marginEnd="125dp"android:layout_marginBottom="3dp"app:layout_constraintBottom_toTopOf="@+id/rio_group"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.48"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView_name"app:layout_constraintVertical_bias="0.857"app:srcCompat="@mipmap/f005" /></android.support.constraint.ConstraintLayout>

MainActivity.java

package com.lkw.demo.demostu;import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity implements OnCheckedChangeListener,View.OnClickListener, DialogInterface.OnClickListener  {private Button btn_submit;private Button btn_up;private Button btn_down;private TextView textView_name;private ImageView img;private int index;private String[] name = {"夏言好", "张飞", "奥特曼", "假面骑士", "嘎子哥", "lkw"};private int[] img_stu={R.mipmap.f000, R.mipmap.f001,R.mipmap.f002,R.mipmap.f003,R.mipmap.f004,R.mipmap.f005};private boolean[] leave;   //请假private boolean[] late;    //迟到private boolean[] absent;  //缺席private RadioGroup rio_group;private RadioButton rio_1;private RadioButton rio_late;private RadioButton rio_absent;private RadioButton rio_leave;@SuppressLint("WrongViewCast")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rio_group = findViewById(R.id.rio_group);rio_1 = findViewById(R.id.rio_1);rio_late = findViewById(R.id.rio_late);rio_absent = findViewById(R.id.rio_absent);rio_leave = findViewById(R.id.rio_leave);img = findViewById(R.id.image_stu);rio_group.setOnCheckedChangeListener(this);rio_late.setOnClickListener(this);rio_leave.setOnClickListener(this);rio_absent.setOnClickListener(this);index = 0;/*未到的人数均设为0*/btn_up = findViewById(R.id.btn_up);btn_down = findViewById(R.id.btn_down);btn_submit = findViewById(R.id.btn_submit);textView_name = findViewById(R.id.textView_name);textView_name.setText(name[index]);late = new boolean[6];leave = new boolean[6];absent = new boolean[6];btn_up.setOnClickListener(this);btn_down.setOnClickListener(this);btn_submit.setOnClickListener(this);}@Overridepublic void onClick(View view) {if (view.getId() == btn_submit.getId()) {String lateList = this.getList(late);String leaveList = this.getList(leave);String absentList = this.getList(absent);new AlertDialog.Builder(this).setMessage("迟到:" + lateList + "缺席:" + absentList + "请假:" + leaveList).setCancelable(false).setIcon(android.R.drawable.ic_menu_edit).setTitle("缺勤名单").setPositiveButton("发送", this).setNeutralButton("取消", this).show();} else {if (view.getId() == btn_up.getId()) {index--;}if (view.getId() == btn_down.getId()) {index++;}if (index == -1) {index = 0;Toast.makeText(this, R.string.warn_name_first, Toast.LENGTH_LONG).show();}if (index == 6) {index = 5;Toast.makeText(this, R.string.warn_name_last, Toast.LENGTH_LONG).show();}textView_name.setText(name[index]);img.setImageResource(img_stu[index]);if (leave[index]) {rio_leave.setChecked(true);} else if (late[index]) {rio_late.setChecked(true);} else if (absent[index]){rio_absent.setChecked(true);}else{rio_1.setChecked(true);}}}@Overridepublic void onClick(DialogInterface dialogInterface,int i){}private String getList(boolean[]tex){String answer="";for(int i=0;i<name.length;++i){if(tex[i])answer+=" "+name[i];}answer+="\n";return answer;}@Overridepublic void onCheckedChanged(RadioGroup radioGroup, int i) {switch(i){case R.id.rio_late:absent[index] = false;leave[index] = false;late[index] = true;break;case R.id.rio_absent:leave[index] = false;late[index] = false;absent[index] = true;break;case R.id.rio_leave:late[index] = false;absent[index] = false;leave[index] = true;break;}}
}

总结

通过第一阶段的学习对Android有了一个基本的入门,光从现在所掌握的知识,让我感觉现阶段的学习和以前javaSE的图形用户界面很像。但要直白简单一些。基本步骤就是添加一个视图,往里面放东西。在后台给这些东西绑上监听器,完成各种各样的事件逻辑,实现一些基本的小功能。上面的那个点名小程序也暂时只能算伪的。毕竟还不能实现真正的提交,真正的获取学生信息。这些都还需要后续学习的完善和实现。

  上面的代码也还存在一定的问题。学生的信息没有单独的封装成一个模型类,这是我之前写的时候没考虑到的。这会为后续的完善埋下隐患。

   另外就是开发软件给我的一些感受,Android studio的界面和idea真的贼像,大同小异。而且文件结构也和idea javaweb项目差不多。这让我看一遍之后就能牢记它的源文件,资源文件,配置文件都在什么位置。用起来还是蛮舒心的,没有啥阵痛期。

简单点名小程序(伪)----android开发相关推荐

  1. Python wxpython篇 | Python生态库之图形用户界面开发库 “wxPython “ 的安装及使用(附. 使用pyinstaller 库打包Python随机点名小程序程序.exe文件)

    全文目录 wxPython 图形用户界面 PyCharm 中安装 wxPython库 PyCharm中将程序打包成 .exe 可执行文件 wxPython 的使用 第一个wxPython 程序 自定义 ...

  2. Kbone与小程序跨端开发的一些思考

    小程序是一种新的移动应用程序格式,是一种依赖Web技术,但也集成了原生应用程序功能的混合解决方案.小程序一些特性有助于填补Web和原生平台之间的鸿沟,因此小程序受到了一些超级应用程序的欢迎. 它不需要 ...

  3. 「微信小程序」|开发常用事例(六)

    历史文章回顾: 微信小程序 | 开发常用事例(一) 微信小程序 | 开发常用事例(二) 微信小程序 Notes | 开发常用事例(三) 微信小程序 Notes | 开发常用事例(四) 微信小程序 No ...

  4. 小程序用vue开发可以吗,vue直接开发小程序

    一个完全的小白想学微信小程序开发,请问要学 谷歌人工智能写作项目:小发猫 编写微信小程序所需要的基础 前端一般就是vue+element,然后起码的html5,css3,javascript等基础知识 ...

  5. 微信小程序之蓝牙开发虚拟摇杆

    文章用于学习记录 文章目录 前言 一.App Inventor 二.uni-app 三.微信小程序 3.1 示例&应用 3.2 服务值与特征值 3.3 控制指令 3.4 测试 3.5 十六进制 ...

  6. 微信小程序小白入门开发教程(第二弹)

    文章目录 推荐刚需 (一)UI 框架 1.iView Weapp 2.WeUI 3.Vant Weapp 4.ColorUI 5.Thor UI (二).基础框架 1.WePY 2.Taro 3.Un ...

  7. 活久见!月薪30k的小程序全栈开发到底有多难?

    10年前,公司的标配是门户网站,造就了一批网站工作室.随着移动互联网大潮兴起,App又成了企业标配,IOS和Android开发赚的盆满钵满.然而App导致的手机内存告急,无止尽的信息推送,让微信小程序 ...

  8. 小程序和android联调,小程序打开APP指定页面

    小程序打开APP指定页面 一.小程序端准备 1.最好将小程序基础调试库调整至较为新的版本.(我选择的是大于2.5.1的版本) 2.从官网把代码 copy 过来,记得看看 button 的小程序打开ap ...

  9. 小程序 移植 云开发_使用Kubernetes探索跨云的应用程序可移植性

    小程序 移植 云开发 本文与Lindsey Tulloch共同撰写. 在一个快速迁移到云的世界中,投资者,客户和开发人员正在屏息地注视着"云战争". 随着云巨头的崛起以及新型基础架 ...

最新文章

  1. python监听udp端口_python检测远程udp端口是否打开
  2. 目标检测(R-CNN、Fast R-CNN、Fater R-CNN)
  3. 【Java4】实例初始化,类初始化,/接口,多态,final/static,权限修饰符/native
  4. ai人工智能的本质和未来_人工智能的未来在于模型压缩
  5. 傅里叶变换及其应用 pdf_级数的欧拉变换及其应用
  6. QT mainwindow四件套
  7. java将数据生成csv文件
  8. ArcGIS之GP服务发布
  9. 手把手教你-如何查询中文期刊是否属于核心期刊!
  10. zabbix的启动和关闭脚本
  11. 零基础到进阶,Python正则表达式详解
  12. 输入一个数,判断这个数的二进制有几个0,几个1(完整代码)
  13. mac 配置环境变量,讲的太仔细了,非常棒
  14. 更改VMware硬盘大小
  15. windows系统下使用git出现:warning: LF will be replaced by CRLF in
  16. carrot 2 LingoClusteringAlgorithm , STCClusteringAlgorithm 和 BisectingKMeansClusteringAlgorithm算法比较
  17. 网络层安全协议IPSec
  18. UiPath Computer Vision本地版使用
  19. 崩坏3九游服务器稳定吗,崩坏3:大佬亲身经历告诉你,玩崩坏3到底该不该压等级!...
  20. 基于51单片机智能温控风扇LCD1602液晶显示红外遥控设计

热门文章

  1. C语言 编写程序:由键盘输入一个字符判断是字母数字还是其他符号。
  2. 如何用python进行量化交易_从零开始学习Python和量化交易
  3. AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用)、常用算法、经典案例之详细攻略(建议收藏)
  4. AI:2020年6月23日北京智源大会演讲分享之智能信息检索与挖掘专题论坛——09:10-09:55裴健教授《智能搜索:从工具到思维方式和心智》
  5. 成功解决Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问
  6. Interview:算法岗位面试—10.25早上—上海某电公司算法岗位(偏图像算法,国企)技术面试之比赛历程、项目收获(Pytorch和Tensorflow)、未来方向
  7. Py之pycurl:Python 库之pycurl的简介、安装、使用方法之详细攻略
  8. 3dmax2014:打开3dmax2014软件时,出现许可证检出失败 错误20
  9. MAT之SVM/BP:SVR(better)和BP两种方法比较且实现建筑物钢筋混凝土抗压强度预测
  10. Appium录制脚本520-2