Android开发日志打卡APP(二)

文章目录

  • Android开发日志打卡APP(二)
    • 前言
    • 开发过程
      • 一、背景和标题
      • 二、日志图标
      • 三、日志弹框

前言

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


开发过程

一、背景和标题

在之前章节中已经介绍了文件目录的大致状况。Today页面的布局将在fragment_home.xml文件中进行编写。
这里我们采用RelativeLayout的布局方式

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

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

    <includeandroid: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"><TextViewandroid: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页面增加一个好看的背景,为了方便,这边直接使用了高清的图片作为了背景:

    //背景<ImageViewandroid: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两个组件来实现一个日志图标的制作:

//听音乐<ImageButtonandroid: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" /><TextViewandroid: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布局:
首先是弹框的标题:

        <TextViewandroid: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"/>

这里的文字暂时设为“提示”,文字水平居中显示。
接着引入分隔实线:

        <Viewandroid: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" />

这里将实线置于提示文字下放。
然后,引入日志图标:

        <ImageViewandroid: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字<EditTextandroid: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>

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

        <RelativeLayoutandroid:id="@+id/ll_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="vertical"><Buttonandroid: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:TextViewinit {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()}

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

Android开发日志打卡APP(二)相关推荐

  1. Android开发日志打卡APP(一)

    Android开发日志打卡APP(一) 文章目录 Android开发日志打卡APP(一) 简介 界面展示 内容总结 1.控件 2.布局 3.技术 开发过程 准备工作 启动页面 底部导航栏 简介 ​ 初 ...

  2. android开发 实现动态获得app的cpu占有率并导出文件的两种方法。

    android开发 实现动态获得app的cpu占有率并导出文件的两种方法. 最近在做学校实验室的项目的时候,师兄要求我对app的性能进行评估,主要是从电量.cpu占有率.python模型的响应时间三者 ...

  3. Android开发详解之App升级程序一点通

    Android开发详解之App升级程序一点通 结束语 UpdateManager.java import java.io.File; import java.io.FileOutputStream; ...

  4. (转)解决android开发人员,手机app图标显示不正确问题

    (转)解决android开发人员,手机app图标显示不正确问题 参考文章: (1)(转)解决android开发人员,手机app图标显示不正确问题 (2)https://www.cnblogs.com/ ...

  5. Android ADB工具-管理设备 app(二)

    Android ADB工具-管理设备 app(二) 标签(空格分隔): Android 4.管理设备 app 命令 功能 adb install [-r|-s] <apkfile> 安装 ...

  6. android获取版本号报错,Android开发:获取安卓App版本号的方法步骤

    在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版本号就是必须要有的功能.Android的App版本号相关内容比iOS的App版本号内容要多,而 ...

  7. Android开发笔记(八十二)SDK版本兼容

    统一主题与风格 Android控件很多属性都有默认值,比如文字默认黑色.编辑框默认透明背景等等,但因为android是开源的,各厂商都会自行修修补补,所以很多时候默认值并不靠谱.举例如下: 1.在某些 ...

  8. Android开发笔记(四十二)Broadcast的生命周期

    Broadcast是什么 广播的特性 广播(Broadcast)用于Android组件之间的灵活通信,它与Activity和Service的区别在于: 1.Activity和Service都只能一对一 ...

  9. Android开发笔记(三十二)文件基础操作

    File类 File类是java中的文件操作工具类,它的常用方法如下: File构造函数 : 根据文件路径构造File对象 delete : 删除文件 exists : 判断文件是否存在 getNam ...

最新文章

  1. 网络营销专员浅析网络营销优化对企业来说意味着什么?
  2. 大话数据结构:拓扑排序
  3. python单元测试的应用_单元测试pythongui应用程序的推荐方法是什么?
  4. mysql5.7 存储二进制_mysql5.7二进制部署
  5. ubuntu14操作系统chrome标签和书签乱码解决
  6. (开源)微信小程序实时控制stc89c51,通过esp8266
  7. coverity分析端软件环境搭建
  8. 【渝粤教育】电大中专电商运营实操 (4)作业 题库
  9. Java实用工具类-将汉字转为拼音
  10. Jetson Xavier NX——重新刷系统
  11. 四十四、​Fluent 收敛标准-质量和能量守恒
  12. Python开发(基础):列表List
  13. 如何提取pcap文件中的TCP流
  14. sql%rowcount
  15. R语言:ggplot2画带误差棒的折线图的过程及细节。
  16. Chapter8.4:非线性控制系统分析考研参考题
  17. 长城内外皆vivo,什么全面屏手机这么大排场?
  18. linux 动态库系统目录,Linux操作系统:指定动态库(.so)搜索路径(4)
  19. 将前台数据成批插入后台数据库
  20. 国内人工智能在教育教学的应用汇总

热门文章

  1. php实现addon安装卸载,插件Addon文件
  2. 如何让Join跑的更快?(文末送书)
  3. 基于C语言的信息管理系统和小游戏
  4. 【MySQL】MySQL中如何对数据进行排序
  5. 【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型
  6. 考研英语词汇(部分)快速记忆
  7. 夏天来了,西瓜配橙汁,来点小清新风格
  8. uClinux on Blackfin BF533 STAMP - A DSP Linux Port
  9. 【微信小程序】图片选择、转码、压缩、预览、上传,file与base64
  10. 反转!南大通报“教师性侵学生”事件,举报人因读研时未获国奖虚假举报