Android工作两年之后的第一个App--天真无谐

一、前言

好长时间没写blog了,主要还是工作上的事有点多,周末又得在家开发自己的app,所以时间真的不够用了,当然今天这篇文章主要就要说一下,工作两年的我如何从产品角度去做一个app,以及app的发布流程等。

二、支持我

在开始讲解这个项目之前,希望能够先去各大市场下载一个apk看看,首先是为了支持我一下,其次呢就是我在后面会介绍一些功能和技术实现,所以先使用一下,这样会找到对应的功能点,谢谢

二维码扫描下载:

1、豌豆荚市场:搜索:天真无谐

PC上的链接:http://www.wandoujia.com/apps/com.wjdiankong.happymahua

2、应用宝市场,搜索:天真无谐

PC端链接:http://sj.qq.com/myapp/detail.htm?apkName=com.wjdiankong.happymahua

3、百度手机助手,搜索:天真无谐

PC端的链接:http://shouji.baidu.com/soft/item?docid=7864245&from=&f=search_app_%E5%A4%A9%E7%9C%9F%E6%97%A0%E8%B0%90%40list_1_title%401%40header_all_input

4、360手机助手,搜索:天真无谐

PC端链接:http://zhushou.360.cn/detail/index/soft_id/3052244?recrefer=SE_D_%E5%A4%A9%E7%9C%9F%E6%97%A0%E8%B0%90

5、Google Play Store市场,搜索:天真无谐

PC端链接:https://play.google.com/store/apps/details?id=com.wjdiankong.happymahua_gp

三、项目背景

首 先介绍一下自己的项目吧,这个项目叫做:天真无谐,主要是展现一些笑话类的资讯(包括段子,图片,Gif),类似于糗事百科那样的app,这个项目的启动 时间是2015年02.14,也就是情人节那天,所以到现在正式上线差不多6个月了,都是周末在家弄的,所以算起来大概用了1个多月的时间。当时也没想说 做了这个app来赚钱啥的,就是当时感觉自己快工作两年了,应该有一个自己的app了,而且也是需要熟悉如何开发一个app,以及将其发布的流程。

四、项目介绍

再 来大体介绍一下技术实现吧:这个项目的Server端采用的是SSB框架,主要还是SpringMVC技术,感觉比Struts好用多了,方便快捷,本身 不是做Server端的,主要是大学毕业设计用到了Server端的技术,所以这里就在复习一下啦,数据库用的是MySql。

至于Client端,详细分析一下,因为是自己的项目,当时没有想到找小伙伴们合作弄,所以自己就身兼数职:产品狗,设计狮,程序猿,测试猫,运营猪等角色,下面就来详细介绍一下每个角色我是怎么扮演的,不过先来看一下app的功能和界面吧:

1、功能介绍

1)、应用的开启页面

这个页面内容就是:醒人每句

就是用户登录之后可以设计自己的最喜欢的座右铭:后台随机下发一个用户的语句用于每次用户的展示。

想法:能够提高用户的成就感,让用户感觉自己说的话可以被其他人看到。很开心

2)、首页

首页已经采用大众化的轮播切换的新闻样式,这里有六个Tab:

最新推荐:最新的搞笑图片+段子

段子手:在用户不是Wifi的情况下这个Tab会优先展示,他只有文本笑话,不会太消耗流量

搞笑:就是搞笑图片的Tab

清纯妹子:就是妹子图片(你们懂得)

性感美女:就是性感美女图片(你么也是懂得)

动态图:就是Gif搞笑的动态图(这个比较消耗流量,所以在Wifi的情况下会调节他的顺序)

所以后台会对这些Tab的展示顺序,展示开关做控制的

3)、详情页

详情页面就是可以进行评论内容,点赞啥的动作了,而且点击图片可以进行大图浏览

这个页面没什么好说的啦

4)、用户中心页面

这个页面就是用户中心,用户在这里可以编辑自己的信息,同时可以查看自己的历史行为动作

也是大众化的页面

5)、设置页面

这个页面也是大众化的页面,可以设置一些属性等功能

当然还有其他页面,这里就不在详细说明了

             

        

2、各个角色说明

好了。大体上看完了功能了,下面就来给大家分享一下我是如何扮演这些角色的:

1)  第一个角色:产品狗

关 于产品狗这个角色,其实很模糊的,大家普遍认为就是如何将一个app设计的让用户喜欢用就OK了,主要就是有想法,能了解用户的喜好和行为,所以关于这个 角色,我们都可以去胜任的,当然只是胜任的成功与失败的问题了。我在设计这个app的时候,主要是借鉴(说得好听点,不好听就是抄袭)了其他很多类似 app的功能,但是我们不能只顾一味的借鉴呢,也要做的比他们好,比他们有亮点才行了,不然就是抄袭了。哈哈~~关于亮点这里有三个地方:

1.1)、保存Gif的帧图片

播放Gif图片的时候可以暂停/继续,然后可以保存每帧的图片,因为我在看其他Gif类的app的时候,我有时候真的想去截取当前动画的图片,所以我就加上了这个功能。

1.2)、增加语音播报功能

就是在对段子笑话的时候,有时候我们很不想去阅读段子,文字太多,看着也烦。所以这里就提供了语音自动播报文字的功能,而且增加了各地方言语音,更是搞笑(特别是河南和粤语,我自己真的每次都在听,很好听的)

1.3)、本地图片/Gif保存文件的查看

这个功能其实我当时在看糗百的时候想到的,图片下载功能都支持是没有问题的,但是下载之后我们如果再想去找的话,可能需要去指定的文件夹去看,那样很是费劲的,如果在app内部就可以查看我已经下载好的图片很是方便的。

所以上述的三点也算是我的app的三个亮点,也希望大家能够多多支持,我也是从产品角度去考虑问题的。关于其他的功能的话,这里就不在多说了,都是大同小异,没什么好说的了。

2) 第二个角色: 设计狮

关于设计师这个角色,其实不想产品狗那么好扮演了,因为他不是所有人都能搞定的,首先你得有艺术感,其实你得会一些设计工具。那么我是怎么搞的呢?

其实也不难,为啥呢?因为我很有艺术感的(真的,好多人都这么说的),那些设计工具呢,大学的时候辅修的是美术系,所以PS就不难了(简单的功能还是可以的)

不过有些图片资源还是需要从网上查找的,这里提供一些app的图片资源地址,有些是免费的,有些是收费的:

http://findicons.com/

https://www.iconfinder.com/

http://www.flaticon.com/

http://www.iconarchive.com/

http://www.playpcesor.com/2014/11/Flatty-Shadow-Flat-icon-download-free.html

http://www.premiumpixels.com/page/1/?s=icon

http://www.bestpsdfreebies.com/category-freebie/icons/

https://github.com/google/material-design-icons/blob/master/README.md

希 望能够帮到你们呢,但是有些图片我们弄下来之后不一定是我们想要的,比如一个icon的我们想改变他的颜色,那么这时候就需要PS工具来实现了,好吧,这 里我不可能说怎么改,因为篇幅太长了,所以大家学习PS是没有坏处的,至少可以把自己ps的能给人看的样子呢。当然最好还是能找一个设计师小伙伴,因为至 少他们专业点,我是因为当时这个项目比较封闭,不想惊动太多人啦。所以就自己亲自操刀了。哈哈~~

3) 第三个角色:测试猫

这 个角色其实和产品狗一样,任何人都可以胜任,只要会写一些测试的case就可以了,或者是不写,因为app是你开发的,很多功能点你知道哪里可能会出 bug..不过也有很多隐藏的bug不好复现,所以自己得多用呢,我是每次都在公交车或者地铁里在用,白天用,晚上改bug...生活如此惬意

4) 第四个角色:运营猪

这个角色怎么说呢?其实也是可以都胜任的,而且这个角色也是有点模糊的,他就是负责用户的行为数据的收集,然后分析用户的行为数据等,以及还负责发包的流程。关于数据的收集,这里就不多介绍了。国内的话一般是友盟统计,国外的话一般是GA统计

关于发包的流程我后面会详细说

5) 第五个角色:程序猿

终于说道这个角色了,满血复活啦,因为我就是干这个的,不得详细的介绍一下呀,而且我也是很无私的,介绍我在这个项目中用到的技术,哈哈~~虽然不是很高深的技术:

1、开源控件

在这个项目中我用到的开源控件很多,这里我就来详细介绍一下

1)首页:

1.1)首先是下拉刷新数据的,现在很多app都是采用顶部动画的样式,但是Google提供了自己的下拉刷新控件, 个人感觉很好用,也很酷炫的:

SwipeRefreshLayout

地址:https://github.com/hanks-zyh/SwipeRefreshLayout

1.2)首页轮播的Tab样式,这个网上也是很多例子

PagerSlidingTab

地址:https://github.com/astuetz/PagerSlidingTabStrip

1.3)首页的悬浮快捷菜单,类似于Google+

FloatingActionsMenu

地址: https://github.com/telly/FloatingAction

1.4)ListView的展示动画

ListViewAnimations

地址:https://github.com/nhaarman/ListViewAnimations

1.5)TextView中的文本自动对齐

JustifyTextView

地址:https://github.com/xsingHu/JustifyTextView

1.6)图片的圆形处理

CircularImageView

地址:https://github.com/lopspower/CircularImageView

1.7)数据加载样式

ProgressWheel

地址:https://github.com/nithinkmichael/Android-ProgressWheel-master

1.8)选择icon的翻转动画

FlipImageView

地址:https://github.com/castorflex/FlipImageView

2)详情页

2.1)播放Gif的控件

gifdrawable

地址:https://github.com/nemothekid/gifdrawable-android

3)设置页

3.1)菜单点击的水波纹效果,类似于360安全卫士的菜单

RippleEffect

地址:https://github.com/traex/RippleEffect

3.2)自定义的滑动开关,类似于苹果的开关效果

SlideSwitch

地址:https://github.com/Leaking/SlideSwitch

3.3)显示数值的进度条样式,在设置字体大小样式的时候出现

discreteSeekBar

地址:https://github.com/AnderWeb/discreteSeekBar

3.4)带有数值的进度条样式,在升级的的时候会出现

NumberProgressBar

地址:https://github.com/daimajia/NumberProgressBar

3.5)动画样式的对话框

SweetAlertDialog

地址:https://github.com/lzyzsd/SweetAlertDialog

3.6)清除缓存的对话框

SmoothProgressBar

地址:https://github.com/castorflex/SmoothProgressBar

4)本地图片浏览页面

4.1)瀑布流样式

StaggeredGridView

地址:https://github.com/maurycyw/StaggeredGridView

5)图片浏览页面

5.1)放大和缩小图片

PhotoView

地址:https://github.com/chrisbanes/PhotoView

6)用户中心页面

6.1)拉下头部放大效果样式

PullZoomView

地址:https://github.com/Frank-Zhu/PullZoomView

(控件就这么多了,如果你们发现了我还没有说到的控件,或者你们在app中没有找到的话,就给我留言,我看看能不能给你们源码)

2、技术功能

2.1)本地内容缓存,主要使用ObjectInputStream将信息写入到SD中做保存,在没有网络的时候,进行加载

2.2)在分享页面的二维码分享,有一个二维码产生功能,那个其实网上有生成二维码的demo,将一个字符串生成二维码,主要是在二维码中间加上我们自己的logo,但是以为有什么高神的技术,结果其实很简单的,就是直接用ps将logo和二维码图片合成就OK了,原因很简单,二维码的识别错误容忍率在50%左右,所以只要你的logo图片不要太大就好啦

3、用到的第三方SDK

3.1)分享SDK,这个网上有很多的demo的,没有难度啦

3.2)使用友盟SDK进行数据统计

技术就讲到这里了,如果大家发现有什么地方有困惑的话,可以联系我啦,我会解答一下。

五、遇到的问题

下面来说一下我在开发过程中遇到的问题

1、服务端的问题就是在使用SpringMVC的时候,返回JSON处理

2、客户端这边遇到的问题就是多张图片的上传功能

3、运维遇到的问题就是怎么在远端服务器部署项目

4、设计上的问题就是如何改变一个icon的背景色

5、发布包的问题就是准备资源的时候各大市场的需求不一样

发包流程总结

国内的话,我就发布了以下市场:

1、360手机助手

2、应用宝

3、百度手机助手

4、安卓市场/91市场

5、安智市场

发包的过程中需要准备的就是前提资源:

1、身份证明:一般是身份证照片,手持身份证照片

2、应用的详细描述文案

3、应用的logo图片(一般是512*512的)

4、应用的截图(一般不能超过5张)

5、各个渠道的apk包(因为要统计各个渠道的安装情况和日后各个渠道的用户数据,所以要打不同的渠道包)

国 际的话,一般是发布GooglePlayStore了,但是我们一般不发国际,因为你都上不了GP网站,除非翻墙啦,因为我是想尝试所有的发包流程,所以 就体验了一下,在GP上发布apk的话,是需要money的,是29$,还好,当然需要用VISA的信用卡支付的,所以你还得去申请一个信用卡。GP上统 计数据一般用GA的SDK,广告的话一般是Admob/Inmobi等。

六、总结

经 历了六个月的时间,终于做出来属于自己的一个app,心里还是很开心的,但是这个过程真的很辛苦,从Server端写接口,到Client端调通数据,还 有后面的搭建服务器,部署项目,最后的发包,真的说不出来的那种体验,或许大家真的该体验一下,特别是在这个过程中,有无数次的想放弃,但是最终都坚持下 来了,这种磨练真的是一种成长,说个简单的例子:

开通GP账户我用了半个月的时间,去办信用卡,然后申请账号,被拒绝,在申请,这个过程,很伤的

发包过程,每个市场发包流程不一样,审核制度也不一样,来回打回几次,在提交,这个过程,挫败感真的很让你伤心的

我有时候连续好几个礼拜都是不开心的度过,特别是那种挫败感让你想放弃。

但是我还是想说,只要有目标,一定要坚持下来,所以如果你想开发一个app的话,真的给你的建议就是,要做好百分百的准备,不然你真的招架不住的。

最后再说一句,如果你们在使用的过程中发现有bug或者是建议,希望能够给我提,或者是在使用的过程中遇到不解的地方也希望能够联系我,我将给与解答。

最后谢谢大家的支持,能够下一个app看看~~


支持我的话就扫一扫啦:

PS: App内部有我的联系方式,如果想联系我的话,可以私聊我啦

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-26 11:01:20

Android工作两年之后的第一个App--天真无谐的相关文章

Android 前后两个textview 前面的一个长度自适应的解决方案

需求: 现在有水平的两个textView,前面的textView长度不固定,且要求后面的textView紧贴前面的,当前面的长度过长时显示省略号,后面的textView紧贴最右边且要全部显示. 解决: <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ll_anniversary_tab_nam

开发一个App要100万?用互联网思维只要1万

近期经常看到一些关于开发一个App要多少钱的文章出来,有的说App开发要100万,有的说要60万,其实这个不叫开发App,那叫做项目或者创业开公司要多少钱才对,而这种情况下之所以要这么多钱,也是基于一个对行业啥都不懂的情况下来计算的,所有的东西都需要你花钱来完成的. 我们可以想象一下,你对移动互联网一窍不通,但是你想开个公司,创业做个App,那么还真是啥都要重新招,你需要招聘四个客户端(两个负责ios.两个负责android),两个服务端,一个设计师,一个产品经理,一个人事,一个行政,甚至还需要

Android学习路线(四)构建一个简单的UI

Android应用的图形化用户界面的构建使用的是View 和 ViewGroup 对象的层次嵌套. View 对象通常是UI部件,例如 buttons 或者 text fields ,而 ViewGroup 是用来定义它的子布局如何排布的容器,它通常是不可见的,例如一个网格或者一个垂直的列表. Android提供XML词汇与View或者ViewGroup的子类的对应,这样的话你就可以通过XML元素的层级嵌套来定义你的UI. 另一种布局 使用XML声明UI比在运行时代码中声明更有用处可以在很多地方

android面试题 不仅仅是面试是一个很好的学习

下面的问题是在网上找到的总结,感谢您分享!希望,我们的共同进步,找到自己心仪的公司,: 1.android dvm 流程和Linux这个过程.无论是应用程序对同一概念: 答案:dvm是dalivk虚拟机.每个android应用程序都在自己的进程中执行,都拥有一个dalivk虚拟机实例.而每个dvm都是在linux的一个进程.所以说能够觉得是同一个概念. 2.android的动画有哪几种?他们的特点和差别是什么? 答:两种,一种是tween动画,一种是frame动画. tween动画,这样的实现方

Android官方入门文档[3]构建一个简单的用户界面

Android官方入门文档[3]构建一个简单的用户界面 Building a Simple User Interface构建一个简单的用户界面 This lesson teaches you to1.Create a Linear Layout2.Add a Text Field3.Add String Resources4.Add a Button5.Make the Input Box Fill in the Screen Width You should also read?Layouts

工作两年时的总结,今天偶然给翻到了

87年10月的,2011年6月毕业的,11年三月份就来到现在这家公司实习了,主要是做嵌入式方面的,当时感觉自己充满了能量,刚开始几天就是熟悉工作环境吧,就自己在部门的网盘里随便看些老同事们做的技术报告和技术文档,过了几天师傅让我帮他测试我们平台对一个网站视频的支持情况,他大概给我讲了下怎么怎么弄,我当时就傻眼了,连简单的linux命令都不懂,脑海中完全没有任何想法,然后他干脆坐在我旁边对着电脑跟我讲着代码流程,帮我建虚拟机-在此,我要真心的感谢师傅.这之后我就下定决心要好好努力,一有时间就去看部

Android官方入门文档[12]启动一个活动

Android官方入门文档[12]启动一个活动 Starting an Activity启动一个活动 This lesson teaches you to1.Understand the Lifecycle Callbacks2.Specify Your App's Launcher Activity3.Create a New Instance4.Destroy the Activity 这节课教你1.了解生命周期回调2.指定您的应用程序的启动活动3.创建一个新实例4.销毁活动 You sho

Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio

Android Studio 1.0.1刚刚发布不久,谷歌紧接着发布了Android Studio 1.0.2版本,和1.0.0一样,是一个Bug修复版本.在上一篇Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境,我们介绍了Android开发环境的搭建,今天先来说一下上一篇中大家问道比较多的问题,然后说一些Android Studio的使用技巧.  一.搭建开发环境中遇到的问题及解决办法 1.Genymotion模拟器网络错误 我们顺利的安装完了G

Android的两种菜单

Android子菜单和选项菜单与上下文菜单的实现 菜单在Android开发中必不可少,可是要怎么实现各种菜单呢?是不是很头疼呢?下面我就来介绍一下: 1. 选项菜单和子菜单的实现 选项菜单:最常规的菜单,Android中把它叫做option menu.选项菜单最多只能显示6个菜单项,超过6个时,第6个菜单项会被系统替换为一个叫“更多”的子菜单,原来显示不下的菜单项都作为“更多”菜单的子菜单项. 子菜单:Android中点击了子菜单将弹出悬浮窗口显示子菜单项.子菜单不支持嵌套,即子菜单中不能再包括