自定义博客皮肤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)
  • 资源 (12)
  • 收藏
  • 关注

原创 多点触摸处理

接着上文,我们做了一个简陋的下拉刷新控件,目前用到的知识点有view的滑动view的弹性滑动事件分发机制事件分发机制的两个小问题(事件的二次分发)目前这个控件除了简陋一点,没做抽象封装,在单手操作下,表现还是不错的,但是多手操作试一下,页面会产生位移突变。这就引出了本节的多点触摸知识点首先推荐这个大神的博客安卓自定义View进阶-MotionEvent详解安卓自定义View进阶...

2019-12-06 17:21:52 411

原创 触摸事件分发机制(有用的小技巧:事件二次分发)

存在的问题在上文的下拉刷新控件中,有两个问题在下拉到ScrollView顶部时候,继续往下拉时,并不会直接把头布局拉下来,而是需要把手松开后,再次下拉才会拉下头布局,为什么?上文说过,onInterceptTouchEvent方法虽然不是每次都被调用,但是如果子view在处理事件的时候,onInterceptTouchEvent是一直会调用的,因为他要等待子View不想消费事件的时机出...

2019-12-05 19:39:44 423

原创 触摸事件分发机制

触摸事件分发这是我之前写的一篇事件分发的博客,这篇文章是在看了《Android开发艺术探索》后写的,书中已经给出了【外部拦截法】和【内部拦截法】的模板代码,我们可以直接拿来使用即可,书中也给出了看源码后的重要结论,博客里我写了个demo,以打印log的方式验证了一遍,帮助理解了一遍事件分发的流程。更加详细内容可参考触摸事件分发。本篇博客贴出【外部拦截法】和【内部拦截法】代码,供大家上手使用,然后...

2019-12-05 14:11:16 438

原创 View的滑动与弹性滑动(ScrollBy+Scroller)

这次做一个SwitchView1,与上文的效果是一样的,但是1.跟随手滑动使用scrollBy,2. 松手后的弹性滑动使用scroller需要使用下面的几个结论:结论系统很多控件都是使用了scrollBy+scorller来实现滑动效果的,例如ViewPager就是如此scrollBy(dx,dy)增量滑动,scrollTo(x,y)直接滑动到指定坐标处在本例中,一...

2019-12-03 19:39:43 331

原创 View的滑动与弹性滑动(改变View的参数+属性动画)

这次做一个SwitchView,需要使用下面的几个结论:结论:为了避免手写onMeasure和onLayout,不要直接继承ViewGroup,而是继承LinearLayout、FrameLayout、RelativeLayout这种已经重写过了onMeasure和onLayout的布局如何获取控件的宽高我们知道经常因为控件还没加载出来就去获取宽高,那么得到的宽高为0,使用vie...

2019-12-03 15:01:41 297

原创 自定义ViewGroup的一个综合实践 FlowLayout

效果

2019-12-02 19:45:18 230

原创 让自定义ViewGroup支持Padding

结论:让自定义ViewGroup支持Padding,需要自定义ViewGroup在自身的onMeasure和onLayout里去处理Padding即可因为padding很容易获得,不像是Margin那么麻烦,另外与margin不同的是,padding是自定义ViewGroup的padding,只有四个padding,而margin是子控件的margin,每个子控件都会有四个margin...

2019-12-02 16:03:23 509

原创 让自定义ViewGroup里的子控件支持Margin

结论:让自定义ViewGroup里的子控件支持Margin,需要自定义ViewGroup在自身的onMeasure和onLayout里去处理Margin,因为子控件写margin之后,必然会让自定义ViewGroup的宽高受到影响(所以onMeasure需要处理)子控件写margin之后,自定义ViewGroup在摆放这些子控件时候,必须考虑到margin,才能摆放到正确的位置但...

2019-12-02 14:27:16 610

原创 秒懂OnLayout

结论onLayout方法就是按照自己的意愿,把每个子控件排列起来,核心代码是通过layout()函数来设置子控件的位置。应用1. 接着上文完成MyLinearLayout (竖向的LinearLayout)上文已经通过重写onMeasure支持了的AT_MOST模式,还差重写onLayout就完成自定义ViewGroup了 @Override protected void...

2019-12-02 12:11:51 456

原创 秒懂OnMeasure

我感觉之所以写不好自定义view,是因为我们了解的自定义View的基础知识知道的太少,但是在了解自定义view的基础知识的过程中,又很容易被源码带跑偏,找不到重点,结果是看了很多源码,云里雾里等于没看。很多时候,源码是很重要,但是不懂适可而止的看源码,你就陷入了汪洋大海。例如:初中几何里老师讲了“两点之间、直线最短”这个公理后,我们就可以做很多几何题目了,做的过程中还很爽,但是老师没讲“两点...

2019-12-01 20:05:14 301

转载 热修复原理浅析(二)

了解热修复,需要有点预热的知识,先从class文件和dex文件说起class文件和dex文件class文件什么是class文件他是一种文件格式简单说,就是能被JVM虚拟机识别、加载、并执行的文件格式而且除了java语言,还有很多其他语言也可以编译出class文件,当然还有kotlin上图摘抄自【深入Java虚拟机】之二:Class类文件结构如何手动编译出一个class文件...

2019-08-06 15:13:35 185

转载 instagram授权流程(第一篇)

本篇介绍应用注册、授权官方文档,下一篇是demo演示写在前面的话你会惊奇地发现,整个授权的过程,竟然不需要集成sdk,甚至说,都几乎不用写代码,这与微信、新浪、QQ授权完全不同注册账号首先注册并登录你的Instagram账户注册账户注册你的应用Instagram开发者官方文档点击 右上角绿色按钮 Register a New Client如果你还没注册你的app,那...

2019-08-05 14:54:23 5115 2

转载 instagram授权流程(第二篇)

本文分客户端、服务端演示获取access_token的流程,上一篇介绍了账号注册、官方文档客户端demo(不推荐)准确讲,这不是个demo,把流程梳理一下而已1. 访问下面的网址,注意使用你的ID,你的重定向地址,其余不变https://www.instagram.com/oauth/authorize/?client_id=你的ID&redirect_uri=你的重定向...

2019-08-05 14:53:26 3220

原创 热修复原理浅析(一)

解决的问题刚发布就发现了严重的bug,需要及时修复有些小功能需要及时地推送给用户,例如淘宝双十一,搞了了点活动,想让用户马上就使用到,不需要用户去再次下载更新开始吧了解热修复,需要有点预备知识,先从class文件和dex文件说起class文件什么是class文件他是一种文件格式简单说,就是能被JVM虚拟机识别、加载、并执行的文件格式而且除了java语言,还有很多其他语言也...

2019-08-02 20:58:29 499

原创 Android滤镜效果ColorMatrix用法二

上一篇文章ColorMatrix的用法本质上就是改变颜色数组(4x5),我们可以直接改变这个数组,完成颜色过滤效果,常见的复古、清新、黑白,就是特定的数组元素搞定的 public static Bitmap handlerImagebyMatrixArray(Bitmap srcBitmap, float[] colorMatrixArray) { // *****...

2019-07-19 15:14:27 310

原创 Android:滤镜效果ColorMatrix用法一

直接上工具类代码注释写的很清楚了注意事项:先复制一张跟原图一模一样的bitmap,不能在原图上做修改★★★★★切记,不能使用colorMatrix.setRotate()连续设置各个通道的色调,这样的话,会让最后一个覆盖前面的效果,而是要通过postConcat混合多个ColorMatrixpackage performance.brilliant.com.bril...

2019-07-19 13:37:38 1876

原创 Camera开发—如何自定义相机

自定义摄像头预览功能github源码权限动态权限略<uses-permission android:name="android.permission.CAMERA" />代码使用SurfaceView这里不能使用普通的View,因为要实时地显示摄像头捕获到的图像,简单来说View适合被动刷新的情况,SurfaceView适合主动刷新(在子线程里),其余的不多说...

2019-07-17 17:35:15 521

原创 Camera开发—如何使用系统相机

如何使用系统相机一、最简单的方法(但是得到的图片分辨率很差)此方法不需要任何权限,因为调起来的是系统相机 private static int REQ_CODE = 1; mIv = findViewById(R.id.iv); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); s...

2019-07-17 17:34:38 424

原创 JNI 最佳实践

阅读本文前,请先阅读JNI-NDK 在AndroidStudio3.2.1版本集成方法(ndk-build方式)JNI相关概念的理解★代表难度等级★ 实践一:从C里返回String给java之前我们实现了从C代码里返回了一个字符串,代码如下:java代码,定义native函数public class Jni { static { System.load...

2019-06-17 08:39:38 276

原创 JNI相关概念的理解

阅读本文前,前先阅读 JNI-NDK 在AndroidStudio3.2.1版本集成方法(ndk-build方式),了解jni在AndroidStudio里的集成步骤概念Java 原生接口 (JNI):JNI 是 Java 和 C++ 组件用以互相通信的接口。理解JNI先说说JNIEnv现在说的是C里的JNIEnv,不是C++里的JNIEnv,有点区别,但是理解了C里的JNIEnv...

2019-06-14 14:57:01 161

原创 NDK 在AndroidStudio3.2.1版本集成方法

AndroidStudio3.2.1版本集成方法在java类里写个native方法 public class Java2CJNI { public native String java2C(); }javah 生成jni样式的标准头文件切换到src/main/java目录下执行javah -d ../jni ndkold.study.com.nd...

2019-06-10 14:27:22 491

原创 @Singleton能保证单例吗

scope里有个@Singleton,它能保证单例吗?答案是不完全能(或者是说是有条件的能)当你不使用@Singleton时,在同一个宿主类里,注入两次同一个类的对象你会发现,两个对象的地址不一样当你使用了@Singleton,在同一个宿主类里,注入两次同一个类的对象你会发现,两个对象的地址变得一样了但是使用了@Singleton后,此时你在另一个宿主内,再次注入两次同一个类...

2019-05-26 12:08:18 3165

原创 Dagger2之Kotlin写法

依赖项目的gradlebuildscript {ext.dagger_version = '2.11'}module的gradle//多模块项目,这个必须在使用到dagger2的所有moudle里都配置apply plugin: 'kotlin-kapt'dependencies { //dagger2,这个可以写在BaseMoudle里 api "com.go...

2019-05-24 16:13:51 858 1

原创 Gradle 自定义插件

自定义插件概述自定义Gradle插件主要有三种方式,分别是build.gradle中编写、buildSrc工程项目中编写、独立项目中编写Groovy、Java、Kotlin都可以作为实现插件的语言,在本文的示例中,使用Groovy作为实现语言。方法一:build.gradle中编写在实际工作中我们很少会在build.gradle中编写自定义插件,//使用插件apply p...

2019-05-06 10:18:55 368

原创 Gradle笔记

是什么:是一个编程工具做什么:构建项目的工具gradle执行流程图初始化阶段:首先执行setting.gradle文件,读出工程有几个project,为所有的project构建对象在配置阶段:解析所有projects对象中的task,生成有向无环图(task的依赖关系图)主要监听配置阶段,是gradle执行的核心执行阶段:执行所有task及其以来的task生命周期监...

2019-04-28 19:53:47 263

原创 pandas之Series

pandas之Series一维数据,带标签的数组1. 创建Series1.1 通过list 创建Series需要指定 data,index,data和index是list类型或者 np.aranges1 = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))s2 = pd.Series([1, 2,...

2019-04-08 15:15:29 207

原创 sql读取数据库,查询的数据转为dataframe

# 执行sql语句cs1.execute('select * from tabel_name')# 拿到所有数据data = cs1.fetchall()print(data)# 拿到所有数据的描述columnDes = cs1.descriptionprint(columnDes)# 通过描述,得到列名称columnNames = [columnDes[i][0] for...

2019-04-02 09:55:57 2979

原创 Django入门

安装官网链接Pip 安装pip install Django==2.1.7源码安装下载源码,进入源码的根目录执行 python setup.py install注意:支持Python 3+ 和 支持Python 2.7以上创建项目django-admin startproject [项目名称]项目的目录结构manage.py命令启动服务器python m...

2019-03-11 23:51:55 415

原创 Git学习笔记

安装git官网git下载Git命令查看版本git --version检查安装成功,查看版本,输出当前版本 git version 2.21.0配置名字git config --global user.name '[your_name]'配置名字(–global可以改为–local /–system)设置完—global,在设置—local后 ,优先使用—local的配置...

2019-03-03 11:21:56 230

原创 触摸事件分发

触摸事件##代码根布局public class RootLinearLayout extends LinearLayout { public RootLinearLayout(Context context) { super(context); } public RootLinearLayout(Context context, @Nullab...

2019-02-15 09:09:41 391

原创 Bintray上传Module到JCenter详细步骤(多图解释,不能再详细了)

Bintray网页操作注册(注册都是个坑)一定要在下面这个网址注册(个人账户)https://bintray.com/signup/oss不要在这里注册 https://bintray.com(这是公司组织注册的账户)用github或者谷歌邮箱注册,不能使用国内邮箱创建一个组织在该组织下创建仓库至此,组织–&amp;amp;amp;amp;amp;amp;amp;gt;仓库 创建好了获取key和user拿到这...

2018-12-27 15:11:58 1645 3

原创 实现类似猫眼影片详情页电影海报滚动效果(RcyclerView+LinearSnapHelper )

Github (前一篇ViewPager实现和本篇的代码,都在这个项目)效果 第一行为ViewPager实现效果 第二行为RcyclerView+LinearSnapHelper 实现效果重点LinearSnapHelper是什么 LinearSnapHelper是一个让 RcyclerView在滑动scroll、快速滑动fling过程中,使得最后停止在一个Item的中间

2018-01-03 11:41:12 3246 2

原创 实现类似猫眼影片详情页电影海报滚动效果(ViewPager 两侧显示相邻item)

本文参考(ViewPager画廊效果)仿淘票票影院影片选择 这种实现方法比较简单,但是并不能像是淘票票、猫眼的电影画廊那样,一下子滚动多个item,因为ViewPager本质上就是一次只能划过一个item(此外这种方法,必须设置所有的条目作为缓存mViewPager.setOffscreenPageLimit(TOTAL_COUNT),这样性能低) 一次划过多个item,需要使用

2018-01-03 09:18:19 3457

原创 好文索引

每次遇到好的文章,看完之后,虽然存在了收藏夹,但是找起来依然很麻烦,今天建立一个索引,便于以后翻阅,不断完善中…Activity 你应该知道的Activity状态的保存与恢复广播与服务ANDROID-当网络发生变化时使用BroadcastReceiver和service通知AndroidStudio AndroidStudio个性化—加个图片当背景吧!

2017-12-21 09:44:50 367

原创 AndroidStudio之更换SVN

将项目根目录中的隐藏文件.svn删除(mac下查看隐藏文件快捷键command+shift+.)打开项目中.idea文件夹下的vsc.xml文件,将<?xml version="1.0" encoding="UTF-8"?><project version="4"> <component name="VcsDirectoryMappings"> <mapping directory=

2017-10-18 11:41:36 862

原创 CoordinatorLayout+AppBarLayout+appbar_scrolling_view_behavior

CoordinatorLayout、AppBarLayout和appbar_scrolling_view_behavior,三者必须联合使用 CoordinatorLayout用于协调子布局嵌套滑动(实现了NestedScrollingParent接口) AppBarLayout是google默认实现的一种配合嵌套滑动的控件,用于在头部显示,必须是CoordinatorLayout的直接

2017-08-17 11:20:55 2840

转载 新版Bintray下将Android Library 开源到JCenter 的正确姿势

转载 新版Bintray下将Android Library 开源到JCenter 的正确姿势Android Studio提交库至Bintray jCenter从入门到放弃

2017-07-24 13:15:21 421

原创 Gradle多渠道打包

为何要多渠道打包简单来说就是为了统计apk在不同的应用市场上下载使用的情况。如果我们在不同的应用市场(例如:应用宝、豌豆荚、小米),上传的是同一个apk包,那么将无法统计哪一个应用市场的下载量大,使用的活跃度高 专业地讲:统计和分析流量来源、内容使用、用户属性和行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。单渠道打包使用友盟统计和分析流量来源通过集成友盟sdk实现渠道统计,具体集

2017-07-19 14:17:38 694

原创 手写RecyclerView下拉刷新

思路RealPullRefreshView继承了一个LinearLayout里面放置了一个刷新头布局,将其margin_top设置为负的刷新头的高度的再添加一个RecyclerView触摸事件分发机制,当在特定条件下让RealPullRefreshView拦截触摸事件,否则的话,不拦截,让RecyclerView自己去处理触摸事件在手指下拉时,定义好不同的状态STATE,在不同状态下,处理

2017-07-15 10:56:49 717

原创 处理滑动冲突:外部拦截标准模板

Android开发艺术探索package com.example.apple.quickdemo.realview;import android.content.Context;import android.support.annotation.Nullable;import android.support.v7.widget.LinearLayoutManager;import androi

2017-07-07 17:01:15 404

广播和服务

绑定服务、发送有序广播、服务里代码注册广播

2016-06-19

RecyclerView上下拖动条目排序,左右划出屏幕删除条目的最简单的实现

ItemTouchHelperAdapter

2016-05-31

仿微信多选照片,GridView展示所选择图片,PhotoView可预览

仿微信多选照片,GridView展示所选择图片,PhotoView可预览

2016-03-26

如何写上下文菜单

上下文菜单(即某个视图被长按时弹出的菜单,类似于电脑上的右键菜单)

2015-06-29

如何写自定义菜单

点击菜单键,弹出一个popwindow,自定义的菜单界面

2015-06-29

如何写菜单

本文介绍了菜单的基本写法,后面有自定义菜单和上下文菜单的介绍

2015-06-29

下拉刷新上拉加载控件 pullrefreshlistviewdemo

本文详细讲解了下拉刷新、上拉加载控件的写法,注释很详细

2015-06-27

HorizontalScrollView和ViewPager联动效果

HorizontalScrollView和ViewPager联动效果,实现点击顶部标签下面内容切换

2015-06-19

下拉刷新上拉加载(使用第三方控件)

很好的第三方控件,支持下拉刷新上拉加载 支持滚到底部自动加载及手动上拉才刷新的选择

2015-06-17

GridView的标准写法

基本的GridView写法,很简单的写法,要写20个字

2015-06-17

轮播图的写法之二(功能全实现)

/** * 1.实现了轮播图自动滚动效果<br> * 2.设置了跟随页面变化的小点点<br> * 3.解决了轮播图手指滑动后,显示页面错位的问题<br> * 4.实现了手指按住轮播图时,停止自动滚动的效果<br> * 5.实现了点击轮播图,跳转到相关页面的操作<br> */

2015-06-17

轮播图的写法之一(基本写法)

使用ViewPager实现轮播图,最基本的写法

2015-06-17

空空如也

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

TA关注的人

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