
Android
timshinlee
这个作者很懒,什么都没留下…
展开
-
RxJava
RxJava翻译 2017-01-16 14:15:12 · 289 阅读 · 0 评论 -
Service与AIDL
Service介绍Service是一个没有界面的系统组件,可以在后台进行一些长期的操作。这里的后台并不是指子线程,而是指在离开应用后仍然可以继续运行。Service一般由其他系统组件启动,可以用来实现IPC(Inter-Process Communication)。Service可以分为三种:scheduled Service:即用来定时进行一些操作,可以通过JobScheduler(API 21原创 2017-08-16 14:17:47 · 600 阅读 · 0 评论 -
adb命令总结
adb shell pm list packages 列出所有应用包名 adb shell pm path <包名> 查询apk所在路径 adb pull <手机文件路径> [保存到电脑上的路径] 保存到电脑路径可省略,如果省略则保存到执行命令的当前路径原创 2017-07-26 14:25:27 · 189 阅读 · 0 评论 -
WebView整理
显示兼容性首先明确一下两个重要概念: 1. 视窗(viewport):视窗就是网页可见的矩形区域,可以指定大小和缩放比例等属性。最重要属性是视窗的宽度,这个宽度是从网页的角度来看水平方向上所有可用的像素总数。 2. 屏幕密度:WebView和大部分Android浏览器会把CSS的像素值转换为dip单位值,Android中在160dpi的密度下1dip=1px。所以最好考虑到不同密度下的缩放问题。原创 2017-08-11 13:03:42 · 226 阅读 · 0 评论 -
Retrofit2整理
简介Retrofit的介绍: A type-safe REST client for Android and Java. Retrofit使用注解来描述HTTP请求,默认支持URL参数替换和请求参数。而且还支持自定义header、multipart请求体、文件上传和下载、模拟响应等等。导入Retrofit2默认以OkHttp为网络层,因此不需要显式依赖OkHttp。原创 2017-08-12 14:46:55 · 575 阅读 · 0 评论 -
Dagger2
Dagger2是用来实现Dependency Injection模式的库。依赖注入一方面可以方便测试,另一方面可以创建可复用可更换的模块。Dagger2的具体实现是在编译器生成代码。导入Java Gradle// Add plugin https://plugins.gradle.org/plugin/net.ltgt.aptplugins { id "net.ltgt.apt" versio原创 2017-08-07 13:45:49 · 330 阅读 · 0 评论 -
View
Creating a View原创 2017-01-07 14:40:36 · 347 阅读 · 0 评论 -
Android数据存储
SharedPreference getSharedPreference() 获取指定的sp文件 getPreference() 使用Activity名称作为sp文件名内部存储 openFileOutput 返回FileOutputStream openFileInput 返回FileInputStream 可以通过openRawResource()方法获取InputStream读取re原创 2017-03-19 21:27:34 · 283 阅读 · 0 评论 -
DataBinding(一)基础
1. 导入在module的build.gradle中声明android { dataBinding { enabled true }}如果依赖库中使用了DataBinding,则module也要使用DataBinding才行。Android Gradle Plugin 3.1.0 canary 6提供了另外一种新的DataBinding编译器V...原创 2018-03-23 16:36:58 · 566 阅读 · 0 评论 -
DataBinding(二)变量及表达式
1. 概述在DataBinding的布局文件当中,可以引入各种变量,并在布局文件中使用变量表达式,达到数据绑定的效果。引入的变量可以使用完整类名,或者使用标签导包。与Java一样,java.lang的包是默认导入的。具体格式及使用方法如下:<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="h...原创 2018-03-23 16:37:36 · 3948 阅读 · 0 评论 -
DataBinding(三)事件处理
DataBinding可以在XML中使用事件的回调方法名作为属性名(大部分情况下)来处理View分发的事件。比如说View.OnLongClickListener的回调方法是onLongClick,所以这个事件的属性名称就是android:onLongClick。事件的处理可以有两种方式: 1. 方法引用:在事件属性的表达式中调用一个方法,这个方法的签名必须和事件回调方法签名一致。当事件回调...原创 2018-03-23 16:41:04 · 1154 阅读 · 0 评论 -
DataBinding(四)属性设置
1. 默认setter对于设置了DataBinding表达式的XML属性,DataBinding会根据属性表达式的返回值查找该属性的setter方法,比如android:text="@{"str"}"属性是去找setText(String)方法,所以表达式的返回值类型是十分重要的,影响着DataBinding查找的具体方法。如果View不提供某个属性的XML属性,但是其实包含了该属性的se...原创 2018-03-23 16:41:55 · 670 阅读 · 0 评论 -
DataBinding(五)自动更新
虽然使用普通的Java对象就可以把数据绑定到UI界面,但是当数据变动时,UI却不会及时更新,所以DataBinding提供了observable objects、observable fields、observable collections来达到自动更新的效果。observable objects如果一个类实现了android.databinding.Observable接口,则Da...原创 2018-03-23 16:42:12 · 1224 阅读 · 0 评论 -
DataBinding(六)数据转换
当一个对象从binding表达式中返回的时候,就会自动去查找默认、重命名或自定义的setter。然后该对象会被转型成为所选setter的参数类型。这时候对于使用ObservableMaps就很方便,返回的值会自动转换为setter的参数类型,不过如果可能产生混淆的话,还是需要手动去转型。<TextView android:text='@{userMap["lastName"]}...原创 2018-03-23 16:43:26 · 2933 阅读 · 0 评论 -
Fragment
生命周期如果当前Activity正在运行,当Fragment被添加到Activity后,就会依次调用以下生命周期回调:onAttach():当Fragment首次依附在某个Context时调用,接着调用onCreate()。onCreate():做一些初始化动作,注意这个回调可能在对应Activity的视图层级还在创建的时候调用。接着调用onCreateView()。onCreateView(原创 2017-06-21 21:39:39 · 185 阅读 · 0 评论 -
OkHttp整理
导入compile 'com.squareup.okhttp3:okhttp:3.8.1'混淆:-dontwarn okio.**-dontwarn javax.annotation.Nullable-dontwarn javax.annotation.ParametersAreNonnullByDefault最新版本请看github使用示例:同步Getresponse.body().strin原创 2017-08-10 10:48:08 · 521 阅读 · 0 评论 -
系统权限
整理自:https://developer.android.google.cn/training/permissions/index.html 每个Android app都是运行在访问受限的沙盒中,如果需要使用到外部的资源信息,则需要在Manifest中添加权限表明本应用需要的权限。只需要声明直接使用到的权限,间接使用到的权限不必声明。 取决于权限的敏感程度,即对用户的隐私的影响程度,系统可能会翻译 2017-01-23 11:16:48 · 638 阅读 · 0 评论 -
性能最佳实践
性能翻译 2017-01-23 16:39:55 · 327 阅读 · 0 评论 -
API Guides之Activity
Activity的过滤条件。action用来指明Activity可以响应什么类型的intent,category使得Activity可以接收启动请求,data指明Activity可以处理的数据类型及详情 <activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"> <intent-filter翻译 2017-03-24 20:35:48 · 480 阅读 · 0 评论 -
Http
TCP/IP是互联网相关联协议的统称,也可以指TCP和IP这两种协议。TCP/IP采用分层设计,可分为应用层、传输层、网络层、数据链路层四层。层次化的好处和面向对象封装的思想有类似的地方。即每个层次独立存在,可以单独变动而不影响其他层次,也只需要考虑实现好本层次的责任即可。应用层。提供应用层面的协议,包括文件传输协议FTP(File Transfer Protocol)、超文本传输协议HTTP(H翻译 2017-04-05 14:11:40 · 393 阅读 · 0 评论 -
Activity
启动模式launch mode启动模式可以在manifest中设置,也可以在intent中设置。intent设置的优先级高于manifest的优先级。使用Manifest设置设置activity标签的launchMode属性。该标签定义了activity如何启动到栈中。可设置的模式有四种。 1. standard。标准模式,系统每次都会创建一个新实例放到启动目标activity的栈中。使用该模式的原创 2017-06-24 18:08:02 · 363 阅读 · 0 评论 -
View measure
ViewRootImpl类的performTraversals()中组装了初始的MeasureSpecint childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp.width);int childHeightMeasureSpec = getRootMeasureSpec(mHeight, lp.height);……performMeasu原创 2017-07-14 09:48:04 · 209 阅读 · 0 评论 -
进程和应用生命周期
大多数情况下,每一个应用都运行在自己的Linux进程之中,当应用不再需要运行,而且系统需要为其他应用获取空间时,进程才会停止运行。不过Android一个不同寻常的基本特点就是应用的进程生命周期并不是由应用本身控制的,而是由系统综合考虑决定的,因素包括系统所知的该应用运行中的组件、对于用户的重要程度,以及系统所有的可用内存大小。所以如果不正确地使用应用的组件,就可能导致组件在进行重要的工作时被系统终止原创 2017-06-27 13:28:29 · 809 阅读 · 0 评论 -
环信笔记
踩坑记录如果使用了实时通话功能,未添加相应混淆规则会闪退,log如下# Fatal error in ../../webrtc/api/java/jni/classreferenceholder.cc, line 119 # Check failed: !jni->ExceptionCheck()原创 2017-07-20 11:57:05 · 821 阅读 · 2 评论 -
使用ViewPager实现gallery
整理自http://blog.youkuaiyun.com/u012702547/article/details/52334161,记录一下对于PageTransform的理解。通过设置clipChildren或者clipToPadding属性,使得ViewPager可以实现单屏多页的效果。ViewPager的特性就是每一页View的宽度是ViewPager宽度减去ViewPager的padding,所以要实现原创 2017-07-20 17:55:53 · 753 阅读 · 0 评论 -
TouchEvent分发机制
触摸屏幕首先调用Activity的dispatchTouchEvent(),可以重写这个方法来拦截本该传递给Window的TouchEvent。 /** * Called to process touch screen events. You can override this to * intercept all touch screen events before they are d原创 2017-07-13 22:27:41 · 461 阅读 · 0 评论 -
RecyclerView定位,点击项自动滑动到中央
改写SmoothScroller计算距离,达到smooth滑动到指定位置的效果,解决指定位置可见就不滑动的问题原创 2016-12-29 17:57:51 · 4077 阅读 · 4 评论 -
Android动画之属性动画
属性动画可以在以下几个方面对动画进行设置:Duration:动画持续时间,默认是300ms。Time interpolation:插值器,可以指定属性值如何根据动画当前播放时间进行变换。Repeat count and behavior:重复次数和重复方式,正向或者逆向重复。Animator sets:动画集合,可以对动画进行分类组合,指定播放顺序或者播放延时。Frame refre原创 2017-08-08 09:55:29 · 485 阅读 · 0 评论 -
控制状态栏、导航栏、实现沉浸式模式
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { int systemUiVisibility = getWindow().getDecorView().getSystemUiVisibility(); systemUiVisibility ^= View.SYSTEM_UI_FLAG原创 2017-06-30 13:25:27 · 2455 阅读 · 0 评论 -
Storage Access Framework
SAF是4.4(API 19)开始使用的数据访问机制。包含以下几个部分: 1. Document Provider:是DocumentsProvider的字类,用来让存储设备显示内容,Android自带Downloads,Images,Videos等这几种。 2. 客户端app:使用ACTION_OPEN_DOCUMENT和ACTION_CREATE_DOCUMENT的intent以及获取返回内翻译 2017-03-19 23:14:50 · 767 阅读 · 1 评论 -
DataBinding(七)tips
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstName, default=`I am a placeholder`}"/>使用default属性设置AndroidStudio预览面板中的默认显示内容,...原创 2018-03-23 16:43:54 · 153 阅读 · 0 评论