android项目 之 记事本(1) ----- 界面设计

开发一个简单APP的流程及记事本案例(Android Studio) 1.需求分析 (1)业务需求分析:分析潜在客户需要什么产品或服务 (2)架构分析:分析所做的产品或服务需要什么功能及实现方式并画出功能结构图,记事本案例如下 (3)数据库类设计分析:数据库设计是项目开发中非常关键的一个环节。同样在记事本案例中也至关重要,我们通过数据库表(Note)进行增删改查操作,记事本的数据表如下所示 字段名 数据类型 字段名 数据类型 id integer 是 编号 content text 否 事件内容 notetime text 否 保存事件的时间 阅读详情


      主要的界面有两个,分别如下:

 

         左边是进入后的主界面,右边则是进入添加记事模式的界面,主要的功能与可以从图中体现出来,下面是主要代码

         activity_main.xml

<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:background="@drawable/main_bg"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

        title_add.xml这个是重新设计标题栏,覆盖系统的标题栏

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="45dp" 
    android:background="@drawable/navigationbar_bg">
    <ImageView 
        android:id="@+id/iv_icon"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:src="@drawable/icon"
        android:layout_margin="5dp"
        android:layout_alignParentLeft="true"
        />
   	<TextView 
        android:layout_width="wrap_content"
        android:layout_height="35dp"
        android:text="记事本"
        android:layout_margin="5dp"
        android:textSize="20dp"
        android:gravity="center_vertical"
        android:layout_toRightOf="@id/iv_icon"
        />
	<Button 
	    android:id="@+id/bt_add"
	    android:layout_height="35dp"
	    android:layout_width="35dp"
	    android:background="@drawable/navigationbar_add"
	    android:layout_toLeftOf="@+id/bt_setting"
	    android:layout_margin="5dp"
	    />
	<Button 
	    android:id="@+id/bt_setting"
	    android:layout_height="35dp"
	    android:layout_width="35dp"
	    android:background="@drawable/navigationbar_setting"
	    android:layout_alignParentRight="true"
	    android:layout_margin="5dp"
	   
	    />
	
</RelativeLayout>

       activity_add.xml 这个是添加记事的主界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg">
    <com.example.notes.LineEditText
        android:id="@+id/et_note"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00000000"
        android:scrollbars="vertical"
        android:fadingEdge="vertical"
        android:inputType="textMultiLine"
        android:hint="请输入内容"
        android:gravity="top"
        android:textSize="20sp"
        android:layout_margin="5dp"
        android:lineSpacingExtra="10dp"
        />
    <ScrollView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        >
       <GridView 
       android:id="@+id/bottomMenu"
       android:layout_width="match_parent"
       android:layout_height="45dp"
       android:numColumns="auto_fit"
       android:background="@drawable/navigationbar_bg"
       android:horizontalSpacing="10dp"
       ></GridView>
        
    </ScrollView>
 </RelativeLayout>

        其中,    com.example.notes.LineEditText是自定义的EditText,

        com.example.notes.LineEditText..java

package com.example.notes;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.EditText;

public class LineEditText extends EditText {
	private Rect mRect;
	private Paint mPaint;
	
	public LineEditText(Context context, AttributeSet attrs) {
		// TODO Auto-generated constructor stub
		super(context,attrs);
		mRect = new Rect();
		mPaint = new Paint();
		mPaint.setColor(Color.GRAY);
	}
	
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		//得到EditText的总行数
		int lineCount = getLineCount();
		Rect r = mRect;
		Paint p = mPaint;
		//为每一行设置格式 
		for(int i = 0; i < lineCount;i++){
			//取得每一行的基准Y坐标,并将每一行的界限值写到r中
			int baseline = getLineBounds(i, r);
			//设置每一行的文字带下划线
			canvas.drawLine(r.left, baseline+5, r.right, baseline+5, p);
		}
	}
}

         item_button.xml这个是上述GridView中每一项布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageView 
        android:id="@+id/item_image"
        android:layout_height="35dp"
        android:layout_width="35dp"
        android:layout_margin="5dp"
        />
  
</RelativeLayout>


        title_add.xml 同样是添加记事界面的标题栏

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="45dp" 
    android:background="@drawable/navigationbar_bg">
    <Button 
        android:id="@+id/bt_back"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:background="@drawable/navigationbar_backup"
        android:layout_margin="5dp"
        android:layout_alignParentLeft="true"
        />
   	<TextView 
        android:layout_width="wrap_content"
        android:layout_height="35dp"
        android:text="新增记事"
        android:layout_margin="5dp"
        android:textSize="20dp"
        android:gravity="center_vertical"
        android:layout_centerHorizontal="true"
        />
	
	<Button 
	    android:id="@+id/bt_save"
	    android:layout_height="35dp"
	    android:layout_width="35dp"
	    android:background="@drawable/navigationbar_save"
	    android:layout_alignParentRight="true"
	    android:layout_margin="5dp"
	    />
	
</RelativeLayout>

 

     去掉系统的标题栏,并且用自己的标题栏的方法为,注意顺序不能错       

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.activity_main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_main);  


   为GridView添加内容,用到了SimpleAdapter,主要代码为:

	private GridView bottomMenu;
	//底部按钮 
	private int[] bottomItems = {
			R.drawable.tabbar_handwrite,
			R.drawable.tabbar_paint,
			R.drawable.tabbar_microphone,
			R.drawable.tabbar_photo,
			R.drawable.tabbar_camera,
			R.drawable.tabbar_appendix
	};
<pre class="java" abp="926" name="code">	//配置菜单
	private void initBottomMenu(){
		ArrayList<Map<String,Object>> menus = new ArrayList<Map<String,Object>>();
		for(int i = 0;i < bottomItems.length;i++){
			Map<String,Object> item = new HashMap<String,Object>();
			item.put("image",bottomItems[i]);
			menus.add(item);
		}
		bottomMenu.setNumColumns(bottomItems.length);
		bottomMenu.setSelector(R.drawable.bottom_item);
		SimpleAdapter mAdapter = new SimpleAdapter(AddActivity.this, menus,R.layout.item_button, new String[]{"image"}, new int[]{R.id.item_image});
		bottomMenu.setAdapter(mAdapter);
	}
	

 

          到此上述界面已完成,下一节,实现添加相片功能

基于Android的记事本的设计与开发(实验报告+源代码) 说明: 大三下学期和小组成员一起写的一个安卓项目(附源代码哦) 项目比较简陋,但是这个项目把Android中四大组件的功能都实现了哦!! 先放两张图: 目 录 1 项目分析 1 1.1 项目背景 1 1.2 项目开发目的及意义 1 1.3 需求分析 2 1.3.1 功能需求分析 2 1.3.2 功能模块概述 2 1.3.3 系统流程图 3 1.4 开发及运行环境 4 2 预期目标 5... 阅读详情

相关推荐

Android项目实战——一个简单的记事本程序

因为自己刚看完第一行代码,就想做一个小小的项目来巩固一下自己的知识,顺便检验一下自己的学习成果。 运行界面如图: 相信大家都已经看出来了,这个app分为两个activity,MainActivity中列出笔记的title,用户通过点击列表项目进入另一个活动。 下面是activity_main.xml的代码   &lt;?xml version="1.0" encoding="utf...

Mr_cqh的博客 3万+

计算机毕业设计springboot基于Android的个人日记的设计与实现9bdhi9【附源码+数据库+部署+LW】

选题背景: 在现代社会中,人们的生活节奏越来越快,工作和学习压力也越来越大。在这样的环境下,个人日记成为了许多人记录思考、释放情感、寻求内心平静的重要方式之一。然而,传统的纸质日记本存在着易丢失、不便携、无法实时备份等问题。为了解决这些问题,基于Android的个人日记应运而生。该系统通过结合Android移动设备的智能化和网络连接功能,为用户提供方便、安全、可靠的个人日记记录和管理服务。 意义: 基于Android的个人日记的设计与实现具有多重意义。首先,它可以提升个人日记的便捷性和灵活性。通过该系统,

wek106的博客 234

Android小项目:记事本

前几天写了一个Android记事本小程序,现在记录一下。 考虑到是记事本小程序,记录的内容只有文字,而且内容不会太长,所以选择使用SQLite数据库,数据存放在用户的手机上。 牵涉到数据库,那自然是一个实体。先设计实体数据表:DBHelper.java package com.ikok.notepad.DBUtil; import android.content.Context; impo

someone_ikok的博客 1万+

基于Android平台的记事本软件(Android Studio项目+报告+app文件)

基于Android平台的记事本软件(Android Studio项目+报告+app文件)

MckennaGrace的博客 8864

android简单记事本

android简单记事本,实现点击查看删除,添加保存。

G-guo 6250

简单的安卓记事本

在Android系统的手机开发平台之上,研究与开发一个记事本软件,提供适用手机的记事本功能服务。流程图: 数据库设计实现:        该系统所有数据存在数据库中,本次实验采用SQLite来对数据库进行操作。 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它具有零配置、足够小、操作速度快等优点,被广泛应用于手机应用软件中。

polmJ 1万+

Android Studio实现简单的记事本

本篇博客主要讲解了如何实现记事本应用,在实现本项目的过程中,熟悉了ListView的使用、SQLite数据库的相关操作、Activity的跳转以及数据回传。这些知识点在Android项目中会经常使用,因此希望大家能够熟练掌握上述知识点的使用,方便后续开发安卓项目。

振华OPPO的博客世界 7万+

安卓记事本实例代码

记事本,可以安装,用于记载事情,把日志分类,把某篇日志以短信形式发送

Android Studio——记事本案例

因为记事本的纪录列表是使用ListView控件展示的,因此需要建立一个数据适配器对ListView控件进行数据适配。1、先创建一个DBUtils类,在该类中定义数据库的名称、表名、数据库版本、数据库表中的列名以及获取当前日期等信息。因为添加记录界面有保存和删除按钮,因此创建记录类实现点击事件,将编写的内容添加到数据库中。记事本的每个记录都会有记录内容和记录时间这两个属性,因此需要建立一个实体类用于存放这些属性。因为记事本的存储和读取记录的数据都是通过数据库完成的,因此需要创建数据库。

m0_61793503的博客 7744

Android的简单记事本实现

这个例子主要涉及到了以下一些知识点:ListView,自定义Adapter、SQLiteDatabase,并且对menu做了简单处理。

记事本界面

AndroidStudio登录界面

【Windows程序设计作业】记事本

通过这次学习,我了解了电脑上的记事本是如何开发的,同时,懂得了很多工具的使用方法。最开始我遇到了很多问题,包括了改了name就无法保存的问题,可能是编译器的问题,所以我就用的原来的name。最后我还要一个一个改代码的name。好在最后还是成功做出来了。

weixin_63045841的博客 581

Android实现记事本项目

近年来,随着生活节奏的加快,工作和生活的双重压力全面侵袭着人们,如何避免忘记工作和生活中的诸多事情而造成不良的后果,就显得非常重要。为此,我们开发了一款基于Android系统的简单记事本,它能够便携记录生活和工作的诸多事情,从而帮助人们有条理的进行时间管理。 记事本界面包含内容列表和添加按钮。1、当长按列表条目(Item)时,会弹出一个提示是否删除Item的对话框,当点击对话框中的确定按钮时,删除Item,当点击对话框中的取消按钮时,取消删除Item。 2、当点击记事本界面列表中的Item时,会跳转到修改记录界面,该界面可以查看和修改记录。 3、当点击记事本界面中的添加按钮时,会跳转到添加记录界面,该界面可以添加记录内容。

Android:实现安卓小程序-记事本(备忘录)的开发

目录 1. 前言 2. 记事本功能需求 3. 部分关键代码解析及程序截图 3.1 记事本类的基本设计 3.2记事本的数据存储设计 3.3 主界面的设计 3.4 记事本的编辑 3.5 记事本的背景色设置 3.6 记事本的闹铃功能 3.7 高级搜索 4. 总结 1. 前言 在学习安卓开发这门课程中期,学会了安卓开发的基本知识,比如,UI组件的应用,Intent的应用等等,同...

DieForCode的博客 2万+

Android实现记事本功能

主要为大家详细介绍了Android实现记事本功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

手把手教你用运放搭建方波三角波发生器(附Multisim仿真文件)

本文详细解析了使用运算放大器搭建方波和三角波发生器的核心原理与设计步骤。通过剖析迟滞比较器与积分器的联动机制,指导读者进行电路设计、元件选型,并借助Multisim仿真进行参数调优与波形优化。文章提供了从理论分析、虚拟仿真到实物焊接调试的完整实践指南,并附有仿真文件,帮助硬件爱好者与初学者深入掌握这一经典模拟电路设计。

weixin_29165725的博客 639

Android项目之记事本

1、需求分析 1)业务需求分析: 近年来,随着生活节奏的加快,工作和生活的双重压力全面侵袭着人们,如何避免忘记工作和生活中的诸多事情而造成不良的后果,就显得非常重要。为此,我们开发了一款基于Android系统的简单记事本,它能够便携记录生活和工作的诸多事情,从而帮助人们有条理的进行时间管理。 2)系统架构分析 记事本界面包含内容列表和添加按钮。 1、当长按列表条目(Item)时,会弹出一个提示是否删除Item的对话框,当点击对话框中的确定按钮时,删除Item,当点击对话框中的取消按钮时,取消删除Item。

weixin_44808327的博客 8036

SAP-ABAP:SAP ABAP 深度解析:BAPI 从入门到精通 —— 原理、实战与自定义开发全指南

SAP ABAP BAPI 深度解析摘要 本文全面介绍了 SAP ABAP 中的 BAPI(业务应用程序编程接口)技术,涵盖以下核心内容: BAPI 定义与特点:BAPI 是 SAP 为业务对象提供的标准化编程接口,具有面向对象、封装业务逻辑、标准化错误处理和版本兼容性等特点。 BAPI 与 RFC 关系:所有 BAPI 都是 RFC,但需额外满足业务对象注册、标准化参数和错误处理等要求。 BAPI 核心作用:包括业务逻辑封装、系统集成、标准化错误处理、版本兼容和审计合规。 实战演示:通过创建销售订单的完整

baidu_35680696的博客 1033

Android——记事本功能业务(完整代码)

一、搭建记事本页面布局activity_notepad.xml 二、搭建记事本界面Item布局notepad_item_layout.xml 三、封装记录信息实体类NotepadBean类 四、编写记事本界面列表适配器NotepadAdapter类 五、创建数据库 六、实现记事本界面的显示功能 七、搭建添加记录界面和修改记录界面的布局 八、实现添加记录界面的功能 九、实现修改记录界面的功能 十、删除记事本中的记录

weixin_72634509的博客 2万+

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 272

树莓派介绍与可安装的操作系统

树莓派是一款由英国树莓派基金会开发的信用卡大小的微型计算机。处理器(CPU)内存(RAM)图形处理器(GPU)USB 接口网络接口(以太网和 Wi-Fi)视频输出(HDMI)音频输出用户只需添加电源、存储卡、显示器和输入设备(键盘、鼠标),就可以将其当作一台功能齐全的电脑使用。主要特点:低成本:价格亲民,适合教育和个人项目。小巧便携:体积小,便于携带和部署。功能强大:支持多种编程语言和操作系统,功能不逊于传统电脑。树莓派从最初的教育工具发展成为功能强大的多用途平台。最新的树莓派 5。

像风一样自由的博客 2196

Android手机开发课程设计之记事本

一、需求分析 1.1业务需求分析 近年来,随着生活节奏的加快,工作和生活的双重压力全面侵袭着人们,如何避免忘记工作和生活中的诸多事情而造成不良的后果就显得非常重要。为此我们开发一款基于Android系统的简单记事本,其能够便携记录生活和工作对诸多事情,从而帮助人们有效地进行时间管理。 1.2功能需求分析 本记事本项目希望可以开发出一款符合用户生活工作习惯的简单应用,能够满足用户的各方面需求,可以对记事进行增加、查看、修改和删除,要求功能完善丰富并且具有良好的用户界面和交互体验。 二、项目设计 2.1功能模块

qq_44111805的博客 1万+

手把手教您如何群晖/飞牛NAS等服务器上一键部署洛雪音乐同步服务,手机电脑无缝同步歌单,支持外网访问

🎵 手机电脑歌单不同步?用Docker在群晖/飞牛NAS等服务器上搭个同步服务器, 3分钟搞定 !支持docker-compose一键部署,手机、电脑、平板收藏夹实时同步,外出也能用域名远程访问 ~ ✨

XiaoqiangClub的博客 4604
上一篇: 排序算法(C实现)-------- 归并排序
下一篇: android项目 之 记事本(2)------- 添加照片
jesson20121020
博客等级 码龄15年 361粉丝 99原创
评论 118
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值