高级UI
songjihang
用心做好一件事
展开
-
RecyclerView基础
一、RecyclerView是什么 RecyclerView从2014年发布到现在已经很长时间了,使用已经相当普遍。它是support.v7包中的控件,谷歌在高级版本提出一个新的替代ListView、GridView的控件,同样拥有item回收复用的功能。二、RecyclerView的优点 1.自带了性能优化:ViewHolder RecylerView封装了viewholder的回收复用,也原创 2017-02-16 13:54:26 · 602 阅读 · 0 评论 -
Canvas
Canvas的使用以及高级部分 Canvas:画布、画板。 一、Canvas基本的使用 绘制直线、点、几何图形、曲线、Bitmap、圆弧等等 Path路径来绘制线条1.Region区域Canvas画布的正确的理解: 1)当canvas执行drawXXX的时候就会新建一个新的画布图层 canvas.drawRect(r, paint); 2)虽然后面新建了原创 2017-02-18 18:18:02 · 573 阅读 · 0 评论 -
滤镜和颜色通道
《滤镜效果和颜色通道过滤》1.自定义控件 2.动画–属性动画、补间动画、自绘动画(ValueAnimator+onDraw) 3.渲染效果–高级渲染、滤镜效果、颜色通道过滤(矩阵变换–高等数学,颜色矩阵)一、矩阵简述 1、定义 M*n矩阵。2、矩阵乘法 它的意思就是将第一个矩阵A的第一行,与第二个矩阵B的第一列的数字分别相乘,得到的结果相加,最终的值做为结果矩阵的第(1,1)位置的值(原创 2017-02-18 18:09:14 · 957 阅读 · 0 评论 -
画笔Paint
一、Paint的基本实用方法和技巧 1 .负责图形绘制相关 //重置 mPaint.reset(); mPaint.setColor(Color.RED); mPaint.setAlpha(255); //设置画笔的样式// mPaint.setStyle(Paint.Style.FILL);//填充内容// mPaint.setStyle(Paint原创 2017-02-18 17:53:07 · 439 阅读 · 0 评论 -
View的事件传递
在很多的滑动控件嵌套的情况下经常会出现滑动事件冲突等等。 在自定义控件的时候,需要处理触摸、点击、滑动等事件,需要考虑父容器的这些事件的冲突问题。 如何学习? 要处理view的事件就必须详细了解事件传递的流程,虽然view在处理事件传递的机制围绕的只是三点: 1.dispatchTouchEvent:事件分发 2.onInterceptTouchEvent事件拦截原创 2017-02-18 17:03:25 · 584 阅读 · 0 评论 -
自定义动画框架
在开发中,为了实现某些固定可配置的动画,即在布局中实现进行配置(或者在代码中配置)就可以完成的某些动画框架。 其实,说白了也就是自定义特殊控件,在控件中处理一些常用可规范的动画效果,比如:随着滑动而伴随的加速减速显现、缩放、透明度等效果。 做一个自己封装好的效果需要考虑:便于使用和重用;便于配置;实现的思路: (1)自定义view (2)设置可选择的配置参数 (3)处理动画实现的方式:原创 2017-02-18 16:32:04 · 390 阅读 · 0 评论 -
MaterialDesign之SVG
引导:微信引入的SVG技术。 http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207863967&idx=1&sn=3d7b07d528f38e9f812e8df7df1e3322&scene=4#wechat_redirect一.概念 1.SVG,即Scalable Vector Graphics 可伸缩矢量图形,这种图像格式在前端中已原创 2017-02-17 23:26:00 · 509 阅读 · 0 评论 -
MaterialDesign动画
1.Touch Feedback(触摸反馈) 例子:水波纹效果 水波纹效果是5.0+自带的。<Button android:layout_width="wrap_content" android:layout_height="100dp" android:text="@string/hello_world" /> <Butt原创 2017-02-17 23:08:37 · 380 阅读 · 0 评论 -
属性动画
一、属性动画 什么是属性动画: 属性动画是从3.0及以后出现的(如果要兼容低版本,可以使用一个民间版第三方的一个jar NineOldAndroid.jar,用法跟系统的用法差不多)。 不断地控制控件的属性变化达到动画的效果,一般我们是一些组合的属性动画达到复杂的效果。以前都是:补间动画BetweenAnimation、帧动画FrameAnimation 比较之前的View动画,属性动画更加原创 2017-02-17 21:51:55 · 722 阅读 · 0 评论 -
MaterialDesign-沉浸式设计
一、什么是沉浸式? 官方的沉浸式Translucent:就是让整个APP沉浸(充斥了整个屏幕)在屏幕里面,没有显示状态栏,甚至没有显示底部导航栏。 平时大家所讨论的沉浸式:比如QQ的顶部Toolbar和状态栏程一体的颜色。二、StatusBar兼容开发(状态栏) 1、 5.0以上的 API 5.0+自动实现了沉浸式效果,状态栏的颜色跟随你的主题里面的colorPrimaryDark属性。原创 2017-02-17 14:25:23 · 843 阅读 · 0 评论 -
TabLayout
一、什么是TabLayout 1.以前使用TabHost。比如网易新闻客户端那样可以滑动的标题栏。 android.support.design.widget.TabLayout使用场景: TabLayout控件,切换Fragment TabLayout+ViewPager+Fragment 二、使用1.引入Design兼容包 2.设置属性app:tabIndicatorColor="@c原创 2017-02-17 14:01:06 · 739 阅读 · 0 评论 -
Palette调色板
一、什么是Palette 1.Palette:可以在一张图片里面分析出一些色彩特性:主色调、鲜艳的颜色、柔和颜色等等……比如: 引入v7里面的一个单独项目Palette: android.support.v7.graphics.Palette;二、使用BitmapDrawable drawable = (BitmapDrawable) iv.getDrawable(); Bit原创 2017-02-17 13:37:48 · 839 阅读 · 0 评论 -
Toolbar
MaterialDesign之Toolbar 一、简介 屏幕中的导航—顶部导航:android.support.v7.widget.Toolbar1.由于早期的触屏手机中苹果的设计和体验深入人心,在android中为了设计一种顶部导航的效果,谷歌干脆规范了顶部导航—ActionBar(3.0API,也有兼容包)。2.但是随着Android系统不断更新以及开发者在实际开发中,使用ActionBar原创 2017-02-17 11:50:05 · 531 阅读 · 0 评论 -
TextInputLayout
TextInputLayout是一个强大的带提示的MD风格的Edittext 看源码:TextInputLayout extends android.widget.LinearLayout<android.support.design.widget.TextInputLayout android:layout_width="fill_parent" android:原创 2017-02-17 10:35:56 · 468 阅读 · 0 评论 -
MaterialDesign介绍和初步使用
MaterialDesign介绍和初步使用一、关于Material Design 从Android5.0开始引入的,是一种全新的设计语言(翻译为“原材料设计”),其实是谷歌提倡的一种设计风格、理念、原则。 拟物设计:IOS最开始使用,是扁平化设计一种结合体验。还吸取了最新一些科技理念。 层次感:View Z轴 (比如按下去阴影效果,加强3D效果)1.对于美工:遵循MD的界面设计、图标合集。原创 2017-02-16 09:39:56 · 1030 阅读 · 0 评论 -
侧滑
以前是有民间的效果:SliddingMenu侧滑两种效果: 1.盖在整个页面上面; 2.在Toolbar下面。MaterialDesign的侧滑 在MD提出来以后,谷歌就收录并改变了很多开源项目,放到API及support包里面。实现方式:1.DrawerLayout 抽屉容器 来自support-v4包里面的(android.support.v4.widget),相当于一个自定义容器 ex原创 2017-02-16 16:46:35 · 340 阅读 · 0 评论 -
Snackbar
Snackbar:的提出实际上是界于Toast和Dialog的中间产物。 Toast: 用户无法交互; Dialog:用户可以交互,但是体验会打折扣,会阻断用户的连贯性操作; Snackbar既可以做到轻量级的用户提醒效果,又可以有交互的功能(必须是一种非必须的操作)。 public void showSnackbar(View v){ //LENGTH_INDEFINI原创 2017-02-16 23:19:07 · 329 阅读 · 0 评论 -
Path
一、Path工具类 用来记录线条的轨迹路径。 canvas.draw(path,paint);贝塞尔曲线 手机充电等等效果 现实生活当中:任何的曲线和曲面都可以用贝塞尔公式来解决。比如:iPhone 2.5D屏幕曲面;奥迪A9流线型;1.设计贝塞尔曲线或者贝塞尔曲线效果图 2.怎么去得到贝塞尔曲线的几个要素(比如二阶贝塞尔:p0初始位置,p1拐点,p2结束点) p1拐点如何确定,可以通过原创 2017-02-18 18:44:05 · 380 阅读 · 0 评论