小秋魔盒是一个Android生活工具App项目源码
主要功能有:新闻资讯;微信精选美文;笑话趣图;星座运势;LED字幕;天气;日历;二维码;手电筒;老黄历。在开发中尽可能多的用了目前比较流行的框架和库。应用预览 | UI
图片依次是(多动图,加载较慢,图片不显示刷新页面):
1.新闻模块(如果你下载的 apk 没有显示新闻模块,开启方式:设置页长按头部直至出现提醒 > 设置页长按底部直至出现提醒 > 退出重启应用)
2.文章模块 3.日历模块
4.天气模块 5.颜色画板 6.盒子布局
7.魔力数字排序列表 8.下拉果冻弹跳效果 9.引导页
10.手势图片 11.能力图表格 12.视差图片
粗略用法:
引入:
compile 'com.orhanobut:logger:1.15'
初始化:
Logger.init();//在application中
用法方式:
Logger.d("hello"); Logger.e("hello"); Logger.w("hello"); Logger.v("hello"); Logger.wtf("hello"); Logger.json(JSON_CONTENT); Logger.xml(XML_CONTENT); Logger.log(DEBUG, "tag", "message", throwable);
参数设置:
Logger .init(YOUR_TAG) // default PRETTYLOGGER or use just init() .methodCount(3) // default 2 .hideThreadInfo() // default shown .logLevel(LogLevel.NONE) // default LogLevel.FULL .methodOffset(2) // default 0 .logAdapter(new AndroidLogAdapter()); //default AndroidLogAdapter
GsonFormat & Gson json 数据解析
GsonFormat Github地址:https://github.com/zzz40500/GsonFormat
Gson Github地址:https://github.com/google/gson引入:
compile 'com.google.code.gson:gson:2.7'
设想: 网络的检测逻辑的代码放在了BaseActivity中, 网络变化时,需要自动显示网络错误的布局主要继承这个Base类就行了, 同时这个类开放的有网络变化时的回调接口。
自动显示网络错误的布局的几种设想: 第一种:当网络无连接时可以显示一个大的网络错误布局, 或者跳转到一个网络错误布局,当网络连接上的时候再自动跳转回来 (用户也可以通过点击返回,在无网络的情况下的页面)。 第二种:当网络无连接、网络请求数据错误时都显示一个小警示布局提醒网络错误。 第三种:上面两种结合在一起,同时在网络请求数据错误的时候,就加载一定数量的网络错误数据集合。
用法简述::
1.Define events:
public static class MessageEvent { /* Additional fields if needed */ }
2.Prepare subscribers: Declare and annotate your subscribing method, optionally specify a thread mode:
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) {/* Do something */};
Register and unregister your subscriber. For example on Android, activities and fragments should usually register according to their life cycle:
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); }
3.Post events:
EventBus.getDefault().post(new MessageEvent());
第三方平台引入集中说明
小米推送(本来没想用小米的,抵不住前几年小米手机买的好名气大,我就用用试试。这里说一下和其他平台的不足点,目前发现小米推送不支持富文本的)
ShareSDK Mob 平台的社会化分享和登录
SMSSDK Mob 平台的手机短信验证(感觉 Mob 平台名气稳健,一方面是名字取得好呀,一方面永久免费)
友盟统计 (这个小应用大部分都会用吧)
Slidinglayout 果冻弹跳效果
依赖nineoldandorid开源动画库
Slidinglayout其实就是一个自定义的布局
XML样式参数:
background_view
背景 view
sliding_mode
滑动模式,both
为上下可弹跳,top
为顶部弹跳,bottom
为底部弹跳,默认为 both sliding_pointer_mode
手指模式,one为只识别一个手指,more为支持多指滑动,默认为more top_max
当滑动模式为top时才有效,用于可滑动的最大距离,如"top_max:200dp"
,默认为-1(不限制)
常用API:
public void setSlidingOffset(float slidingOffset)
设置控件的滑动阻力,有效值为0.1F~1.0F,值越小阻力越大,默认为0.5F
public void setTargetView(View view)
设置控件的前景View
public void setBackgroundView(View view)
设置控件的背景View
public void setSlidingListener(SlidingListener slidingListener)
给控件设置监听,可以监听滑动情况
public void setSlidingMode(int mode)
设置滑动模式
public void setSlidingDistance(int max)
设置最大滑动距离,仅在top模式下有效
主导航页面(设计思路)
(目前应用的问题,个人感觉就是这个设计的有问题)
下面具有导航栏的主体app的设计思路。
由于这种导航是一级导航,目前不建议在app的一级页面就采用 viewpager+Fragment
或导航栏+ Fragment
的形式设计。
建议采用独立 activity+include
布局 + android:launchMode="singleTask"
+ theme:<item name="android:windowAnimationStyle">@style/noAnimation</item>
(取消activity跳转自带的原生动画)的形式
这样的好处:能将每个一级功能分类页相互分离开来不相互影响。经过观察和猜想知乎采用的应该是这种方式。这样的方式也能达到和上面一样的效果,同时又解决了Fragment带来的不便。
关于主导航页返回键的监听处理方式:
一种是在每个主导航页中设置监听,点击一次没反应,连点击两次退出程序。
另外一种:点击一次返回到main主导航页面,在main页面点击一次直接退出程序(这也是知乎实现的方式,同时因为在main页面点击一次就直接退出了,所以在其他主导航页面如果连续点击两次也能达到直接退出程序的效果。)
开源说明
本应用是上线应用,在上线之初并未开源,应许多用户和开发者朋友的呼吁后在 GitHub 上开源,因本应用本身就是我个人开发也并无商业性质,为了大家学习和参考应用内各功能的具体实现方式就毫无保留的开源给大家。 因最近为修复部分 bug 在应用市场提交更新版本时,收到了应用市场平台“此APP已被打入盗版库,不予重复更新上传”的通知拒绝更新(想象可能是有人修改此源码重复提交应用上线了)。同时也有部分朋友询问此项目采用的开源协议。基于上面这些情况在这着重强调一下开源说明:
- 本应用的开源源码大家都可以随意复制传播、Fork,大家对应用内各功能的实现源码可以学习参考;
- 《小秋魔盒》是上线应用,自第一个版本上线之时,就关于本应用的所有权、知识产权、侵权申明的相关信息在应用的 “设置” > “声明” 页面有明确详细说明;
- 本应用目前不采用任何开源协议,我个人保留本应用的所有权利;
- 本应用不允许任何人对源码再整体封装、或修改部分代码或变异改编再次提交上线或使用等,严禁使用到商业目的用途、毕业论文、其他形式的使用等。
资源均来自第三方,谨慎下载,前往第三方网站下载