基于AndroidStudio的饼图账单的设计及开发论文_第1页
基于AndroidStudio的饼图账单的设计及开发论文_第2页
基于AndroidStudio的饼图账单的设计及开发论文_第3页
基于AndroidStudio的饼图账单的设计及开发论文_第4页
基于AndroidStudio的饼图账单的设计及开发论文_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..AnhuiVocactional&TechnicalCollegeofIndustry&Trade毕业论文基于AndroidStudio的饼图账单的设计与开发DesignandDevelopmentofPieChartBillingBasedonAndroidStudio2018年4月12日..目录TOC\o"1-3"\t"标题,1"\h\u14227目录I19606摘要II15930Abstract II17913引言23239第一章Android根本介绍2779第二章国外手机系统现状2215102.1iOS:生态封闭和推送机制2190282.2Android:依然碎片化,但安卓7.0速度提升2231962.3Win10m:机型太少,能够更新不多2858第三章Android相关组件介绍及分析289083.1Fragement 2174433.2Fragement生命周期2151093.3ViewPager 2306843.4JSON 216203.5MPAndroidChart 220387第四章Android活动的生命周期226854.1活动的生命状态2304134.2活动的运作流程230648第五章饼图账单的设计与实现236065.1研究目标2326535.2实现步骤2198745.2.1使用ViewPager+Fragment实现案例布局2315925.2.2Json数据解析、封装、传递给Fragment 2275775.2.3绘制账单饼状图并显示账单数据2104485.2.4实现切换按钮点击事件〔显示其他月账单界面〕257885.2.5程序完成212400第六章主要结论2501参考文献25716致219614附录2摘要随着信息化社会的开展,Android智能产品已日益成为越来越多的人们选择的移动终端产品。伴随着Android智能手机与平板电脑已经在我们生活大量的使用,越来越多的基于Android开发平台的应用也随之而出,为丰富人们使用Android智能产品的用途,使其可以帮人们记录一些事情,并提醒用户做出相应的操作。本文设计开发的本Android饼图账单软件也是应用开发的一个idea,该软件能帮助人们查看显示每月账单,从而合理规划消费和投资增强对个人财务的敏感度,提高理财水平。Android饼图账单主要特点在于利用饼图直观的展示各项消费所占当月总支出的百分比,并且在点击具体消费容实现饼图下滑放大使容更加详细。Android饼图账单的开发过程包括1.ViewPager+Fragment打造左右滑动UI架构,2.Json数据解析,封装,与数据传递,3.MPAndroidChart打造饼状图的功能,4.实现与问题解决。本次开发工具选择了。关键词:账单;AndroidStudio;ViewPage;Fragment;Json;MPAndroidChartAbstractWiththedevelopmentofinformationsociety,Androidintelligentproductshaveincreasinglybeemoreandmorepeoplechoosemobileterminalproducts.WithAndroidintelligentmobilephoneandtabletputerisalreadyinuseinourlifealot,moreandmoreapplicationsbasedonAndroidplatformarealsoappeared,forrichpeopleuseAndroiduseofsmartproducts,whichcanhelppeopletorecordsomeofthethingsthatmakethecorrespondingoperationandremindusers.AideathispaperdesignedanddevelopedtheAndroidpiechartisbillingsoftwareapplicationdevelopment,thesoftwarecanhelppeopleseethedisplaymonthlybills,thusthereasonableplanningofconsumptionandinvestmenttoenhancesensitivitytopersonalfinance,improvefinancialmanagementlevel.Androidpiechartismainlycharacterizedbytheuseofthepiechartshowstheproportionofconsumptionofthetotalmonthlyexpenditure,andclickonthespecificcontentoftheconsumertoachievethedeclineinthecontentofthecakeambassadorcontent.ThedevelopmentprocessofAndroidpiebillsincluding1.ViewPager+FragmentslidingaroundtocreatetheUIarchitecture,2.Jsondataanalysis,package,anddatatransfer,3.MPAndroidCharttocreateapiechart,4implementationandproblemsolving.ThedevelopmenttoolselectedAndroidStudio2.3.1.Keywords:AndroidStudio;ViewPage;Fragment;Json;MPAndroidChart..引言目前随着移动设备越来越普及以及移动设备的硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐炽热起来。目前国最常见的移动开发平台有Symbian,iPhone,WindowsPhone以及当下正在逐步兴起的Android。目前为止国已经有很多Android系统的用户。截止2010年第二季度Android系统的国市场占有率已经过10%,在西欧以及北美智能手机市场占有率也在20%左右。可见Android系统正在崛起之中。但是对于Android系统的应用和开发在国仍然属于起步和探索阶段。急需要大量的相关技术和人员的投入。Android根本介绍Android一词的本义指"机器人〞,同时是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号,于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。其中的文字使用了Ascender公司专门制作的称之为"Droid〞的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS376C和RGB中十六进制的#A4C639来绘制Android操作系统的品牌象征。有时候,它们还会使用纯文字的Logo。REF_Ref10349\w\h[1]图STYLEREF1\s1-SEQ图\*ARABIC\s11Logo国外手机系统现状在过去很长的一段时间,苹果iOS、谷歌安卓和微软Windows被称作三大移动操作系统,尽管随着视窗系统在手机领域的份额不断下滑,"万年老三〞的宝座已经易位给了YunOS,但不少人习惯上还是认为他们是智能手机系统的代表。而说到这三大系统的更新方面,就是另一个局面了,可以说有人欢喜有人愁。今天就带大家看看这三大手机系统现在的更新现状。iOS:生态封闭和推送机制众所周知,iOS是一个生态封闭的移动操作系统。苹果为了专注于营造自己的生态,在某些地方多多少少给用户带来了一些不便。但不得不成认,这样的做法在系统升级上反而是有好处的,更便于集中管制。图STYLEREF1\s2-SEQ图\*ARABIC\s11iosiOS只会预装在苹果设备上,而苹果每年推出的iPhone一般不超过3款,即使是iPhone全系的数量加起来,可能也就和一家国产安卓厂商一年发布的新机数量差不多,再加上又是自家的系统,在系统更新和维护的压力上自然要小很多。图STYLEREF1\s2-SEQ图\*ARABIC\s12IOSLanchues以最新的iOS10为例,据国外分析机构Fiksu〔数据截至去年10月〕统计,iOS10在正式版上线一个月后,系统覆盖率已经高达66.7%,大幅逆袭以往版本,当然现在已经不止这点了。而苹果日前也向用户推送了系统,相信在看文章的iPhone用户几乎都升级了吧?当然,iOS10之所以覆盖率能迅速上升,和苹果的推送机制分不开。新系统发布能让用户第一时间知道并立刻升级的,也就只有OTA了〔未越狱〕。苹果采用的是一种间歇式提醒的方式,让用户想不升级都不行,因为新系统的提醒更新页面就一直在你眼前晃悠,根本无法无视。Android:依然碎片化,但安卓7.0速度提升相对于苹果的封闭专一,安卓因为开放而在系统升级上元气大伤,要想升级系统就对用户选手机的眼光要求特别高,毕竟不是每台安卓机都有资格升级。谷歌只能保证自己亲儿子最快升级,第三方厂商都是"同床异梦〞:有像LG这样7.0发布后78天就推送正式更新的〔版G5〕,也有像oppo、vivo这样一个系统版本用到换机的。图STYLEREF1\s2-SEQ图\*ARABIC\s13牛扎糖系统根据谷歌2017年4月的安卓系统份额统计,最新的牛轧糖系统份额依然不容乐观,合占不到5%,处于安卓系统主力的依然是棒棒糖和棉花糖。图STYLEREF1\s2-SEQ图\*ARABIC\s144月份额统计这两个系统份额的大幅度崛起,和去年国产手机的爆发不无关系,但爆发的同时也在市面上涌现了一批出厂预装低版本系统的机型。但同时也要注意到,牛轧糖系统的升级速度相比以往版本发布半年后要更加乐观。这方面国产厂商也要记一功,诸如华为、一加等局部勤劳的国产厂商,尽管没有抢到全球首发,但是和首批升级的国际厂商在更新速度差距方面越来越小,甚至还超过了一些原本更新速度就不快的国际厂商,例如三星。图STYLEREF1\s2-SEQ图\*ARABIC\s15EmotionUI不过整体上看,尽管升级速度有所提升,但安卓在系统更新上还是有继续进步的空间。目前大局部厂商都关注于新系统发布当年所推出的手机更新,而前一年的机型升级率都非常低,这点是不能无视的。Win10m:机型太少,能够更新不多如果说在WM和WP时期,微软在手机行业还算有点话语权,那么到了Win10m时期,即使是系统升级也显得分外凄凉。近日,微软公布了Win10m的创作者更新〔CreatorsUpdates〕,但出人意料的是,能够升级这一系统的全球仅有13款机型,并且有不少都是第三方厂商的产品。总之,在市场稳定快速增长的同时,中卓手机市场将呈现五大开展趋势:多媒体和移动应用需求的上升,将成为市场开展的主要动力;PDA功能类和开放程度高的操作系统产品,将是手机产品的开展势;产品持续大幅度降价和价格竞争趋于剧烈,将是产品价格开展的趋势;渠道形式多样化和手机渠道仍占主流,将是产品渠道开展的主要趋势;差异化售后效劳和个性化增值效劳,将成为产品效劳开展的趋势。总体来说,Android智能手机系统以它丰富多样并超前的功能给我们的生活带来了巨大改变但从利弊方面来说,它在给我们带来方便的同时,也带来一些负面影响。因此,我们应该理性面对,理智使用,不能沉迷于此,更不能凭借它的功能为所欲为。我们应该正确面对Android,让它随着时代与科技的开展,给人类带来更多的福利。如此一来,安卓手机的开展前景才是一片光明的。Android相关组件介绍及分析FragementAndroid常用组件之一,可以有效解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板,小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments。fragments的设计不需要你来亲自管理viewhierarchy的复杂变化,通过将Activity的布局分散到frament中,可以在运行时修改activity的外观,并且由activity管理的backstack中保存些变化。Fragement生命周期onAttach()//当一个Fragment对象关联到一个Activity时调用。onCreate()//初始创立Fragment对象时调用。系统创立Fragments时调用,可做执行初始化工作或者当程序被暂停或停顿时用来恢复状态,跟Activity中的onCreate相当。onCreateView()//创立与Fragment对象关联的View视图时调用。用于首次绘制用户界面的回调方法,必须返回要创立的Fragments视图UI。假设你不希望提供Fragments用户界面那么可以返回NULL。onActivityCreated()//当Activity对象完成自己的onCreate方法时调用。onStart()//Fragment对象在ui可见时调用。onResume()//Fragment对象的ui可以与用户交互时调用。onPause()//Fragment对象可见,但不可交互。有Activity对象转为onPause状态时调用。当用户离开这个Fragments的时候调用,这时你要提交任何应该持久的变化,因为用户可能不会回来。更多的事件可以参考上图的生命周期关系图。onStop()//有空间完全遮挡;或者宿主Activity对象转为onStop状态时调用。onDestroyView()//Fragment对象清理view资源时调用,也就是移除fragment中的视图。onDestroy()//Fragment对象完成对象清理View资源时调用。onDetach()//Fragment对象没有与Activity对象关联时调用。当一个fragment被创立的时候执行1-4;当这个fragment创立完毕,到对用户可见的时候,执行5-6;当这个fragment从可见到不可见时,执行7-8;当这个fragment被销毁了〔或者持有它的activity被销毁了〕,执行9-11;另外在3-5,可以使用Bundle对象保存一个fragment的对象。ViewPager ViewPager继承自ViewGroup,也就是ViewPager是一个容器类,可以包含其他的View类ViewPager是一个允许使用者左右滑动数据页面的布局管理器。你可以通过一个适配器〔PagerAdapter〕来管理要显示的页面。不过要注意的是,这个类目前还处于初期的设计和开发。随着今后兼容库的更新,API文档也会进展更改,同时应用程序在编译时也需要对代码进展一定的修改。ViewPager更多的时候会与Fragment一起使用,这是一种很好的方法来管理各个页面的生命周期。Android提供了一些专门的适配器来让ViewPager与Fragment一起工作,也就是FragmentPagerAdapter与FragmentStatePagerAdapter。他们根本上可以满足大局部常见的永续需求,并且他们都有简单的代码样例来展示如何用他们来建立一个完整的用户页面。所以Viewpage具有以下特性:ViewPager主要用来左右滑动。〔类似图片轮播〕ViewPager要用适配器来连接"视图〞和"数据〞。〔大家可以联想下listview的使用方法,理是类似的〕官方推荐ViewPager与Fragment一起使用,并且有专门的适配器。JSON JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式。它基于ECMAScript规的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次构造使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。MPAndroidChart Android开源图表库MPAndroidChart的简单用法。MPAndroidChart是一款基于Android的开源图表库,它可以实现在Android设备上绘制各种统计图表。Android活动的生命周期 Android平台是个手机作业系统。撇掉其他功能不谈,手机的特性,就是应该能随时在未完成目前动作的时候,暂停正在使用的功能,切换到接、接收短信模式,而且在接完回到应用程序时,还希望能看到一样的容。现在用户使用智能手机,大多已习惯使用多工的作业系统(如windowsMobile),可以在用手机听音乐的同时,执行其他多个程序。同时执行多个程序有它的明显好处,但也有它的缺点。每多执行一个应用程序,就会多消耗一些系统存,而手机里的存是相当有限的。当同时执行的程序过多,或是关闭的程序没有正确释放掉存,系统运行时就会觉得越来越慢,甚至不稳定。为了解决这个问题,Android引入了一个新的机制—生命周期。Android应用程序的生命周期是由Android框架进展管理,而不是由应用程序直接控制。通常,每一个应用程序(入口一般会是一个活动的onCreate方法),都会占据一个进程。当系统存即将缺乏的时候,会依照优先级自动进展进程的回收。不管是使用者或开发者,都无法确定应用程序何时会被回收。关于进程的生命周期将在下一节中介绍,本节主要介绍活动的生命周期。一个活动类别除了OnCreate方法之外,还预先定义了onPause(暂停)、OnResume(继续)等的根本方法,当从一个活动切换到另一个活动的时候,原来的活动将经过一连串的状态改变。开发者可以在程序中添加一些各状态相对应的流程,每次活动状态改变时,就会执行相对应的流程。要让用户有好的使用体验,活动需要在各个周期中负责保管状态、恢复状态、传送资料等工作。活动的生命状态Android的虚拟机是使用堆栈管理。主要有四种状态:活动状态活动状态是指用户启动应用程序或活动后,活动运行中的状态。在Android平台上,同一个时刻只会有一个活动处于活动或运行状态。其他的活动都处于未启动、停顿或是暂停的状态。暂停状态暂停状态是指当活动暂时暗下来,退到背景画面的状态。当警告对话框或来了时,都会让原来运行的活动退到背景画面。新出现的警告对话框等界面元件盖住了原来的活动画面。活动处在暂停状态时,用户无法与原活动互动。停顿状态停顿状态是指有其他活动正在执行,而这个活动己经离开屏幕,不再动作的状态。通过按返回键,可以调出所有处于停顿状态的应用程序列表。处于停顿状态的活动,还可以通过通知来唤醒。已回收或未启动状态已回收或未启动状态是指活动尚未被启动、已经被手动终止或己经被系统回收的状态。要手动终止活动,可以在程序中调用finish方法。如果是被系统回收,可能是因为存缺乏了,所以系统根据存缺乏时的回收规那么,将处于停顿状态的活动所占用的存回收。图STYLEREF1\s4-SEQ图\*ARABIC\s11Activity活动流程图图4-1所示的七个状态又可以归纳成三组:资源分配(创立/销毁)完整的活动生命周期由创立状态开场,由销毁状态完毕。创立时分配资源,销毁时释放资源。可见与不可见(启动/重新启动/停顿)当活动运行到启动状态时,就可以在屏幕上看到这个活动。相反地,当活动运行到停顿状态时,这个活动就会从屏幕上消失。当用户按下返回键回到上一个活动时,会先到重新启动状态,再到一般的启动状态。用户取得屏幕的控制权(继续/暂停)当有个警告对话框、短信、等信息进入时,原来的活动会进入暂停状态,暂时放弃屏幕的控制权,被中断到背景去,将前景交给优先级高的事件。当这些优先级高的事件处理完后,活动就改良入继续状态,此时又取得屏幕的控制权。活动的运作流程由实际运行来看,我们可以归纳出所有Android应用程序都遵循的运作流程:一般启动启动一个活动的根本流程为onCreate一>onstart一>onResume。该流程首先分配资源给这个活动(创立状态),然后将活动的容显示到屏幕上(启动状态);在一切就绪后,取得屏幕的控制权(恢复状态),用户可以开场使用这个程序。调用另一个活动调用另一个活动的根本流程为onpause(l)一>onCreate(2)一>onstart(2)一>0nResume(2)一>onStop(l)。该流程首先冻结原来的活动,再交出屏幕控制权;直到活动2完成一般启动流程后,活动1才会被停顿。回到原来活动回到原来活动的根本流程为onPause(2)一>onRestart(1)一>onstart(l)一>onResume(1)一>onstop(2)一>onDestroy(2)。另外按返回键也可以回到原来的活动。退出完毕退出完毕的根本流程为onPause一>onStop一>onDestroy。如果程序中有直接调用finish方法来关闭活动的话,系统会跳过先冻结的阶段,直接暂停,停顿,然后销毁。回收后再启动回收后再启动的根本流程为oncreate一>onstart一>onresume。如果被回收掉的活动一旦又重新被调用时,会像一般启动一样再次调用活动的onCreate方法。当在模拟器上已经执行过多个应用程序,只要按下返回键,就会开启最近一次开启过的活动。所以如果要让再次被创立的活动跟原来开启过的一样,那么在活动之间切换时,就要保存资料:即在每次活动运行到暂停或停顿状态时先保存资料,然后在创立时将资料读出来。饼图账单的设计与实现研究目标了解Android应用程序的设计和开发过程;使用多种组件进展Android平台校园资讯软件的开发。本软件是基于AndroidStudio的开发环境,在Android平台上的饼图账单软件。实现步骤使用ViewPager+Fragment实现案例布局翻开开发工具AndroidStudio,新建工程名为PieChart;并选择API为25,选择布局文件为空;如下列图所示;图STYLEREF1\s5-SEQ图\*ARABIC\s11新建工程图STYLEREF1\s5-SEQ图\*ARABIC\s12选择API图STYLEREF1\s5-SEQ图\*ARABIC\s13选择Acitvity布局修改相应的activity布局代码如下<"xmlversion="1.0"encoding="utf-8"">

<RelativeLayout

xmlns:android="schemas.android./apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<android.support.v4.view.ViewPager

android:id="+id/vp_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

/>

</RelativeLayout>创立PieFragment、MonthBean类并在MainActivity文件中编写相应代码利用ViewPager实现页面的左右滑动。图STYLEREF1\s5-SEQ图\*ARABIC\s14创立类文件Json数据解析、封装、传递给Fragment在Json数据解析时需要将Json数据进展转义在网络下下载gson用来解析Json数据并传递给Fragment。publicclassMainActivityextendsApppatActivity{

privateViewPagervpMain;

privateStringmJson="[{\"date\":\"2016年5月\",\"obj\":[{\"title\":\"外卖\",\"value\":34},"+

"{\"title\":\"娱乐\",\"value\":21},{\"title\":\"其他\",\"value\":45}]},"+

"{\"date\":\"2016年6月\",\"obj\":[{\"title\":\"外卖\",\"value\":32},"+

"{\"title\":\"娱乐\",\"value\":22},{\"title\":\"其他\",\"value\":42}]},"+

"{\"date\":\"2016年7月\",\"obj\":[{\"title\":\"外卖\",\"value\":34},"+

"{\"title\":\"娱乐\",\"value\":123},{\"title\":\"其他\",\"value\":24}]},"+

"{\"date\":\"2016年8月\",\"obj\":[{\"title\":\"外卖\",\"value\":145},"+

"{\"title\":\"娱乐\",\"value\":123},{\"title\":\"其他\",\"value\":124}]}]";

privateArrayList<MonthBean>mData;

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

vpMain=((ViewPager)findViewById(R.id.vp_main));

initData();

initView();}

privatevoidinitData(){

Gsongson=newGson();

mData=gson.fromJson(mJson,newTypeToken<ArrayList<MonthBean>>(){}.getType());

}在编写代码后在模拟器上运行如下列图所示:图STYLEREF1\s5-SEQ图\*ARABIC\s15模拟器运行绘制账单饼状图并显示账单数据在成功完成数据解析后,接下来应该用饼状图将数据显示出来利用的是当下最获得饼状图框架:MPAndroidChart。可以利用该框架实现各种需要的饼图效果可以在s://github./PhilJay/MPAndroidChart下载使用。实现切换按钮点击事件〔显示其他月账单界面〕在PieFrgment中实现以下代码来实现点击饼图时的旋转publicvoidonValueSelected(Entrye,intdataSetIndex,Highlighth){floatproportion=360f/mData.getSum();floatangle=90-mData.obj.get(e.getXIndex()).value*proportion/2-mData.getSum(e.getXIndex())*proportion;mChart.setRotationAngle(angle);updateDesText(e.getXIndex());}下面是layout布局文件的显示图:图STYLEREF1\s5-SEQ图\*ARABIC\s16Layout布局程序完成最后在对各项布局文件以及类文件的编写后,得到主应用程序的运行画面如下图:图STYLEREF1\s5-SEQ图\*ARABIC\s17运行结果主要结论经过一个多月的努力,Android平台饼图账单应用终于完成了。由于对JAVA浓厚的兴趣引发了我对Android的好奇心,从一开场什么都不懂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论