追踪源码抄袭android的xml转drawable代码实现recyclerview分割线-用代码是些shape selector 等等方案都在这里啦。...

本文主要是介绍追踪源码抄袭android的xml转drawable代码实现recyclerview分割线-用代码是些shape selector 等等方案都在这里啦。...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

追踪源码找到了这句话,所以也可以理解为什么网上要那样写了.这其实官方就是这样写的。
那么我接下来就要手写一个recyclerview的shape分割线

public static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs,Theme theme) throws XmlPullParserException, IOException {final Drawable drawable;final String name = parser.getName();switch (name) {case "selector":drawable = new StateListDrawable();break;case "animated-selector":drawable = new AnimatedStateListDrawable();break;case "level-list":drawable = new LevelListDrawable();break;case "layer-list":drawable = new LayerDrawable();break;case "transition":drawable = new TransitionDrawable();break;case "ripple":drawable = new RippleDrawable();break;case "color":drawable = new ColorDrawable();break;case "shape":drawable = new GradientDrawable();break;case "vector":drawable = new VectorDrawable();break;case "animated-vector":drawable = new AnimatedVectorDrawable();break;case "scale":drawable = new ScaleDrawable();break;case "clip":drawable = new ClipDrawable();break;case "rotate":drawable = new RotateDrawable();break;case "animated-rotate":drawable = new AnimatedRotateDrawable();break;case "animation-list":drawable = new AnimationDrawable();break;case "inset":drawable = new InsetDrawable();break;case "bitmap":drawable = new BitmapDrawable(r);if (r != null) {((BitmapDrawable) drawable).setTargetDensity(r.getDisplayMetrics());}break;case "nine-patch":drawable = new NinePatchDrawable();if (r != null) {((NinePatchDrawable) drawable).setTargetDensity(r.getDisplayMetrics());}break;default:throw new XmlPullParserException(parser.getPositionDescription() +": invalid drawable tag " + name);}drawable.inflate(r, parser, attrs, theme);return drawable;}

实现shape

*///在这里我们传入作为Divider的Drawable对象mDrawable = new GradientDrawable();RectShape rectShape = new RectShape();mDrawable.setGradientType(GradientDrawable.RECTANGLE);int size = DensityUtil.dip2px(context, 0.5f);mDrawable.setSize(size,size);mDrawable.setColor(Color.parseColor(colorHex));

实现selector

public static StateListDrawable genereateSelectorDrawable(Context context, int idNormal, int idPressed, int idFocused, int idUnable) {StateListDrawable bg = new StateListDrawable();Drawable normal = idNormal == -1 ? null : context.getResources().getDrawable(idNormal);Drawable pressed = idPressed == -1 ? null : context.getResources().getDrawable(idPressed);Drawable focused = idFocused == -1 ? null : context.getResources().getDrawable(idFocused);Drawable unable = idUnable == -1 ? null : context.getResources().getDrawable(idUnable);// View.PRESSED_ENABLED_STATE_SETbg.addState(new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled}, pressed);// View.ENABLED_FOCUSED_STATE_SETbg.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_focused}, focused);// View.ENABLED_STATE_SETbg.addState(new int[]{android.R.attr.state_enabled}, normal);// View.FOCUSED_STATE_SETbg.addState(new int[]{android.R.attr.state_focused}, focused);// View.WINDOW_FOCUSED_STATE_SETbg.addState(new int[]{android.R.attr.state_window_focused}, unable);// View.EMPTY_STATE_SETbg.addState(new int[]{}, normal);return bg;}

接下来如何创建可以自行百度。

这篇关于追踪源码抄袭android的xml转drawable代码实现recyclerview分割线-用代码是些shape selector 等等方案都在这里啦。...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959184

相关文章

selenium自动追踪微信小程序审核方案

小程序随着腾讯的不断推广,变的越来越普及,同时更新迭代的速度也越来越快,种类越来越多,那么在如何保证时效性就显得尤为重要,其中很重要一个环节就在于小程序审核通过之后,能否立刻通知到相关技术人员进行发布成为一件麻烦事,因为有些公司的发布权限在运营而非主要负责的开发人员手中,这时候就需要自动化测试工具出手了!     场景:A公司,有多个技术团队,每个团队已研发出多个小程序or小游戏,并不断

[SCF+wetest+jmeter]云性能压测工具使用方案

前言 压测太难?局域网压力无法判断服务器网络指标?无法产生非常大的并发量?云性能太贵? 也许我们可以把各种简单的工具拼起来进行压力测试! 准备 https://cloud.tencent.com/product/scf https://cloud.tencent.com/product/lm 云压测背景 常规压测工具,所有请求均从本地出发,走局域网可能导致网络请求的实际效果不够真实

关于百度map API for Android的mobile ak 102错误

一共有三个sha1值需要比对: 第一个是 sha1值是http://developer.baidu.com/map/sdkandev-14.htm 里面获得的sha1值(包括里面的cmd和界面的两种获取sha1值得方法) 第二个是 sha1值是打包好apk文件中META-INF 文件夹的CERT.RSA中的sha1值。http://bbs.lbsyun.baidu.com/vi

android SlidingDrawer左右滑动 上下滑动

android SlidingDrawer这个控件,目前我发现的移动方向是  从下到上滑动  或者 从右到左滑动! 1.从下到上滑动,只需要把标签slidingdrawer中的android:orientation="vertical" 其他不变即可  (但是有一点说明 就是 不知道怎么从  上到下  滑动) 2.从右到左滑动,只需要把标签slidingdrawer中的android:orie

AsyncTask类(Android)

这个计数器程序很简单,它在界面上有两个按钮Start和Stop。点击Start按钮时,便会创建一个CounterTask实例task,然后调用它的execute函数就可以在应用程序中启动一个子线程,并且通过调用这个CounterTask类的doInBackground函数来执行计数任务。在计数的过程中,会通过调用publishProgress函数来将中间结果传递到onProgressUpdate函

三种主流web服务实现

目前知道的三种主流的Web服务实现方案为:   REST:表象化状态转变 (软件架构风格)   SOAP:简单对象访问协议   XML-RPC:远程过程调用协议   下面分别作简单介绍:   REST:表征状态转移(Representational State Transfer),采用Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有

论文Android杂记录

fragment是3.0以后的东西,为了在低版本中使用fragment就要用到android-support-v4.jar兼容包,而fragmentActivity就是这个兼容包里面的,它提供了操作fragment的一些方法,其功能跟3.0及以后的版本的Activity的功能一样。 下面是API中的原话: FragmentActivity is a special activity provide

iOS 逆向常用代码片段

1、在导航条上添加按钮 UINavigationItem *navigatItem = [self performSelector:@selector(navigationItem)];UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"群助手" style:UIBarButtonItemSt

Android JNI开发五: JNI字符串的处理

JNI 字符串处理 1. NewStringUTF 创建字符串 jstring NewStringUTF(const char *utf) {return functions->NewStringUTF(this,utf);}参数说明:-utf: 字符串说明:通过调用NewStringUTF函数,会构建一个新的java.lang.String字符串对象。这个新创建的字符串会自动转换成Java

spring_hibernate.xml配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schem