本文内容来自Android
官网对Android
开发过程中资源使用、资源适配、资源选择原理的介绍和建议。
在上一篇文章记一次9.png的填坑之旅最后,我留了两个个问题:
9.PNG
设置背景之后会改变控件的padding
属性值9.PNG
明明改变的是padding
值为什么却产生了margin
的效果 这篇文章就来解答这两个问题以及9.PNG
使用过程中需要注意的地方。
各位同学如果没看过记一次9.png的填坑之旅这篇文章可以先去看看,因为我下面所讲的内容都是根据这篇文章中的问题来讲的。
最近项目中碰到一个TextView
的显示问题,想了各种办法之后,最后还是用SpannableStringBuilder
解决的。这篇文章就记录下我的问题的解决过程,同时总结下SpannableStringBuilder
在TextView
中的不同用法。
最近在项目中进行界面调整时遇到了一个9.PNG
图引起的View
的padding
值不正常导致UI显示不符合预期结果的问题。这篇文章就来记录我当时遇到的问题的表现形式,以及如何根据问题找到产生问题的原因,及其最后的解决办法。
RxJava
现在在Android开发中越来越流行,作为一个Android
开发者我也必须紧跟步伐学习学习RxJava
,这篇文章就记录了RxJava
中我认为比较常用的一些场景。
也给大伙推荐篇比较好的RxJava
文章
大家都知道JDK
中提供了观察者模式的实现,它主要两个重要元素:
Observable
Observer
至于Java
中观察者模式的使用,大家可以自行Google下。
而RxJava
中也有两个重要的元素:
Observable
Subscriber
因此RxJava
的设计看起来也有点类似JDK
中的观察者模式,都有被观察者和观察者。JDK
观察者模式中当有操作需要时是由被观察者通知观察者来进行更新操作RxJava
中是由被观察者Observable
发出事件给观察者Subscriber
接收,然后观察者Subscriber
调用noNext()
进行处理,直到调用onComplete)()
或onError()
结束
这篇文章我将从Retrofit的基本用法出发,透过其使用步骤,一步步的探究Retrofit的实现原理及其源码的设计模式。这篇文章可能会将Retrofit中用到的设计模式和其实现原理穿插着写,所以各位同学也可以选择性的阅读。而对于Retrofit具体使用还不太清楚的同学可以去看的另一篇文章Retrofit2的使用介绍
前一段时间在公司项目上做了一个视频播放的功能,当时时间紧,做完之后感觉有些地方处理的不好,所以就基于当时实现的思路进行了一些改进,加上自己平时喜欢看新闻客户端里面的一些短视频,所以就用网易等客户端的视频数据完成了一个独立的视频播放APP,顺便巩固下其他的技术。
Mosby(一个MVP框架)、RxJava、Retrofit2、ButterKnife、Glide、Systembartint、TigerDB、Material Design相关控件
前面一篇文章介绍了Retrofit2的基本使用,这篇文章接着介绍使用Retrofit2实现文件上传和文件下载,以及上传下载过程中如何实现进度的显示。
1 | @Multipart |
1 | File file = new File(filePath); |
对于还不知道Refrofit是什么的同学,我只能说你们太out了,赶紧去Google下,本文是针对Retrofit2.0的使用介绍,当然大家也可以直接去官网上去看使用介绍
要使用Retrofit首先得添加gradle依赖1
2compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
依赖添加完成之后,就可以开始撸代码了,首先我们要新建一个Interface,这个接口就是你要请求的接口服务类,就像这个样子
1 | public interface RetrofitService { |
上面这个接口中暂时只声明了一个方法,而在Retrofit中想这样声明的一个方法就代表了一个具体的Http请求接口。Retrofit中方法上添加@GET
注解就表示当前方法代表一个Get请求,我们声明的这个请求方法不带任何参数,且返回结果是User对象。@GET
注解括号中的值getModelService
就代表http请求地址的具体指向,这个值与下面baseUrl中配置的URL一起组成一个完整的请求地址
Retrofit就是这么任性,它可以帮我们把http的请求结果自动转换成Javabean对象,这将为我们减少不少编码工作。
接口服务声明完成之后,我们接着需要新建一个Retrofit对象1
2
3
4
5Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:8080/AndroidService/")
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitService service = retrofit.create(RetrofitService.class);
Update your browser to view this website correctly. Update my browser now