Android开发日志打卡APP(二)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Android开发日志打卡APP(二)

Android开发日志打卡APP(二)

文章目录


前言

在之前的文章中,准备工作已经完成,现在我们将开始真正的制作。这里将展示 Today页面 的制作过程。


开发过程

一、背景和标题

在之前章节中已经介绍了文件目录的大致状况。Today页面的布局将在fragment_home.xml文件中进行编写。

这里我们采用RelativeLayout的布局方式


首先,为Today页面添加适合的顶部标签栏:


因为之后在其他页面中也将用到,所以这里我们采用自定义组件的方法,在fragment_home.xml中进行了调用:

    <include
        android:id="@+id/ic_main"
        layout="@layout/custom_control_home_title"/>

查看custom_control_home_title.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="60dp"
    android:background="@color/pink_02">
    <TextView
        android:id="@+id/home_title_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Today"
        android:textSize="26dp"
        android:textColor="@color/white"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"/>
</RelativeLayout>

这样,在Today页面就可以看到顶部已经存在该标题栏了。

接着,我们为Today页面增加一个好看的背景,为了方便,这边直接使用了高清的图片作为了背景:

    //背景
    <ImageView
        android:layout_below="@+id/ic_main"
        android:layout_marginLeft="-25dp"
        android:layout_width="500dp"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:src="@drawable/back_icon"/>

背景图片我已经上传到图床,供大家参考:

背景图连接

此时页面如下:


二、日志图标

接着,我们为Today页面添加上日志图标。

这里我们采用ImageButtonTextView两个组件来实现一个日志图标的制作:

    //听音乐
    <ImageButton
        android:id="@+id/btn_listen_music"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="90dp"
        android:layout_height="86dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="27dp"
        android:layout_marginTop="80dp"
        android:scaleType="fitXY"
        android:src="@mipmap/music6" />
    <TextView
        android:id="@+id/text_listen_music"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btn_listen_music"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:layout_marginStart="48dp"
        android:text="听音乐"
        android:textColor="#000000"
        android:textSize="16sp" />

这里为大家解释一些一些代码:

1.  style="?android:attr/borderlessButtonStyle"       用于消除按钮的默认背景色
2.  android:scaleType="fitXY"        用于调整图片的比例

其中引入的听音乐图标如图所示:

其余的代码是为了保持图标和文字在页面的位置。

在此基础上,我们又增加了早睡、背单词、做运动、早起、思考五个类型,这里就不一一介绍了,到这里,我们Today页面的基本页面已经完成了:


三、日志弹框

接着,我们为日志图标制作弹出框。

这里我们创建一个文件:dialog_tips_custom_style.xml

先上效果图:

这里,我们将在一个大的RelativeLayout布局中,嵌套一个LinearLayout布局:

首先是弹框的标题:

        <TextView
            android:id="@+id/dialog_custom_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:padding="10dp"
            android:text="提示"
            android:textColor="#000"
            android:textSize="14dp"/>

这里的文字暂时设为“提示”,文字水平居中显示。

接着引入分隔实线:

        <View
            android:layout_marginBottom="6dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#ECEAEA"
            android:layout_above="@+id/ll_btn" />

这里将实线置于提示文字下放。

然后,引入日志图标:

        <ImageView
            android:id="@+id/dialog_custom_image"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="match_parent"
            android:layout_height="66dp"
            android:layout_gravity="center"
            android:src="@mipmap/music4"
            />

接着,我们引入可输入的文本框:

        //文本框,最长可输入200字
        <EditText
            android:id="@+id/dialog_custom_edittext"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/dialog_edittext_shape"
            android:hint="写点什么吧..."
            android:gravity="top|left"
            android:padding="10dp"
            android:inputType="textMultiLine"
            android:textSize="13sp"
            android:maxLines="8" />

其中:

maxLines——设置文本框最多输入8行

hint——设置提示文字

textMultiLine——设置多行输入

引入的样式dialog_edittext_shape如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="16dp"/>
    <stroke android:width="2dp" android:color="#F2F2F2"/>
    <solid android:color="#ffffff"/>
    <padding android:top="2dp" android:bottom="2dp" android:left="2dp"/>
</shape>

最后,为弹框设置点击按钮:

        <RelativeLayout
            android:id="@+id/ll_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical">
            <Button
                android:id="@+id/dialog_button_save"
                android:layout_width="80dp"
                android:layout_height="33dp"
                android:layout_marginTop="20dp"
                android:layout_marginBottom="30dp"
                android:layout_centerHorizontal="true"
                android:background="@drawable/dialog_button_shape"
                android:text="保存"
                android:textSize="10sp"
                android:textColor="#ffffff"/>
        </RelativeLayout>

到此位置,弹框的样式完成了!

下面我们新建一个CustomTipDialog.kt文件:

让它继承Dialog类:

class CustomTipDialog(context: Context) : Dialog(context, R.style.DialogTheme){}

导入弹框样式:

    private val mTvTitle:TextView
    init {
        val view=LayoutInflater.from(context).inflate(R.layout.dialog_tips_custom_style,null)
        mTvTitle=view.findViewById(R.id.dialog_custom_title)
        setContentView(view)
    }
    fun setTitle(title:String){
        mTvTitle.text=title
    }

在HomeFragment.kt文件中绑定点击事件:

    binding = FragmentHomeBinding.inflate(inflater, container, false)
        val dialog_fragment: View = inflater!!.inflate(R.layout.dialog_tips_custom_style,container,false)
              //听音乐按钮
    binding.btnListenMusic.setOnClickListener{
        val customTipDialog=CustomTipDialog(activity as Context)
        customTipDialog.setTitle("打卡日志")
        customTipDialog.show()
    }

到此为止,首页的样式的基本制作过程已经介绍完毕,关于如何将弹框内容读取和存储,将在之后的章节中介绍。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3天前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
|
3天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
2天前
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
13 1
|
11天前
|
JSON 缓存 前端开发
HarmonyOS NEXT 5.0鸿蒙开发一套影院APP(附带源码)
本项目基于HarmonyOS NEXT 5.0开发了一款影院应用程序,主要实现了电影和影院信息的展示功能。应用包括首页、电影列表、影院列表等模块。首页包含轮播图与正在热映及即将上映的电影切换显示;电影列表模块通过API获取电影数据并以网格形式展示,用户可以查看电影详情;影院列表则允许用户选择城市后查看对应影院信息,并支持城市选择弹窗。此外,项目中还集成了Axios用于网络请求,并进行了二次封装以简化接口调用流程,同时添加了请求和响应拦截器来处理通用逻辑。整体代码结构清晰,使用了组件化开发方式,便于维护和扩展。 该简介概括了提供的内容,但请注意实际开发中还需考虑UI优化、性能提升等方面的工作。
61 11
|
8天前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
14天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
74 6
|
27天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
53 19
|
15天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
49 3
|
27天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
56 14
|
17天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。