自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 收藏
  • 关注

原创 Android Studio目录中类名红色

没有添加到git上,类名右键有一个绿色加号,Add Git,添加即可。

2017-08-25 12:36:14 2083 1

原创 elevation的使用

最近的一个项目要求给AppBar加上elevation,我直接在xml中设置对应组件的elevation属性。刚开始几个活动效果都不错,能看见阴影,后来一个设置却没有效果。上网查找答案才知道,elevation的阴影效果默认由background提供,如果没有设置background也就没有效果。所以正确的使用姿势是:1.设置background2.添加android:

2017-08-23 18:05:28 2968

原创 layoutAnimation

layoutAnimation是为viewgroup的子项统一设置进入动画的一种动画,原理也很好理解,就是在绘制子项前根据参数计算出每一项的动画的startOffset,也就是启动等待时间,然后依次为子项设置动画即可。和其他动画一样,有xml静态和代码两种设置方式:1.xml:<android.support.v7.widget.RecyclerView and

2017-08-22 16:02:46 599

原创 JAVA线程池的理解

本文只是对线程池基本概念的总结。new Thread(new Runnable。。。)相信大家都写过,它表示的意义也很明显,我把一个runnable任务交给一个新建的线程让他执行。如果是简单的几个任务并发这就没什么问题,但是如果要同时处理许多任务或者面对更加复杂的情况的时候,频繁的创建和销毁线程带来的开销,或者线程争夺资源导致效率低下都会发生。这时候就需要线程池,一个承担全部创建线程销

2017-08-21 17:14:12 222

原创 折叠标题栏设置属性解析

准备工作:引入design库,活动主题设置为NoActionBar,设置xml中toolbar到setSupportActionBar先上折叠标题栏代码:<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"

2017-08-17 13:36:33 594

原创 Kotlin一些基本语法

首先要在AS中搜索安装插件Kotlin配置gradle:https://github.com/wangjiegulu/kotlin-for-android-developers-zh/blob/master/pei_zhi_gradle.md1.JAVA代码转Kotlin:将需要转换的文件打开为当前文件,点击Code---Convert JAVA f

2017-08-17 11:05:32 277

原创 软键盘回车设置为搜索+点击后收回

1.回车设置为搜索(如微博搜索):设置输入框的属性: android:inputType="text" android:imeOptions="actionSearch"2.这时候如果点击这个搜索,软键盘并不会收回,只是回车键又回到原来的样式,显然不是我们想要的效果。一般监听回车键可以给输入框设置onKeyListe

2017-07-28 15:51:22 1804

原创 为控件设置某几个边的边框

边框等一般都在drawable中设置,然后作为background。但是边框的设置只支持全方位的设置,如果想设置某个边的边框的话,有一种思路,就是使用两层绘制。比如我想在白色的控件左边加一个0.5dp黑色的边框。那么就先用黑色定义一个shape,然后再用白色定义一个,设置左边留出0.5dp。这样就达到了效果:

2017-07-28 15:33:30 525

原创 随软键盘弹出和收回view(二)

上一篇提出了一种软键盘弹出时输入框显示在键盘上的方式,就是设置活动关于软键盘的属性为adjustPan,让软键盘把输入框顶上去。但是这种体验并不是很好,因为输入框上面的内容也都一起被顶了上去。所以有另一种思路,就是软键盘弹出时输入框布局移动到软键盘上方,这里的移动是通过设置marginBottom实现的。首先要做到的就是监听软键盘的弹出与回收,这个是通过给活动添加布局改变的监听实现的(在上

2017-07-28 15:08:13 301

原创 retrofit下上传文件+获取和发送cookie

1.上传文件://上传图片 @Multipart @POST("static/image") Observable upLoadImage( @Part("image\"; filename=\"avatar.png\"") RequestBody image);part标注的内容表示上传的文件对应接口的image字段,不代表文件类型,文件名

2017-07-28 14:54:06 943

原创 仿QQ空间评论随软键盘弹出和收回一个输入布局

先来看一下效果图:                              点击图一底部的回复后,出现图二效果。软键盘弹出,上面显示出一个布局,包括输入框和功能按钮等。先说下我的心路历程吧,原来并没想设置一个新的布局在软键盘上,而是希望软键盘弹出的时候把底部的那个布局直接顶上去。这个其实比较容易实现,只需要设置活动的属性:android:windowSoftInp

2017-07-16 21:40:31 1585

原创 布局优化:使用include、merge、ViewStub

1.include:布局复用,使用layout=设置引用的布局。需要注意的是只支持android:id 和android:layout_xxx,而且要设置android:layout_xxx必须设置宽高。2.

2017-07-10 20:23:55 511

原创 bug解决:Element xxx must be declared

在打包的时候报了这个错误·,具体报错的文件是一个animation-list标签的xml文件。原因在于AS有类型检查,drawable文件必须放在drawable文件夹下,不只是这个标签的元素,如果其他的元素报了这个错,一般也是因为没有放到正确的文件夹下。这里我把这个文件放到了anim下,移动到drawable问题就解决了。

2017-07-10 14:22:16 17431

原创 一步步结合实例学习retrofit2

retrofit实际上就是对gson和okhttp进行了结合封装。一般来说,我们需要发送网络请求,然后处理返回的数据。而通过retrofit,可以快速简洁的完成这一系列操作,一般还要结合RxJava,让整个过程更加优雅。准备工作: compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup

2017-07-09 13:36:52 532

原创 JAVA编程思想读书笔记(8-14章)

1.多态:多态的实现依赖于动态绑定,即方法只有在运行的时候才去根据引用和方法名寻找正确的方法体并执行。并不是所有的方法都采用动态绑定,被final和static修饰的方法采用前期绑定,也就是说父类引用对象static执行的是基类的方法。多态的好处很多,他更便于我们理解,是我们只和基类打交道,可扩展性高。最重要的是,它体现了一个重要的思想:将需要改变的和不需要改变的分离开。

2017-07-07 16:40:01 394

原创 2017.7.5细碎知识点整理

1.viewgroup的onDraw:viewgroup默认是不调用自己的onDraw方法的,

2017-07-06 12:54:07 358

原创 recyclerview完整使用

1.和listview一样,创建数据模型和子项布局文件2.自定义适配器:首先在适配器类中自定义ViewHolder内部类,然后将其作为泛型传入类的声明中:class MyViewHolder extends RecyclerView.ViewHolder{ TextView tvTitle,tvNumber,tvTime; ImageView

2017-07-05 20:39:28 363

原创 封装一个带toolbar的活动,toolbar只写一次

在最近的一个项目中,由于有多个活动要用到toolbar,所以一个一个编写的代价比较大。这里的思路是写一个含有toolbar的布局的活动,需要有toolbar的活动继承这个活动,然后将自己的布局文件装入toolbar下面的view。来看布局文件的部分布局:<android.support.v7.widget.Toolbar android:id="@+id/toolbar

2017-06-30 11:52:05 349

转载 浅色状态栏(白底黑字)

转载自:http://www.th7.cn/Program/Android/201701/1079877.shtml有时候活动会涉及到浅色状态栏的需求,默认的状态栏上字体和图标颜色都是白色的。当我们想要设置状态栏为白色的时候,就必须要求使用浅色状态栏,浅色状态栏的字体和图标颜色都是黑色的。比较坑爹的是能够应用浅色状态栏的系统比较少,安卓官方在6.0以后才加入了这个选项。而除

2017-06-08 22:04:24 2090

原创 JAVA编程思想读书笔记(1--7章)

学校在大一开设了JAVA的课程,但是学到的内容实在有限。此次进行《JAVA编程思想》的阅读,算是查漏补缺,也是对JAVA各个部分建立更深的理解。把读书过程中的一些细碎但自己没有掌握的知识点整理下来,便于以后复习。1.所有类的成员基本数据类型字段都有一个默认值,除了char是null外其他都是0.    局部变量不适用2.为了标识类库的唯一性,JAVA

2017-05-16 20:03:35 345

原创 常用sql语句整理

这学期的数据库实验做完了,是时候应该把用到的sql整理一下。平台是oracleoracle的一个特点是重命名不需要写as关键字,下面就不再赘述了。1.建表:create table teacher (id varchar(10),name varchar(20),salary numeric(2,0))用逗号将几列隔开,格式为属性名+类型+限制(可选),这里varchar是变长字符串,括号中的数字...

2017-05-14 19:11:30 255

原创 单元测试及Junit的学习

首先需要明白什么是单元,一般来说,一个单元是指类中的一个方法,而且是公开的方法。因为我们认为非公开的方法是类的实现细节,不需要关心,我们只关心向这些公开方法传入参数后它能否正常工作,得到正确的结果。所以单元测试也就是对方法的测试。再来说说为什么要进行单元测试, 如果不进行单元测试,我们需要将一个功能的整套逻辑编写完毕并运行后才能知道逻辑是否正确,如果不正确还要进行反复的修改运行的重复,非常耗时

2017-05-13 11:47:35 379

原创 安卓UI基础知识---几种常见单位

1.屏幕尺寸:屏幕对角线的长度,单位是英寸。一英寸=2.5厘米。2.屏幕分辨率:屏幕的像素点数,比如1960*1080,像素用px表示3.屏幕像素密度:每单位英寸上的像素点数,单位是dpi,也就是dot per inch4.密度无关像素(dp/dip):可以看做绝对距离,与像素密度无关,当密度为160dpi时1dp=1px,密度为320dpi时1dp=2px。

2017-05-07 14:02:42 936

原创 关于service保活的思考

创造杀不死的service是一个比较流氓的行为,用户体验也不会好,通常我们只需要对服务做一定程度的保活。对于保活,比较烦的一点就是同样的措施在不同的手机上效果会完全不同,这和手机厂商的后台管理机制有关。我看了几篇文章,总结了几种常见的保活方式,当然,具体效果因机型而异。比如我的小米,不管用上什么方法,只要在menu中kill应用,服务就会停止。1.控制onStartCommand的返回

2017-05-05 17:00:31 287

原创 安卓动画总结

相关知识依然学习自任玉刚老师的安卓开发艺术探索,但是是本人自己的总结。安卓中有三种动画,视图动画、帧动画和属性动画。严格的说帧动画也属于视图动画,只是使用方法等都略有不同。1.插值器和估值器首先来了解动画中的两个常用类,插值器和估值器。这两个类的功能和代码都非常简单,插值器根据当前的时间进度百分比计算出操作属性值改变的百分比,估值器则根据这个计算出的百分比来计算改变后属性的值。

2017-04-19 22:39:03 323

原创 从源码角度看滑动冲突问题的解决

文章内容参考任玉刚老师的安卓开发艺术探索,并不是照搬,是我在理解基础上的重新总结。首先要明白View的事件分发机制,这里的事件具体指的就是MotionEvent,我们可以通过getAction判断这个事件是按下抬起还是move事件。还有一个概念:事件序列。一个事件序列指的是从按下到抬起的一系列事件的总和。下面看与view的事件分发相关的三个方法:boolean dispat

2017-04-14 20:18:52 285

原创 实现弹性组件效果(贝塞尔曲线&&阻尼函数)

1.贝塞尔曲线贝塞尔曲线是一种画线的方法,主要是通过四个点确定一条线,首尾两个端点,中间两个点构成一条虚拟的标准线,曲线就根据这条线相切以及两个端点确定。首先看看如何用贝塞尔曲线画出四分之一个圆:请先参考这篇博客:http://blog.csdn.net/nibiewuxuanze/article/details/48103059#comments总结起来,除了首尾两个端点外,中间

2017-04-08 22:20:18 2981

转载 ReactNative学习实例(十)接管Back键BackAndroid&&ToastAndroid

转自东方耀的学习视频下面的这个例子实现了双击退出和类似于引导页的在第二页退出。首先为BackAndroid设置监听器:componentWillMount() { BackAndroid.addEventListener('listener',this.onBackPressed); } componentWillUnMount() {

2017-04-07 18:04:23 606

原创 ReactNative学习实例(九)数据永久化存储AsyncStorage

官方的使用文档在这里http://reactnative.cn/docs/0.43/asyncstorage.html#contentAsyncStorage使用类似于安卓中sharedpreference的存储逻辑,从名字中就可以看出这是异步存储。调用的所有方法返回一个Promise对象,但是不需要对这个对象进行操作,因为方法接受回调方法等参数,在这些方法中对数据进行存取即可。

2017-04-06 21:24:11 1379

原创 ReactNative学习实例(八) 第三方组件TabNavigator底部导航栏

TabNavigator是github上开源的一个rn组件,是适用于ios和安卓两个平台的底部导航栏。组件地址:https://github.com/expo/react-native-tab-navigator1.首先通过命令行将组件引入项目:进入项目根目录并执行npm install react-native-tab-navigator --save执行完毕后组件就已导入,

2017-04-05 18:39:55 14430 1

原创 Support Design库中的BottomSheetDialog组件使用

首先来看这个组件使用的经典案例,微信公众号文章操作功能显示:首先要知道BottomSheetDialog有两种,第一种弹出后不影响主界面交互,第二种弹出后主界面变暗不能交互,这里分别进行使用。1.首先是普通的BottomSheetDialog:(1)实现使用方法是Behavier和CoordingLayout相结合。就像悬浮按钮和ToolBar等一样,这个组件要作为Co

2017-03-27 21:39:03 4716

翻译 显著减少项目gradle编译时间

原文来自https://zeroturnaround.com/rebellabs/making-gradle-builds-faster/1.对build过程进行配置实现编译优化:(1)首先了解如何用命令行进行编译:使用git命令行进入项目根目录,然后执行./gradlew :app:assembleDebug --dry-run这样显示编译成功后也会在底部显示编译的总时间。

2017-03-25 21:45:51 1271

原创 从github上的优秀实例看MVP模式

github上有一个关于MVP模式学习的实例https://github.com/antoniolg/androidmvp,虽然只有简单的几个类,却收获了几千个星。这个例子确实通俗易懂,直观的体现出了MVP模式的特点:考虑这样一个需求,页面显示一个列表,数据源需要特别获取。分析一下这个过程,页面首先显示出进度提示框表示正在加载,然后数据源获取数据并传给页面的列表进行渲染。MVP

2017-03-25 18:09:52 2493

原创 使用Pull解析XML获取新浪新闻

目标是获取新浪新闻如图所示位置的头条新闻数据:思路是这样的,先访问这个首页拿到这个部分每一条新闻的url,然后再逐一访问这些详情页面,从详情页面获取标题正文图片等数据。1.通过HttpUrlConection向网页发送数据并分析返回数据:(下面网络操作代码省略子线程和异常捕获)URL url=new URL("http://news.sina.com.cn/

2017-03-19 18:20:53 734

原创 玄学之坑:RecyclerView: No adapter attached; skipping layout

这个坑真的是玄学,报错信息显示rv没有绑定适配器,也就无法显示。不管怎么调试都没用:这个rv是在fragment里的,最终确定问题发生在基类fragemnt中。原来我的基类代码是这样:@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,

2017-03-18 12:45:34 1764

原创 第三方组件BottomBar使用

官方地址https://github.com/roughike/BottomBar在gradle中配置compile 'com.roughike:bottom-bar:2.0.2'不知道为什么用2.1以上的版本会配置错误,现在就用这个2.0.1的吧素材准备:底部栏的几个icon对于大小有要求,24dp,应该在不同资源文件夹下存不同大小的图片,这里为了方便直接用美图秀

2017-03-14 19:34:15 3575

原创 MVP模式实例:登录界面

MVP的核心目标是将无关ui操作的逻辑代码从活动中抽离出来,通过一个presenter控制view和数据层的通讯。以登录页面为例,页面需要得到用户输入的账号和密码,还要处理登录成功和失败时候的ui变化。但是登陆操作,以及判断返回的数据是成功还是失败,这一部分逻辑不需要活动考虑。为了抽象出视图层的方法并在presenter中进行调用,定义一个接口,将登录成功失败等view的操作作为抽象函数。

2017-03-12 21:29:33 559

原创 找数组等分点&&指数快速幂

1.给出一个数组,要求在O(n)的时间内找到三个点,由这三个点确定的四段数组里的元素和相等,也就是找四等分点。当我们想要找一个二等分点的时候只需要用一个模拟指针依次指向每一个元素,直到元素前后的和相等。这里找四等分点的原理相等,用三个模拟指针指向三个位置,通过比较和调整这三个指针的位置找到合适的划分。具体代码: public int[] four(int[] a){ int length=

2017-03-08 20:36:51 844

原创 ReactNative学习实例(七)ViewPagerAndroid

ViewPager也算是比较常用的,比如引导页和轮播图。先来看他的几个属性:1.initialPage={0},初始页的序号,从零开始,不设置的话默认是0。2.onPageScroll。接收一个方法,方法有一个event参数,通过event.nativeEvent.position可以拿到当前页码,通过event.nativeEvent.offset拿到偏移量。滑动时调用3.onPag

2017-03-06 17:15:10 542

原创 ReactNative学习实例(六)DrawerLayoutAndroid(侧滑菜单)

DrawerLayoutAndroid的子组件作为视图的主要内容,通过他的renderNavifationView来渲染侧滑菜单。DrawerLayoutAndroid主要有三个属性:1.drawerPosition,菜单从哪边滑出,接收几个常量:DrawerLayoutAndroid.positions.Left表示在左边,默认左边2.drawerWidth:菜单宽度,没有必要设

2017-03-05 16:40:53 574

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除