安卓移动应用开发之从零开始写程序6

2023-11-07

实验六 记事本小项目的实现(一)

由于项目相对来说比较中等,所以我分为两个实验来介绍给大家
本次实验实现最终效果图如下(实现除保存按钮外的按钮监听以及界面的布局文件)

主界面
显示笔记的内容和编辑的时间
里面有一个添加按钮
在这里插入图片描述
添加笔记界面
返回按钮,标题,清除图标和保存图标
在这里插入图片描述
更新笔记界面
显示编辑时间,内容,清除按钮和保存按钮
在这里插入图片描述

实验知识点

1.按钮监听事件的复习以及界面跳转的复习
2.了解控件的基础修改

实验步骤

1.创建新工程,取名NotePad
2.创建MainActivity和Main2Activity(这里创两个界面是因为后两个界面布局基本一致,可以用其他方式改变上面标题的名称)
3.编辑两个xml文件
4.编辑AndroidManifest.xml文件
5.编写list_item.xml文件
6.编写添加,删除,返回按钮的监听事件
7.布局文件分析
8.运行测试一下

实验具体内容

1.创建记事本工程
在这里插入图片描述
2.编写我们的主界面布局,其中用到的控件有textview,listview,button

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="#FB7A6A"
        android:textColor="#FFFFFF"
        android:gravity="center"
        android:text="记事本"
        android:textSize="20sp"/>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ListView
            android:id="@+id/lv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <Button
            android:id="@+id/btn_add"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/add"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="450dp"/>
    </RelativeLayout>

</LinearLayout>

3.编写添加/修改界面的布局,所用控件有textview,button,editText

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/rl"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="#FB7A6A">
        <TextView
            android:id="@+id/noteId"
            android:visibility="gone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""/>
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="添加记录"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:textSize="15sp"/>
        <Button
            android:id="@+id/btn_back"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_centerVertical="true"
            android:background="@drawable/back"
            />
    </RelativeLayout>
    <TextView
        android:id="@+id/tv_time"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:gravity="center"
        android:textColor="#FDBFB8"/>

    <EditText
        android:id="@+id/et_content"
        android:layout_width="match_parent"
        android:layout_height="450dp"
        android:gravity="top"
        android:background="@null"/>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:background="#FF8E8E"/>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:id="@+id/btn_delete"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/delete"
            android:layout_centerVertical="true"
            android:layout_marginLeft="80dp"/>

        <Button
            android:id="@+id/btn_save_note"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/save_note"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/btn_delete"
            android:layout_marginLeft="150dp"/>
    </RelativeLayout>
</LinearLayout>

4.编写我们的列表布局,list_item,控件为textview

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="日记内容"
        android:textSize="20sp"
        android:textColor="#FFFFFF" />
    <TextView
        android:id="@+id/tv_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="时间:"
        android:textSize="20sp"
        android:layout_marginTop="10dp"
        android:layout_below="@+id/title"
        android:textColor="#FDBFB8" />
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#CCCCCC"
        />
</LinearLayout>

5.实现添加按钮和删除按钮的监听事件
(1)主界面添加按钮的监听

// 设置添加笔记按钮事件,切换activity
        this.findViewById(R.id.btn_add).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View arg0) {
                        Intent in = new Intent(MainActivity.this,Main2Activity.class);
                        startActivity(in);
                    }
                });

(2)删除按钮的监听事件

 this.findViewById(R.id.btn_delete).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                contentEditText.setText("");
            }
        });

(3)返回按钮的监听事件

//按钮监听
        this.findViewById(R.id.btn_back).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View arg0) {
                        finish();
                    }
                });

6.修改AndroidManifest.xml
主要是主题改一下,美观一点

 android:theme="@style/Theme.AppCompat.NoActionBar">

7.分析xml文件
主界面我们没啥好讲的,就用了个listview控件
来讲讲我们的添加记录界面的id
这里id是用来区别修改和添加界面的,如果存在id证明是修改,反之则为添加,这样我们就省去了一个界面的创建

<TextView
            android:id="@+id/noteId"
            android:visibility="gone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""/>

8.运行测试
打开我们的模拟器
在这里插入图片描述
点击加号按钮
在这里插入图片描述
输入一些字符
在这里插入图片描述
点击删除按钮
在这里插入图片描述
点击返回按钮
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓移动应用开发之从零开始写程序6 的相关文章

  • 用BeanUtils类自动封装表单数据

    导入架包 commons beautils 1 8 0 jar commons logging jar Class
  • Android高级工程师普遍进阶难题:遇到瓶颈我们该如何去提升自己?哪个方向

    不要抱怨 抱怨无济于事 只能带来负能量 最重要的是改变 7 坚持写博客和技术文章 多总结 多参与开源项目 8 选择一家好的有发展前途的公司陪其成长 当发现现在公司不能满足自己的成长和发展时 果断跳槽 因为人生毕竟最宝贵的是时间 特别是程序员
  • ubuntu软件更新源,更改,可提高更新的速度,移动端app开发

    6 安装系统更新 打开 系统 gt 系统管理 gt 更新管理器 安装更新 完成后若系统提示重新启动 请重新启动系统 如果你是校园网用户 请查看 Ubuntu11 04教育网源 下面是Ubuntu 11 04一些常见的源 Ubuntu官方源
  • 最美应用API接口分析

    最美应用API接口分析 最美应用API接口分析一 请求版本列表1 1 API二 请求应用配置2 1 API2 2参数列表2 3 返回三 友盟更新3 1 API3 2参数列表3 3 返回四 appleStore应用信息4 1API4 2 返回
  • Android智能下拉刷新框架-SmartRefreshLayout

    框架 下拉刷新控件还能框架化 智能又怎么回事 二话不多少先上Demo效果图 咱们再来探个究竟 Github 传送门注意 本文仅仅是博客文章 主要用于项目介绍和宣传 由于发布时间关系 部分内容已经过期 详细使用文档请跳转 github Dem
  • 关于Android Studio使用intent跳转到新的Activity出现not an enclosing class报错的解决办法

    目前遇到not an enclosing class这个问题两次 分别是犯了不同的错误 1 第一个参数输入错误 第一个参数应该是当前活动的上下文 也就是当前Activity的参数 例如我的当前Activity是MainActivity 要跳
  • 移动端表格组件

    最近在vue开发移动端过程中 需要用到表格展示 经过多方面对比感觉这个不错 https www csdn net tags Mtjacg4sOTk1NDctYmxvZwO0O0OO0O0O htmlhttps www csdn net ta
  • mongodb如何实现数组对象求和

    原本地址 mongodb如何实现数组对象求和 mongodb在计算集合数组值时候 我们通常会想到使用 group与 sum 但是如果是数组里面多个json对象 并且还需要根据条件过滤多个对象的内容该如何处理 现在让我们来实现它 假设mong
  • arcgis for android 学习 - (5) 在地图指定位置添加“标记“,并尝试选中它

    我做一个例子 1 首先显示一个地图 2 点击 添加要素 按钮后再次点击地图 将会在地图上添加 红色的位置标记 3 再次点击按钮后 这时 就可以点击刚刚添加的 红色的位置标记 就可以查看到 该标记关联到得属性值 布局
  • 关于httpurlconnection getcontentlength返回值为-1的问题

    在做AsyncTask异步任务读取网络数据的时候 发现了httpUrlConnection的获取数据内容长度 connection getContentLength 总是为 1 导致进度条一直为灰色状态 预期结果应如图所示 而现在的效果是这
  • Lottie动画概述,文末有彩蛋

    原生的动画效果有时候写起来会非常的复杂 要考虑到很多兼容和效果 Lottie动画专门为了解决这种烦恼而产生的 注 不仅是Lottie可以做到 另外一种库也可以做到将动画分成一帧一帧展示 它就是 android gif drawable 库
  • 安装cmake过程出错:Error when bootstrapping CMake: Cannot find a C++ compiler that supports both C++11 and ...

    Error when bootstrapping CMake Cannot find a C compiler that supports both C 11 and the specified C flags 1 没有装gcc 和 g 2
  • 制作一个“生日快乐”App,来自程序员的生日礼物~

    点击上方 码农的后花园 选择 星标 公众号 精选文章 第一时间送达 之前给大家制作了一个来自程序员的表白神器 本期带大家做一个 生日快乐 App 来自程序员的生日礼物 不要再说程序员不懂浪漫咯 往期精彩 Android App 开发的三种姿
  • Android RecyclerView最全使用详解

    本文目录 RecyclerView概述 RecyclerView使用 基础篇 第一步 添加RecyclerView 第二步 添加布局文件 第三步 添加逻辑代码 运行效果 RecyclerView使用 进阶篇 布局管理器 线性布局管理器 网格
  • 史上最全的《Android面试题及解析》,赶紧收藏!

    写在文章前面的话 工欲行其事 必先利其器 英雄和侠客更需要宝剑助己成功 同样 在现代软件开发环境中 每个Android开发者都需要更好的工具 帮助我们增强功能 提高效率 在这个竞争激烈的行业中 只有优秀的工程师能够生存 需要我们能够为客户提
  • APK加壳原理简述

    先把核心原理记录一下 代码随后再补 PRE dex文件结构知识和加壳原理 先看下dex文件的基本结构 对于加壳主要关注3个关键字 1 checksum 文件校验码 使用alder32算法 校验文件除了maigc和checksum外余下的所有
  • Android Studio中的Java控制台中出现乱码问题?

    今天在用Android studio 中敲代码时发现控制台出不了汉字 一打汉字全是乱码的 在此特供解决方案 在Java的工程目录build gradle下添加如下代码 1 新版gradle tasks withType JavaCompil
  • 鸿蒙开发之页面路由(router)

    页面路由 router 页面路由指在应用程序中实现不同页面之间的跳转和数据传递 HarmonyOS提供了Router模块 通过不同的url地址 可以方便地进行页面路由 轻松地访问不同的页面 本文将从 页面跳转 页面返回 和 页面返回前增加一
  • [rk3399 android11]系统通知声音默认关闭

    a build make target product full base mk b build make target product full base mk 45 7 45 7 PRODUCT PACKAGES Additional
  • OpenHarmony沙箱文件

    一 前言 1 前景提要 DevEcoStudio版本 DevEco Studio 3 1 Release SDK版本 3 2 2 5 API版本 9 2 概念 在openharmony文件管理模块中 按文件所有者分类分为应用文件和用户文件和

随机推荐

  • 多线程互斥锁 pthread_mutex 的使用及初始化问题

    一 互斥锁pthread mutex的使用 1 初始化锁 有两种方法初始化互斥锁 静态方式和动态方式 静态方式 pthread mutex t mutex lock PTHREAD MUTEX INITIALIZER 在LinuxThrea
  • 软件测试流程/需求分析之软件需求概述

    今天重点从四个方面来和大家对需求阶段需求分析做一个讲解 阅读测试文档 参与需求评审 测试需求分析 提取功能点 去做这些对应的事情之前 我们要先了解到底什么是需求 需求评审我们要从哪些点去评审 我们要去提取功能点要怎么样去进行提取 回忆测试流
  • 使用ffmpeg将mkv,rmvb转换成mp4

    cmd输入ffmpeg version 检查ffmpeg安装版本 1 进入mkv rmvb所在的文件夹 2 转换mkv ffmpeg i inputname mkv c v copy c a copy outputname mp4 转换rm
  • 几种优化算法(求最优解)

    几种优化算法 先简单备注下 今后接触到再看 参考资料 http blog sina com cn s blog 6a1bf1310101hhta html
  • SpringBean管理

    一 什么是SpringBean 在Spring中将管理对象称为 Bean Bean是由一个SpringIOC容器实例化 组装和管理的对象 也就是说 Bean并不是由我们程序员编写的 而是在程序运行过程中 由Spring通过反射机制生成的 S
  • 串口通信开发

    一开始做串口通信开发时 觉得并不难 无非就是发送 然后等一会 再接收就完事了 其实里面的水很深 特别是在各种设备都有的情况下 我们在整个开发过程中 遇到了以下的几个主要问题 1 设备出现严重的延迟 2 接收过程出现数据粘包或截断 3 多设备
  • 华为OD机试-目录删除

    Online C compiler to run C program online include
  • 解决错误:Plugin with id 'com.android.application' not found

    本文转载地址 https blog csdn net qq 26819733 article details 50935632 Error 1 0 Plugin with id com android application not fou
  • C++中的转移字符

    C 中转移字符 顺序 描述 表示 单引号 字节0x27 ASCII编码 双引号 字节0x22 ASCII编码 问号 字节0x3f ASCII编码 反斜线 字节0x5c ASCII编码 a 可听见钟 字节0x07 ASCII编码 b 退格 字
  • 深度学习方法在道路提取、图像检索上的几篇文章阅读笔记

    关于全卷积神经网络的upsampling还没有搞清楚 如果你有合适的资料或者好方法 欢迎评论交流 深度学习方法在道路提取上的应用1 传统方法 A review of road extraction from remote sensing i
  • Siebel Open UI

    阅读原文 http blog sina com cn s blog 70ea5c9101017qi4 html Open UI最常提到的特性是 W3C标准兼容 可在任何符合标准的浏览器上使用 可跨多种形式的因素 客户端JavaScript框
  • ESP32上实现LVGL的界面显示

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 元器件 二 导入库 三 调试TFT eSPI 四 调试LVGL 总结 前言 基于Vscode中的 PlatformIO平台arduino框架 使用1 8
  • nrm安装报错,解决方案

    nrm安装报错 下方为错误信息 C Users kefu gt nrm version internal validators js 124 throw new ERR INVALID ARG TYPE name string value
  • vue-codemirror设置输入自定义提示效果

    概要 提示 通过使用 vue codemirror 4 0 6 实现输入提示 类似于vscode提示效果 效果图 实现原理 1 得到光标位置 定义提示内容 handleShowHint 获取输入框实例 const cmInstance th
  • 列表和元组

    1序列概述 序列是Python中最基本的数据结构 序列中的每个元素都分配一个数字 它的位置 或索引 第一个索引是0 第二个索引是1 依此类推 Python中 常见序列有列表 元组 字符串 序列可以进行的操作 有索引 切片 加 乘 检查成员
  • yolact模型测试(一)

    YOLACT时2019新出的用于实例分割的深度学习模型 在一番环境配置后成功复现了yolact 针对改进版的YOLACT 我还未尝试 下面简单的测试了yolact模型中对mask的处理 当然限于时间精力的有限 本文是针对一个博主的一篇文章
  • Hibernate之@Id详解

    给实体的一个属性标识为数据库表中的主键时 可以使用 Id public class Student private Integer id Id public Integer getId return id public void setId
  • Android studio中Custom View使用方法

    Android studio的好处 这里就不错过多的说明了 studio中内置了很多的模版可供使用 大大的简化了工作量 在实际开发中 android自带的各类控件可能无法满足我们的需求 这就需要我们自定义控件 下面介绍一下Custom Vi
  • google 浏览器出现 ERR_PROXY_CONNECTION_FAILED 无法访问网络

    1 问题 早上来公司突然发现谷歌浏览器访问所有的东西都出现 ERR PROXY CONNECTION FAILED 网络不可用的提示 这一串的单词的意思是 代理连接失败 真的是一脸懵逼 经过一番百度后发现是网络代理作的妖 2 解决方法 其实
  • 安卓移动应用开发之从零开始写程序6

    实验六 记事本小项目的实现 一 由于项目相对来说比较中等 所以我分为两个实验来介绍给大家 本次实验实现最终效果图如下 实现除保存按钮外的按钮监听以及界面的布局文件 主界面 显示笔记的内容和编辑的时间 里面有一个添加按钮 添加笔记界面 返回按