最近在项目中进行界面调整时遇到了一个9.PNG
图引起的View
的padding
值不正常导致UI显示不符合预期结果的问题。这篇文章就来记录我当时遇到的问题的表现形式,以及如何根据问题找到产生问题的原因,及其最后的解决办法。
最近在项目中进行界面调整时遇到了一个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的使用介绍
前面一篇文章介绍了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);
今天用RecyclerView
写了简单的例子,使用的是LinearLyaoutManager
,子View
采用的TextView
,准备写个简单的List展示,我的RecyclerView
和TextView
的宽度布局都采用的是match_parent
,结果显示出来之后发现子View
的宽度压根就没有充满屏幕。之前也用过RecyclerView
,但是没有遇到过这个问题,很不解啊~~~网上查阅之后说是在Adapter
的onCreateViewHolder
方法中构造View
的时候不能用如下方式:1
View.inflate(mContext, R.layout.item_layout, null);
必须要换成下面的构造方式把parent带进去:1
LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);
而我的Adapter
中刚好就使用的是第一种方式,于是立马换成下面的第二种方式实现,运行看效果,果然充满了屏幕~~~这个问题还真是奇葩啊~
本文主要是记录从我使用AndroidStudio以来遇到的一些问题和一些技巧。
Failed to complete gradle execution cause by...
,一般此错误可以通过设置gradle的VM参数解决: -Xmx256m(设置方式为:File > Setting > Gradle > Gradle Vm Option)
,如果此方法无效,可以选择直接升级AS的版本到最新版本再试,还有其他可能的原因是工程JDK版本与AS设置的JDK版本不同File > Setting > Appearance&Behavior > Appearance
下的Theme可以选择你要使用的主题Update your browser to view this website correctly. Update my browser now