安卓UI界面
安卓工匠
工匠精神
展开
-
materialRefreshLayout 下拉刷新
谈一谈下拉刷新下拉刷新不再是很高大上的东西了,Android应用必不可少的一个存在,大部分的下拉刷新都是基于基本组件的如:ListView,GridView之类的,不同的组件用的布局是不一样的,虽然功能强大,但是难免切换来切换去会烦。Google考虑到这一点,在V4的包中给我们提供了一个简单且牛逼的组件库就是SwipeLayout。SwipeLayout是从ViewGroup的层面上动刀,不再依转载 2017-09-08 10:49:08 · 301 阅读 · 0 评论 -
多个SurfaceView层叠显示问题
当场景中有多个SurfaceView的时候,上层的SurfaceView可能会被下层的遮挡,这个时候需要使用setZOrderOnTop(true)或者setZOrderMediaOverlay(true)来控制SurfaceView的显示层次。Android SDK对两个函数的描述:public void setZOrderOnTop ...转载 2018-05-30 16:25:55 · 4420 阅读 · 0 评论 -
Android Layout 布局属性全解
写的挺全,mark一下Android Layout 布局属性全解Android有基本Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout,AbsoluteLayout。android开发者谷歌文档http://android.xsoftlab.net/reference/android/view/ViewGrou...转载 2018-05-30 16:17:34 · 26852 阅读 · 0 评论 -
Rxjava应用(1)_去View抖动
最近项目里有个点赞的功能需求,发现当用户对一条评论反复点赞的速度过快时,会引起轻微的数据错乱。对一条评论不停的点赞,评论数本应在+1和-1之间不断循环的,但是点赞/取消点赞的时候需要进行网络请求,将点击结果上传到服务器,所以点多了之后,由于延时的原因,会出现某些+1或-1操作会失效,具体表现为,对一个初始赞数为0的评论进行这样一波疯狂操作后,点赞总...转载 2018-05-29 17:14:18 · 199 阅读 · 0 评论 -
安卓中自定义控件心得(1)—选用SurfaceView还是View问题
问题:在自定义控件中,我们可以集成view或者SurfaceView,我们什么时候使用View,什么时候使用SurfaceView呢?View: 使用情景:如果没有动态效果,或者动画效果比较简单,使用View最合适不过了 线程:在主线程中绘制,所以在不影响UI线程的情况下比较适用。假如我们的自定义控件有连续不断的动画,这样就会比较频繁的占用主线程,当我们再做其在主线...原创 2018-05-29 14:48:55 · 239 阅读 · 0 评论 -
Android中SurfaceView使用详解
1.什么是SurfaceView? Surface意为表层、表面,顾名思义SurfaceView就是指一个在表层的View对象。为什么说是在表层呢,这是因为它有点特殊跟其他View不一样,其他View是绘制在“表层”的上面,而它就是充当“表层”本身。SDK的文档 说到:SurfaceView就...原创 2018-05-29 14:31:28 · 315 阅读 · 0 评论 -
Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了。但是,正如上篇文章当中所说到的,属性动画对补间动画进行了很大幅度的改进,之前补间动画可以做...转载 2018-05-23 16:34:39 · 114 阅读 · 0 评论 -
Android属性动画完全解析(上),初识属性动画的基本用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame ...转载 2018-05-23 16:31:25 · 189 阅读 · 0 评论 -
自定义控件(4):文字的绘制
这篇是Android开发进阶,自定义View系列的第三篇了,如果你没看过前两篇,可以先去看一下: Android 开发进阶: 自定义 View 1-1 绘制基础 Android 开发进阶: 自定义 View 1-2 Paint 详解简介上期的 Paint 详解里已经说过,文字的绘制所能控制的内容太多太细,必须拆成单独的一期专门来讲。今天这期,就是来把这...转载 2018-05-27 16:06:37 · 268 阅读 · 0 评论 -
安卓中自定义控件心得(2)--如何获取我们activity根View的背景色,可以用于SurfaceView的背景设置
直接看代码吧,我用的反射int childs = ((ViewGroup) getWindow().getDecorView()).getChildCount(); Drawable mDrawable = (Drawable) getWindow().getDecorView().getBackground(); if (mDrawable != nul...原创 2018-05-30 18:27:35 · 1400 阅读 · 0 评论 -
Activity的onAttachedToWindow和onDetachedFromWindow调用时机源码解析
终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~先上测试代码:MyView.java[java] view plain copy print?import android.content.Context; import android.u...转载 2018-06-06 18:08:15 · 1021 阅读 · 1 评论 -
Android 获取 View 宽高的常用正确方式,避免为零
Android 获取 View 宽高的常用正确方式,避免为零相信有很多朋友都有过在 Activity 中通过 getWidth() 之类的方法获取 View 的宽高值,可能在 onCreate() 生命周期方法中,也可能在 onResume() 生命周期方法中。然而,不幸的是,并不能获取所要的结果,宽高值均为 0。如果对 View 的绘制显示流程熟悉的话,就会知道问题所在。我们知道,在自定义 ...转载 2018-08-20 11:55:59 · 139 阅读 · 0 评论 -
安卓shape_百变控件形状
很多时候,使用shape能够实现的效果,你用一张图片也能够实现,但问题是一张图片无论你怎么压缩,它都不可能比一个xml文件小,因此,为了获得一个高性能的手机App,我们在开发中应该遵循这样一个原则:能够用shape实现的效果尽量不使用图片来实现。今天我们就一起来看看shape的使用。首先,使用shape画的图形,这个xml文件的根节点是shape,如下: [java]&nbs...转载 2018-08-08 10:16:05 · 405 阅读 · 0 评论 -
ConstraintLayout 详解
本文已在我的公众号hongyangAndroid原创首发。 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/78011599 本文出自张鸿洋的博客 本文已在我的公众号hongyangAndroid原创首发,文章合集。一、概述ConstraintLa...转载 2018-07-12 09:14:14 · 172 阅读 · 0 评论 -
安卓悬浮窗
iPhone有个很好用的白色圆点,今天就来研究下Android中的悬浮框,这里主要是实现一个快捷键的功能,当然也可以在悬浮框中做想做的事! 悬浮窗的实现主要是通过WindowManager实现,当然WindowManager只是一个接口,想了解源码的同志们可以去看WindowManagerImpl,悬浮框主要是通过Wi...转载 2018-07-17 11:52:12 · 1669 阅读 · 0 评论 -
Android控件--TextureView
1、简介应用程序的视频或者opengl内容往往是显示在一个特别的UI控件中:SurfaceView。SurfaceView的工作方式是创建一个置于应用窗口之后的新窗口。这种方式的效率非常高,因为SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(android普通窗口的视图绘制机制是一层一层的,任何一个子元素或者是局部的刷新都会导致整个视图结构全部重...转载 2018-06-20 10:28:05 · 3063 阅读 · 0 评论 -
Scroller使用详解
一、概述这个类封装了滚动操作。滚动的持续时间可以通过构造函数传递,并且可以指定滚动动作的持续的最长时间。经过这段时间,滚动会自动定位到最终位置,并且通过computeScrollOffset()会得到的返回值为false,表明滚动动作已经结束。二、构造函函数public Scroller (Context context)使用缺省的持续持续时间和动画插入器创建一个Scroller...转载 2018-06-08 18:59:26 · 1289 阅读 · 0 评论 -
Android如何绘制视图,解释了为何onMeasure有时要调用多次
原文地址:How Android Draws Views当Activity获取焦点的时候,它就需要绘制布局。Android框架会处理绘制过程,但这个Activity必须提供它布局树的根节点。绘制过程是从布局的根节点开始的。这个过程需要测量和绘制布局树。绘制过程是通过遍历树和渲染每个与绘制区域相交的视图来处理的。接下来,ViewGroup职责就是请求它的每个...翻译 2018-05-31 17:26:46 · 394 阅读 · 0 评论 -
Android Camera 3D效果
版本:1.0日期:2014.4.14版权:© 2014 kince 转载注明出处一、概念 在Android中要想实现3D效果,第一个想到的应该就是OpenGL ES,因为在很多基础教材中几乎都提到了它。但是其使用起来还是稍微麻烦一些,而且它也主要用在游戏方面,那在应用方面有没有更好的选择...转载 2018-06-21 17:43:30 · 456 阅读 · 0 评论 -
Material Design实战之悬浮按钮和可交互提示
Material Design实战之ToolBarMaterial Design实战之滑动菜单1. FloatingActionButtonFloatingActionButton是Design Support库中提供的一个控件,这个控件可以帮助我们轻松的实现悬浮按钮的效果。它默认会使用colorAccent来作为按钮的颜色,还可以通过给按钮指定一个图标来表明这个按...转载 2018-05-22 17:53:10 · 323 阅读 · 0 评论 -
ConstraintLayout 完全解析 快来优化你的布局吧_布局神器
本文已在我的公众号hongyangAndroid原创首发。 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/78011599 本文出自张鸿洋的博客 本文已在我的公众号hongyangAndroid原创首发,文章合集。一、概述ConstraintLa...转载 2018-05-17 16:45:13 · 290 阅读 · 0 评论 -
Android中“android:elevation”设置阴影无效问题
今天在Android界面的设计中遇到一个问题,我想要用elevation设置阴影效果,也就是对某个View添加android:elevation,但是没有效果,解决办法是必须给这个view设置 background ,这样就会出来阴影的。解释: 据说是因为透明的view是没有阴影的,必须设置background以后,才会有阴影...原创 2018-05-20 15:44:35 · 6781 阅读 · 0 评论 -
安卓统一添加activity切换动画
安卓统一添加activity切换动画作者微博:攻城师sloop背景说明在实际 的应用开发过程中各种动画的使用不仅能使用户感觉起来更加流畅而且合适的动画效果可以帮助用户快速的熟悉应用操作,对提升用户体验来说,动画是必不可少的。在安卓2.0之后,安卓提供了一个很方便的API用来设置安卓界面切换动画:overridePendingTransition(EnterAnim, ExitAnim...转载 2018-05-18 10:53:13 · 260 阅读 · 0 评论 -
RecycleView实现拖拽效果
以下是RecyclerView结合ItemTouchHelper实现的列表和网格布局的拖拽效果。效果图如下:(gif图有点顿卡,其实运行是很流畅的) demo下载地址: DragRecyclerView如何实现那么是如何实现的呢?主要就要使用到ItemTouchHelper ,ItemTouchHelper 是support-v7包中加入的一个帮助开发人员处理拖拽和滑动的实现类,它能够让你非常容易转载 2017-10-10 10:22:14 · 795 阅读 · 0 评论 -
安卓自动滚动自定义控件
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/48719871 2016大家新年好!这是今年的第一篇文章,那么应CSDN工作人员的建议,为了能给大家带来更好的阅读体验,我也是将博客换成了宽屏版。另外,作为一个对新鲜事物从来后知后觉的人,我终于也在新的一年里改用MarkDown编辑器来写博客了,希望大家在我的博客里也能体验到新年新的转载 2017-09-27 14:47:05 · 1604 阅读 · 0 评论 -
图片加载
Android四大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比 四大图片缓存基本信息Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用。 Picasso 是 Square 开源的项目,且他的主导者是 JakeWharton,所以广为人知转载 2017-09-19 12:16:53 · 411 阅读 · 0 评论 -
2017安卓最全框架
Android开源框架系列Android开源项目Android开发常用开源框架2Android开发常用开源框架3GitHub上最火的Android开源项目,所有开源项目都有详细资料和配套视频2017年伊始,你需要尝试的25个Android第三方库Android开发常用第三方平台免费的计算机编程类中文书籍free-programming-booksMark!Android最佳的开源库集锦移动开发周刊转载 2017-09-26 20:08:24 · 5379 阅读 · 1 评论 -
下拉刷新的库
BeautifulRefreshLayoutGitHub小伙伴交流群” 477826523,很难进的哦!众多优秀的下拉刷新(除了我写的之外T_T)说起下拉刷新,好像经历一段历史的洗礼。。。(1)在我刚学android的时候,用的是XListView,在github上搜索有MarkMjw/PullToRefresh,根据Maxwin的XListView改造而来,完善下拉刷新上拉加载更多的功能并实现自转载 2017-09-08 11:12:13 · 278 阅读 · 0 评论 -
MaterialRefreshLayout v1.4.0
MaterialRefreshLayout v1.4.0这是一个下拉刷新控件,它比SwipeRefreshLayout更漂亮和强大,使用也比较简单。支持android 3.0 以上。希望你喜欢,呵呵。现在让我来说说他有多牛逼的功能吧,其实也就那样……gif图录制的很奇怪,建议真机查看,啊哈哈哈(1)如果你喜欢官方的刷新效果,没问题,它也可以做到,这是一种侵入式的下拉刷新(2)然而,有些人并不喜欢侵入转载 2017-09-08 11:03:24 · 406 阅读 · 0 评论 -
安卓中使用SVG矢量图
GitHubDemo:https://github.com/xwpeng/TestSVG1. 基础 SVG:Scalable Vector Graphics,可伸缩矢量图形.矢量图:记录图像绘制的规定信息,根据这些信息绘制图片,如用数学函数记录.具有可伸缩,不失真,体积小的特性.由于是根据规定信息绘制图片,复杂的图片描述起来很困难,适用于简单规则的图...转载 2018-05-20 21:14:20 · 3000 阅读 · 1 评论 -
安卓中给控件或者Activity等组件设置主题的作用
1、首先给控件设置主题设置方法在xml文件中设置: <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="0dp" android:layout_height="wrap_content" ...原创 2018-05-21 00:28:19 · 1047 阅读 · 0 评论 -
SVG_SVG动画案例
尊重原创,欢迎转载,转载请注明: FROM GA_studio http://blog.csdn.net/tianjian4592 一个真正酷炫的动效往往让人虎躯一震,话不多说,咱们先瞅瞅效果:————————————————–...转载 2018-05-22 09:25:35 · 6711 阅读 · 0 评论 -
SVG适配_使用反射获取自定义属性中TypedArray中的资源ID
对SVG不熟悉的同学可以查看 SVG详解我们在自定义属性的时候代码如下: <com.lj.schedule.ui.view.RichTextClock android:layout_width="wrap_content" android:layout_height="40dp" android:layout_marginBott...原创 2018-05-22 09:12:07 · 864 阅读 · 0 评论 -
自定义控件-Paint(3)_详解Paint的setShader(Shader shader)
概述我们在用Android中的Canvas绘制各种图形时,可以通过Paint.setShader(shader)方法为画笔Paint设置shader,这样就可以绘制出多彩的图形。那么Shader是什么呢?做过GPU绘图的同学应该都知道这个词汇,Shader就是着色器的意思。我们可以这样理解,Canvas中的各种drawXXX方法定义了图形的形状,画笔中的Sh...转载 2018-05-25 19:58:26 · 1208 阅读 · 2 评论 -
使用 colorPrimary 来给你的 App Bar 上色
伴随Android5.0+之后,除了新增一些ToolBar、recyclerview、cardview等控件,MD的设计,App样式也改变了一些。 事实上,AppCompat 使用了提供一个调色板(color palette [2])的技术让这一切变得非常容易。虽然 ...原创 2018-05-21 19:35:26 · 701 阅读 · 0 评论 -
自定义控件-(2)_神奇的Fading Edge,让你的View更有层次感!
最近在研究Android Framework层源码,发现我们对源码的理解应该建立在对API的理解之上,如果有一些API你没用过,那么即使你在源码中见到这个东西都不知道是干嘛的,更谈不上理解了。一直以来我都很想把View的绘制方法draw详细的走一遍,但是这里涉及到的细节问题是在是太多了,因此,今天我们还是先来看看Fading Edge,为draw方法详解继续打基础...转载 2018-05-25 10:09:33 · 466 阅读 · 0 评论 -
自定义控件-图像绘制(1)_Canvas详解
Canvas所提供的各种方法根据功能来看大致可以分为几类:第一是以drawXXX为主的绘制方法;第二是以clipXXX为主的裁剪方法;第三是以scale、skew、translate和rotate组成的Canvas变换方法;最后一类则是以saveXXX和restoreXXX构成的画布锁定和还原;还有一些其他的就不归类了。&nbsp;如果用到的不能硬件加速的方法,请务必关闭硬件加速,...转载 2018-05-25 09:51:28 · 435 阅读 · 0 评论 -
Android自定义属性的理解
一个Android开发者总会遇到自定义控件的问题。要学会自定义控件的开发,最好的方法是将要用到的知识点一个个掌握。当掌握这些分散的知识点就意味着写一个自定义控件会变得容易。本篇文章是对自定义属性的探究。a、如何自定义属性在res/values中的attrs.xml中自定义属性。<declare-styleable name="TestVi...转载 2018-05-21 10:39:03 · 854 阅读 · 0 评论 -
Android 沉浸式状态栏攻略 让你的状态栏变色吧
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/48649563; 本文出自:【张鸿洋的博客】一、概述近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客效果下图:关于这个状态栏变色到底叫「Immersive Mode」/「Translucen...转载 2018-05-19 13:31:52 · 141 阅读 · 0 评论 -
Android 带你彻底理解 Window 和 WindowManager
有时候我们需要在桌面上显示一个类似悬浮窗的东西,这种效果就需要用 Window 来实现,Window 是一个抽象类,表示一个窗口,它的具体实现类是 PhoneWindow,实现位于 WindowManagerService 中。相信看到 WindowManagerService 你会有点眼熟,刚接触 Android 时几乎...转载 2018-08-20 17:34:46 · 5262 阅读 · 0 评论