DailyTick 開發實錄 —— UI 設計

来源:http://www.cnblogs.com/holmescn/archive/2017/01/21/dailytick-ui.html
-Advertisement-
Play Games

上次的文章中描述了 DailyTick 的設計理念。經過兩周左右的設計和開發,現在 DailyTick 的主要 UI 已經完成了原型的設計和初步的實現。既然是原型,當然看起來就有點粗糙。 主 UI 主 UI 是使用一個 實現的。一個用來記錄,一個用來統計。當然,最終的完成版應該至少有 3 個 Tab ...


上次的文章中描述了 DailyTick 的設計理念。經過兩周左右的設計和開發,現在 DailyTick 的主要 UI 已經完成了原型的設計和初步的實現。既然是原型,當然看起來就有點粗糙。

主 UI

主 UI

主 UI 是使用一個 TabbedView 實現的。一個用來記錄,一個用來統計。當然,最終的完成版應該至少有 3 個 Tab,因為還需要有一個“設置”的 Tab。現在因為我還沒想到有什麼需要設置的,暫時沒有寫。在“記錄”這個 tab 里,有兩個組件:一個 ListView 和一個 NControl 寫成的圓形按鈕。使用的時候,只需要點一下下麵那個圓形按鈕,就可以形成一條記錄。當然,為了防止誤點,我這裡設置了一個限制,就是兩次點擊之間需要大於 1 分鐘。這帶來一個麻煩就是:你不能記錄小於 1 分鐘的事件。比如你想看看自己每天做時間記錄的過程消耗了多長時間,這個暫時辦不到。

上面這個列表,其實我還是有點擔心的:如果這個軟體可以被使用 10 年(應該不太可能,因為那個時候,應該會有比手機更好用的設備),按照我現在記錄的情況來看,一天大概有 30 條左右的記錄,一年是 365 * 30 = 10950 條,10 年就是 10 萬條,如果每天記錄得細點,可能就有幾十萬條,那會不會崩呢?雖然可以使用 Cell 的重用機制,不過也還是有點擔心。當然,比起 ListView 的性能問題,我更擔心的是記憶體夠不夠用。因為左邊那個時間顯示,並不是一個 Label。因為我的 UI 設計水平太差,所以我使用了 ListView 內置的 ImageCell,左邊那個是一個圖片。這個圖片是在記憶體里繪製出來,再使用 ImageSource.FromStream 載入的。所以不知道會不會消耗太多的記憶體。這裡可能是一個可以優化的點。

對事件/活動的修改

ListView 操作

在記錄完一個活動/事件之後,需要記錄做了什麼事情,也就是一個事件/活動的主題,還需要給一個事件添加標簽,以便之後做統計。本來我想的是,使用 ListViewContext Menu 來實現的,但這東西有個問題,就是和 TabbedView 的左右滑動有衝突,所以怎麼也不能顯示 Context Menu。我只好放棄這個方案,使用了 DisplayActionSheet。結果,在 Android 上,就成了這個樣子。不是很美觀。當然,做為原型,也就先這樣好了。

雖然這裡寫了5個操作,但我現在只實現了 1.5 個。這個 1 就是:

編輯主題

好吧,我知道這個也有點醜(這也叫有點……)。功能很簡單,就是一個文本的編輯,然後再更新回原來的列表裡。另外的 0.5 個,是編輯 tag 的 page,這個只是完成了一個樣子,但我感覺並不是很好用,可能在後面還會再改。

編輯 Tags

按照我現在的設想,DailyTick 不會有其它時間記錄軟體那種編輯一個事件的開始時間、結束時間的功能,我提供的是把一個時間段進行拆分,或者把兩個時間段合併。這樣保證了一天的時間線是完整的,不存在“無記錄時間”這個東西。因為按照我對這個軟體的設計哲學,人是無法控制時間的,不管你怎麼使用自己的時間,時間本身都會不受控制的流走。所以,我們能做的,只是記錄自己在某一段時間里做了什麼。這裡可能有一個問題,需要在未來解決一下,就是在什麼地方體現我一天的日程安排,也就是 TODO 要記錄在哪兒的問題。

這裡,時間段拆分是有一個 UI 的,我寫了一個草稿,但沒有放上來。對於合併操作,可能只有確認的提示,不會有單獨的 UI。

統計 UI

統計頁里,只有一個 WebView,當然是一個定製的 WebView,因為我需要在 C# 和 JS 之間傳數據。這個 HybridWebView 的基礎實現已經實現出來了,不過要怎麼傳遞數據,還沒有想法。按照現在的初步設想,應該會使用 highchart.js 和 jQuery 來完成統計頁的實現(並沒有什麼複雜交互,不想上 MVVM 的東西了)。主要就是報表和餅圖了。雖然我覺得餅圖其實意義有限,直接一個 table 可以搞定很多工作,但如果這個工具被擴散到非理科出身的人那裡(只是幻想一下),那麼統計圖就變成必不可少的東西了。

當然,這一切都還只是原型,如果你有什麼對 UI 或者 UE 上的看法,歡迎在下麵留言,一起討論。也歡迎 star & fork 我的項目:https://github.com/holmescn/DailyTick



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • centos 中沒有 ifcfg-eth0 配置文件的解決辦法 1.也就是說是centos6改用NetworkManager方式管理網路了,可以運行如下命令進行確認: chkconfig --list | grep -i netw 2.關閉NetworkManager服務 service Netwo ...
  • 先做一個簡單的記錄,後續有時間再慢慢完善補充細節。 先上一個整體圖片: 其中,最重要的文件就是:program_template.mk。 下麵是program_template.mk最重要的內容: 最重要的內容已列出,後續有時間再慢慢完善一些細節,有對Makefile有興趣的朋友可以探討交流。 ...
  • NFS介紹 什麼是NFS? NFS是Network File System的縮寫,即網路文件系統。它的主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共用文件或目錄。NFS客戶端(一般為應用伺服器,例如web)可以通過掛載(mount)的方式將NFS服務端共用的數據目錄掛載到NFS客戶端本... ...
  • 原理:msfvenom是msfpayload和msfencode的結合體,利用msfvenom生成shellcode,venom生成工具使用了 一些 Veil-Evasion.py, unicorn.py, powersploit.py 等工具上的技術。但是venom 是基於 bash 編寫的,而不 ...
  • 0x00 背景: + 目前ubuntu用的是一個80g的硬碟( 一開始沒買硬碟,直接拆了一個老老老老的機子來用),系統16.04, 只有一個/分區 ( /dev/sdb1 ) 。 + 新的硬碟是一塊256G的SSD,新裝了一個系統,除了2G的swap,其他都歸 / 目錄了( /dev/sda1 )。 ...
  • 問題: 在CentOS 7上,我想要將我其中一個網路介面從DHCP改為靜態IP地址配置,如何才能永久為CentOS或RHEL 7上的網路介面分配靜態IP地址? 下麵將介紹在CentOS 7上為網路介面配置靜態IP地址的兩種方式,在例子中我們將對名為enp0s3的網路介面進行配置。 不使用網路管理配置... ...
  • 這幾天電腦頻繁崩潰,自己嘗試著裝了幾次系統,遇到一些問題。有的解決了,有的沒解決。將其一一記錄在這裡,作為經驗參考。 自己以前最常用的方式是直接通過ultraiso將IOS文件解壓到到U盤,會將U盤做成啟動U盤,此步驟會將U盤格式化,千萬記得先將U盤裡的數據進行備份。然後進BIOS設置里打開U盤啟動 ...
  • 前面 的篇章, 解析了Action方法的查找, 以及 Authorize, Action, Result, Error 過濾器的載入時機. 也花了兩篇去看授權和錯誤過濾器的使用. 但是對於 Action/Result 的執行以及Action/Result裡面的兩個過濾器的執行時機, 並沒有清晰看到. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...