最近在研究Android的下拉刷新功能,看了几个别人写的自定义控件:
1.android-pulltorefresh:https://github.com/chrisbanes/Android-PullToRefresh
2.android-pulltorefresh-listview:https://github.com/johannilsson/android-pulltorefresh
String、StringBuffer、StringBuilder
String: String是一个不可变的对象,每次对String类的改变实质都是新生成了一个新的String,然后把指针指向新String对象。每次生成对象都会对系统性能产生影响,速度会相当慢。
StringBuffer: 在字符改变的时候,不会产生新的对象,线程安全的可变字符序列。
StringBuilder: 同StringBuffer类似,线程不安全的可变字符序列。
原图
申请Lantern
- 首先,你需要有一个Google帐户的邮箱地址。
进入到Lantern官网 https://www.getlantern.org/ ,按照提示输入邮箱地址,索取邀请函。
接下来,你将收到顺序如下标题的两封邮件:
1 Lantern Beta Request: Please Confirm
点击邮件正文的__Yes,subscribe me to this list.__按钮
2 Lantern Beta Request: Subscription Confirmed
MediaMetadataRetriever
顾名思义,就是用来获取媒体文件一些相关信息的类。包括一首歌的标题,作者,专辑封面和名称,时长,比特率等等。如果是视频的话,可以获取视频的长宽,预览图。
http://developer.android.com/intl/zh-cn/reference/android/media/MediaMetadataRetriever.html
TouchDelegate`
用于更改View的触摸区域。场景:比如在RecyclerView的ItemView里包含了CheckBox组件, 然后想实现点击ItemView的时候,也可以触发CheckBox,就可以使用此类。
http://developer.android.com/intl/zh-cn/training/gestures/viewgroup.html#delegate
ArgbEvaluator
用于计算不同颜色值之间的插值,配合ValueAnimator.ofObject或者ViewPager.PageTransformer使用,可以实现不同颜色之间的平滑过渡。
http://developer.android.com/intl/zh-cn/reference/android/animation/ArgbEvaluator.html
Palette
用于提取一张图片的颜色。
http://developer.android.com/intl/zh-cn/reference/android/support/v7/graphics/Palette.html
IDE
按键 说明
F1 帮助
Alt+F1 查找文件所在目录位置
Alt+1 快速打开或隐藏工程面板
Ctrl+Alt+S 打开设置对话框
Alt+Home 跳转到导航栏
Esc 光标返回编辑框
Shift+Esc 光标返回编辑框,关闭无用的窗口
Shift+Click 关闭标签页
F12 把焦点从编辑器移到最近使用的工具窗口
Ctrl+Alt+Y 同步
Ctrl+Alt+S 打开设置对话框
Alt+Shift+Inert 开启/关闭列选择模式
Ctrl+Alt+Shift+S 打开当前项目/模块属性
Alt+Shift+C 查看文件的变更历史
Ctrl+Shift+F10 运行
Ctrl+Shift+F9 debug运行
Ctrl+Alt+F12 资源管理器打开文件夹
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。
与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。
1.1 术语说明
1 |
|
本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google编程风格,但并不意味着这是展现这些代码的唯一方式。 示例中的格式选择不应该被强制定为规则。```
本脚本适用环境
系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
内存要求:≥128M
日期 :2018 年 02 月 07 日
关于本脚本
1、一键安装 Shadowsocks-Python, ShadowsocksR, Shadowsocks-Go, Shadowsocks-libev 版(四选一)服务端;
2、各版本的启动脚本及配置文件名不再重合;
3、每次运行可安装一种版本;
4、支持以多次运行来安装多个版本,且各个版本可以共存(注意端口号需设成不同);
5、若已安装多个版本,则卸载时也需多次运行(每次卸载一种);
6、Shadowsocks-Python 和 ShadowsocksR 安装后不可同时启动(因为本质上都属 Python 版)。
友情提示:如果你有问题,请先阅读这篇《Shadowsocks Troubleshooting》之后再询问。
Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。
1.Java集合框架是什么?说出一些集合框架的优点?
每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:
(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。
(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。
(3)通过使用JDK附带的集合类,可以降低代码维护成本。
(4)复用性和可操作性。
拨打电话
public static void call(Context context, String phoneNumber) {
context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)));
}
跳转至拨号界面
public static void callDial(Context context, String phoneNumber) {
context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber)));
}
时光荏苒,躲在季节的背后,做着一个不知道如何,令自己满意的自我。挣扎、喘息、挣扎……
最近,可以很安稳的休息。因为放下了太多,曾经以为生活便是蔚蓝的天空,只要不是阴天,抬头便是蓝天、白云。望望天,会令人心旷神怡。