前言

寒假答应给女友做一个记录月经周期的app,由于我太vegetable,写的比较辣鸡,大家凑活着看(手动笑哭)

思路:

首先要跟大家说的是,
android开发 要明白开发思想:逻辑和视图是分开的,视图就是你这个桌面上有什么组件,
逻辑就是你想要组件之间有什么联系,比如点击时间之类的。(比如网页,有前端有后台,分开的这种方式为开发提供了很大的便利)

开发app有四种方式:

  1. 通过XML文件开发;
  2. 通过JAVA代码开发(就是把XML配置文件删除,然后再java代码中新new一个布局管理器layout,然后在 OnCreate方法中setContentView方法的参数设置为这个新new的布局管理器)
  3. 通过JAVA+XML开发(用XML文件来主要配置桌面的组件位置、大小,用java实现组件之间的逻辑) 推荐!!!
  4. 通过自定义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相关推荐

  1. Android入门简单吗

    手机可以说是人们形影不离的东西,出门必备的就是手机,随着安卓智能的快速发展,手机已经成为聊天.阅读.支付和拍照的必备工具.手机的大热也给Android程序员带来了未来.那Android入门简单吗? A ...

  2. 租车自驾app开发有什么作用?租车便利出行APP开发

    在线租车APP有哪些优势,租车APP开发的基本功能,租车自驾app开发有什么作用?租车便利出行APP开发,租车服务平台小程序有哪些功能,租车软件开发需要多少钱,租车app都有哪些,租车平台定制开发,租 ...

  3. 安卓app开发工具_四川智慧社区安卓手机app开发多少钱

    四川智慧社区安卓手机app开发多少钱 注册登录应用公园后,有两种APP制作模式: 1.主题模式: 应用公园平台提供了上百个配置好的APP模板,可以直接使用,把图片文字替换就可以直接使用.如下图所示: ...

  4. qmui android 入门,漫步QMUI开发路

    QMUI Android(官网) 终于发布了,今天趁热打铁,来聊一聊 QMUI Android 开发背后的一些点滴. 关于源码学习 在 Android 里,写 UI 控件基本上是入门的第一步,Andr ...

  5. android 入门之一【开发环境搭建】

    这里的开发环境采用Eclipse+android 开发插件,其它的开发环境不做介绍 一.安装JDK android 开发语言是基于Java的,所以要做android的开发必须要安装JDK,并且对JDK ...

  6. 什么app可以查车停车记录_捷停车app怎么查具体停车场

    捷停车app这是当下一款非常便利使用停车的软件.你只需要下载这款软件,就可以在这里进行自动缴费,无需你再使用现金,而且绑定了你的车牌号就可以直接在线缴费了.而且能够实现自动支付,不用你再去使用现金,也 ...

  7. 简单Android app开发_如何简单快速开发外卖app?

    如何开发一个外卖app?app开发需要多少钱?随着美团.饿了么的外卖app的发展,对餐饮.生鲜果蔬.超市便利店行业来说,app成为必不可缺少的一部分.与其向第三方交纳一定不开发一个自己的外卖平台.也有 ...

  8. android应用程序 多少钱_关于APP开发你最想了解的事,开发一个APP多少钱?

    当我们在进行APP开发,最关注的问题一定是APP开发的价格问题,而作为软件开发行业的从业人员,经常会遇到这样的情况:"别说这么多,你只要告诉我开发一个软件多少钱就行了". 郑州AP ...

  9. 人人都学会APP开发 提高就业竞争力 简单实用APP应用 安卓浏览器APP 企业内部通用APP制作 制造业通用APP

    安卓从2009年开始流程于手机.平板,已经是不争的非常强大生产力工具,更为社会创造非常高的价值, 现在已经是202X年,已经十几年的发展,安卓平台已经无所不在. 因此建议人人都学学APP制作,简易入门 ...

最新文章

  1. Rsession: R sessions wrapping for Java
  2. poj 2247 Humble Numbers
  3. 【量化投资】策略四(聚宽)
  4. STEAM 97%好评,体验堪比《杀戮尖塔》,为什么玩家说这是2020年上半年最超值的游戏?
  5. 基于 LiteSpeed 的一站式 PHP 网站解决方案 LLStack V1.0-1 发布
  6. 华为VLAN间互访配置
  7. 文件操作,读文件、写文件、获取文件长度、删除文件、判断文件格式等。
  8. 编写可复用的自定义按钮
  9. tomcat与jetty的区别
  10. 全球硬科技开发者大会(成都)开幕 蓝光发展等超300名开发者「乘风」数字升级...
  11. MySQL 用gourp by分组后取某一字段最大值
  12. Mac菜单栏使用过程中遇到的问题及解决方法
  13. linux-系统资源查看-动态
  14. PHP-redis中文帮助手册_set相关
  15. linux没有启用的仓库_在RHEL/CentOS 4-6中安装并启用RPMForge仓库
  16. 洋媳妇教育孩子的方法,令中国婆婆大开眼界 - 人人都是艺术
  17. dell服务器远程管理卡安装,dell r710xd 通过远程管理卡安装系统
  18. 量子计算机原理以及量子算法
  19. 淘宝API_item_cat_get - 获得淘宝商品类目
  20. Top 10 Most Popular Torrent Sites of 2014

热门文章

  1. 计算机控制技术包括数控机床,《数控机床原理与系统》教学大纲
  2. java.lang.NullPointerException com.enjoy.book.action.UserServlet.doPost(UserServlet.java:46)
  3. Win10总是蓝屏和不停重启怎么办
  4. ARM Cortex-A系列处理器性能分类比较
  5. 2022-2-9 Leetcode 925.长按键入
  6. 易基因|性别分化:DNA甲基化表观遗传调控性别表型可塑性,诱导斑马鱼性别比例失调
  7. C语言:选择结构 循环结构 的总结
  8. 说一说:年轻的资本到底是什么
  9. 7zip linux中文版官方下载,7Zip Linux版下载
  10. TDW 2019 | 微众银行AI能力融入系统设计 打破医疗信息化困境