Android入门 简单app开发:为女友实现记录月经周期的app
前言
寒假答应给女友做一个记录月经周期的app,由于我太vegetable,写的比较辣鸡,大家凑活着看(手动笑哭)
思路:
首先要跟大家说的是,
android开发 要明白开发思想:逻辑和视图是分开的,视图就是你这个桌面上有什么组件,
逻辑就是你想要组件之间有什么联系,比如点击时间之类的。(比如网页,有前端有后台,分开的这种方式为开发提供了很大的便利)
开发app有四种方式:
- 通过XML文件开发;
- 通过JAVA代码开发(就是把XML配置文件删除,然后再java代码中新new一个布局管理器layout,然后在 OnCreate方法中setContentView方法的参数设置为这个新new的布局管理器)
- 通过JAVA+XML开发(用XML文件来主要配置桌面的组件位置、大小,用java实现组件之间的逻辑) 推荐!!!
- 通过自定义View开发
利用Datepickerdialog进行获取日期(图形化的界面很舒服)
利用轻量级存储SharedPreference进行存储数据(SharedPreference可以实现永久存储,不会在内存中流失)
遇到的问题以及大家需要注意的:
在用SharedPreference进行存储数据的时候,putString方法的参数是Map类型的,也就是键值对,所以我们这里用了计数器来表示存储数据的条数,这样对于查看所有的数据提供了方便,在删除数据的时候也只需要让这个计数器-1就行了。
小插曲:
若要设置全屏可以在style文件中新建主题 如下所示:
<style name="NoActivityFULLscreen" parent="Theme.AppCompat.Light.NoActionBar"><item name="windowNoTitle">true</item><item name="windowActionBar">true</item><item name="android:windowFullscreen">true</item><item name="android:windowContentOverlay">@null</item>
</style>
然后并没有完成,因为你要在AndroidManifest.xml文件中配置这个主题,如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.test"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/NoActivityFULLscreen">//不同的是这里,这里的名字改成刚才设定的主题名称<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".Main2Activity"></activity></application></manifest>
就可以啦~
app功能说明:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="com.example.test.MainActivity"android:background="@mipmap/timg">//这里是设置背景的,提前把名为timg的图片放到mipmap中<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="50dp"android:id="@+id/shanchu"android:text="删除"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:layout_marginBottom="50dp"android:id="@+id/look"android:text="查看记录"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_alignParentBottom="true"android:layout_marginBottom="50dp"android:id="@+id/insert"android:text="插入"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/textview"android:textSize="30sp"android:typeface="sans"android:scrollbars="vertical"/></RelativeLayout>
java代码如下:
package com.example.test;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import java.util.Calendar;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Button shanchu ;private Button insert;private Button look;private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*****与xml配置文件中的组件进行绑定*****/shanchu =findViewById(R.id.shanchu);insert = findViewById(R.id.insert);look = findViewById(R.id.look);textView = findViewById(R.id.textview);/********设置监听器**********/shanchu.setOnClickListener(this);insert.setOnClickListener(this);look.setOnClickListener(this);}@Override/****重写OnClick方法******/public void onClick(View v) {switch (v.getId()){case R.id.shanchu:{delete();break;}case R.id.look:{showinTextView();break;}case R.id.insert:{showDatePickDlg();break;}}}protected void showDatePickDlg()//展现日期选择框,并将日期存储到SharePreference中{Calendar calendar = Calendar.getInstance();DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {String string = year + " " + (monthOfYear+1) + " " + dayOfMonth;//将日期字符串用Strig你先存储进来SharedPreferences sharedPreferences=getSharedPreferences("123",MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit(); //获得editor对象int i =sharedPreferences.getInt("index",0);//这个是计数的变量,方便取存editor.putString("Calander"+(++i),string);//由于putstring的参数是map,所以必须要解决key键值的问题,因为要存储多条信息。editor.putInt("index",i);editor.commit();//更改sharedpreference的相关信息}}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));datePickerDialog.show();}protected void delete()//通过让计数器减1达到删除的目的{SharedPreferences sharedPreferences=getSharedPreferences("123",MODE_PRIVATE);int Count = sharedPreferences.getInt("index",0);SharedPreferences.Editor editor = sharedPreferences.edit();editor.putInt("index",Count-1);editor.commit();}/*****通过stringbuffer字符串构造器将sharedpreference中的数据放到一个字符串中,然后再setText到Textview中***/protected void showinTextView(){//获得SharedPreference对象SharedPreferences sharedPreferences=getSharedPreferences("123",MODE_PRIVATE);//获得editor对象int count = sharedPreferences.getInt("index",0);StringBuffer stringBuffer = new StringBuffer();//字符串构造器主要是把每一条数据集中到一块int j=0;while(count>=j){String s = sharedPreferences.getString("Calander"+j,"");stringBuffer.append(s+" ");j++;}textView.setText(stringBuffer.toString());}}
Android入门 简单app开发:为女友实现记录月经周期的app相关推荐
- Android入门简单吗
手机可以说是人们形影不离的东西,出门必备的就是手机,随着安卓智能的快速发展,手机已经成为聊天.阅读.支付和拍照的必备工具.手机的大热也给Android程序员带来了未来.那Android入门简单吗? A ...
- 租车自驾app开发有什么作用?租车便利出行APP开发
在线租车APP有哪些优势,租车APP开发的基本功能,租车自驾app开发有什么作用?租车便利出行APP开发,租车服务平台小程序有哪些功能,租车软件开发需要多少钱,租车app都有哪些,租车平台定制开发,租 ...
- 安卓app开发工具_四川智慧社区安卓手机app开发多少钱
四川智慧社区安卓手机app开发多少钱 注册登录应用公园后,有两种APP制作模式: 1.主题模式: 应用公园平台提供了上百个配置好的APP模板,可以直接使用,把图片文字替换就可以直接使用.如下图所示: ...
- qmui android 入门,漫步QMUI开发路
QMUI Android(官网) 终于发布了,今天趁热打铁,来聊一聊 QMUI Android 开发背后的一些点滴. 关于源码学习 在 Android 里,写 UI 控件基本上是入门的第一步,Andr ...
- android 入门之一【开发环境搭建】
这里的开发环境采用Eclipse+android 开发插件,其它的开发环境不做介绍 一.安装JDK android 开发语言是基于Java的,所以要做android的开发必须要安装JDK,并且对JDK ...
- 什么app可以查车停车记录_捷停车app怎么查具体停车场
捷停车app这是当下一款非常便利使用停车的软件.你只需要下载这款软件,就可以在这里进行自动缴费,无需你再使用现金,而且绑定了你的车牌号就可以直接在线缴费了.而且能够实现自动支付,不用你再去使用现金,也 ...
- 简单Android app开发_如何简单快速开发外卖app?
如何开发一个外卖app?app开发需要多少钱?随着美团.饿了么的外卖app的发展,对餐饮.生鲜果蔬.超市便利店行业来说,app成为必不可缺少的一部分.与其向第三方交纳一定不开发一个自己的外卖平台.也有 ...
- android应用程序 多少钱_关于APP开发你最想了解的事,开发一个APP多少钱?
当我们在进行APP开发,最关注的问题一定是APP开发的价格问题,而作为软件开发行业的从业人员,经常会遇到这样的情况:"别说这么多,你只要告诉我开发一个软件多少钱就行了". 郑州AP ...
- 人人都学会APP开发 提高就业竞争力 简单实用APP应用 安卓浏览器APP 企业内部通用APP制作 制造业通用APP
安卓从2009年开始流程于手机.平板,已经是不争的非常强大生产力工具,更为社会创造非常高的价值, 现在已经是202X年,已经十几年的发展,安卓平台已经无所不在. 因此建议人人都学学APP制作,简易入门 ...
最新文章
- Rsession: R sessions wrapping for Java
- poj 2247 Humble Numbers
- 【量化投资】策略四(聚宽)
- STEAM 97%好评,体验堪比《杀戮尖塔》,为什么玩家说这是2020年上半年最超值的游戏?
- 基于 LiteSpeed 的一站式 PHP 网站解决方案 LLStack V1.0-1 发布
- 华为VLAN间互访配置
- 文件操作,读文件、写文件、获取文件长度、删除文件、判断文件格式等。
- 编写可复用的自定义按钮
- tomcat与jetty的区别
- 全球硬科技开发者大会(成都)开幕 蓝光发展等超300名开发者「乘风」数字升级...
- MySQL 用gourp by分组后取某一字段最大值
- Mac菜单栏使用过程中遇到的问题及解决方法
- linux-系统资源查看-动态
- PHP-redis中文帮助手册_set相关
- linux没有启用的仓库_在RHEL/CentOS 4-6中安装并启用RPMForge仓库
- 洋媳妇教育孩子的方法,令中国婆婆大开眼界 - 人人都是艺术
- dell服务器远程管理卡安装,dell r710xd 通过远程管理卡安装系统
- 量子计算机原理以及量子算法
- 淘宝API_item_cat_get - 获得淘宝商品类目
- Top 10 Most Popular Torrent Sites of 2014
热门文章
- 计算机控制技术包括数控机床,《数控机床原理与系统》教学大纲
- java.lang.NullPointerException com.enjoy.book.action.UserServlet.doPost(UserServlet.java:46)
- Win10总是蓝屏和不停重启怎么办
- ARM Cortex-A系列处理器性能分类比较
- 2022-2-9 Leetcode 925.长按键入
- 易基因|性别分化:DNA甲基化表观遗传调控性别表型可塑性,诱导斑马鱼性别比例失调
- C语言:选择结构 循环结构 的总结
- 说一说:年轻的资本到底是什么
- 7zip linux中文版官方下载,7Zip Linux版下载
- TDW 2019 | 微众银行AI能力融入系统设计 打破医疗信息化困境