Coder Social home page Coder Social logo

javanoober / backgroundlibrary Goto Github PK

View Code? Open in Web Editor NEW
3.8K 49.0 464.0 14.09 MB

A framework for directly generating shape through Tags, no need to write shape.xml again(通过标签直接生成shape,无需再写shape.xml)

License: Apache License 2.0

Java 99.87% Kotlin 0.13%
shape shape-selector selector drawable xml stroke android

backgroundlibrary's Issues

赞一个,很好的依赖库;Could not download kotlin-stdlib.jar

Unable to resolve dependency for ':ZLibrary@debugAndroidTest/compileClasspath': Could not download kotlin-stdlib.jar (org.jetbrains.kotlin:kotlin-stdlib:1.2.70)
库主,这个kotlin语言用到了吗,添加依赖的时候,出错了,如果没有的话,能把依赖库中build.gradle里面的compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"这个去掉吧或者改成implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

字体显示不全

我昨天在用 px 适配的时候给 button 设置固定宽高和圆角并制定字体大小,字体下面会有部分显示不全,好像被遮盖住了,仔细看能看出来,把 button 换成 textview 就没有这个问题,显示正常

怎么抽取到style中?

报错找不到attr error: style attribute 'app:attr/unPressed_drawable' not found.

styles.xml中是这样的

<style name="btn_main">
        <item name="app:unSelected_drawable">@color/colorPrimaryDark</item>
        <item name="app:selected_drawable">@color/colorAccent</item>
        <item name="app:unPressed_drawable">@color/colorPrimaryDark</item>
        <item name="app:pressed_drawable">@color/colorAccent</item>
        <item name="app:corners_radius">@dimen/dp10</item>
        <item name="android:paddingLeft">@dimen/dp4</item>
        <item name="android:paddingRight">@dimen/dp4</item>
        <item name="android:background">@drawable/selector_btn_normal_press</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

集成之后项目报错

Android resource linking failed 就一个很简单的ConstraintLayout 里面放了一个textview
然后设置了一个 app:bl_corner_radius="10dp" 然后就运行不起来...

引入项目报错。资源冲突了

C:/Users/Administrator/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/262e0fab8925583e0d998bdc13acccdb/res/values/values.xml

error: duplicate value for resource 'attr/stroke_color' with config ''.
error: resource previously defined here.

属性名冲突

RT,属性名太简单,跟其他第三方的刚好冲突了,建议加上项目标识区分

线上部分手机报错『XmlPullParserException』

系统版本:Android 4.4.4,level 19
设备机型:VIVO Y23L
CPU架构:armeabi-v7a

报错问题:

org.xmlpull.v1.XmlPullParserException
Binary XML file line #1: invalid drawable tag vector com.noober.background.BackgroundLibrary

项目中引入Library报错

类BackgroundLibrary中final AppCompatDelegate delegate = ((AppCompatActivity) context).getDelegate();报 Cannot access android.support.v4.view.KeyEventDispatcher.Component的error

设置了渐变不能设置阴影

    <item name="android:elevation">@dimen/dp2</item>
    <item name="bl_corners_radius">@dimen/dp20</item>
    <item name="bl_gradient_angle">270</item>
    <item name="bl_gradient_startColor">@color/colorBlue2</item>
    <item name="bl_gradient_endColor">@color/colorBlue3</item>
    <item name="bl_ripple_enable">true</item>
    <item name="bl_ripple_color">@color/colorBlue4</item>

想要一个带渐变+阴影+水波纹的效果,但是设置了渐变之后,没有阴影效果,在点击按钮之后,阴影又出现了

androidx 集成不了

Caused by: java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
at android.view.LayoutInflater.setFactory2(LayoutInflater.java:314)
at com.noober.background.BackgroundLibrary.inject(BackgroundLibrary.java:32)
at com.lai.example.sample.background_library.BackgroundLibraryActivity.onCreate(BackgroundLibraryActivity.kt:12)
at android.app.Activity.performCreate(Activity.java:7060)
at android.app.Activity.performCreate(Activity.java:7051)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)

需求

可以在代码动态设置样式吗?

代码设置白色的时候没有效果

Drawable drawable = new DrawableCreator.Builder().setCornersRadius(ConvertUtils.dp2px(context.getResources().getDimension(R.dimen.size_level2)))
.setSolidColor(Color.parseColor("#FFFFFF"))
.setStrokeColor(Color.parseColor("#FFFFFF"))
.setStrokeWidth(ConvertUtils.dp2px(2))
.build();

如果使用第三方的baseactivity,如何使用这个框架

由于项目中使用了第三方远程依赖包,使用了该包的baseActivity,如何不修改源码的情况 下使用这个框架,测试在newactivity中 inject 和 inject2 都不起作用,ActivityLifecycleCallbacks中也不起作用

IllegalStateException 建议解决办法

Caused by: java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
at android.view.LayoutInflater.setFactory(LayoutInflater.java:295)
at com.noober.background.BackgroundLibrary.inject(BackgroundLibrary.java:32)

源码对应
public void setFactory(Factory factory) {
if (mFactorySet) {
throw new IllegalStateException("A factory has already been set on this LayoutInflater");
}
if (factory == null) {
throw new NullPointerException("Given factory can not be null");
}
mFactorySet = true;
if (mFactory == null) {
mFactory = factory;
} else {
mFactory = new FactoryMerger(factory, null, mFactory, mFactory2);
}
}

实际上AppCompatActivity中,已经调用过setFactory方法。
所以mFactorySet 为true,重复调用setFactory 就会抛出异常。

建议解决办法:
参考换肤框架SkinCompat中,在调用setFactory 之前将通过反射将mFactorySet值设为false
private void installLayoutFactory(Context context) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
try {
Field field = LayoutInflater.class.getDeclaredField("mFactorySet");
field.setAccessible(true);
field.setBoolean(layoutInflater, false);
LayoutInflaterCompat.setFactory(layoutInflater, getSkinDelegate(context));
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}

忘采纳

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.