Coder Social home page Coder Social logo

ximsfei / android-skin-support Goto Github PK

View Code? Open in Web Editor NEW
6.3K 120.0 1.1K 52.86 MB

Android-skin-support is an easy dynamic skin framework to use for Android, Only one line of code to integrate it. Android 换肤框架, 极低的学习成本, 极好的用户体验. "一行"代码就可以实现换肤, 你值得拥有!!!

License: MIT License

Java 99.92% Shell 0.08%
skin skin-support theme change android androidx

android-skin-support's People

Contributors

afeidaren avatar jungle68 avatar ximsfei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-skin-support's Issues

增加功能--指定某些控件不换肤

从性能上讲,让控件不换肤最好的方式就是不受监听,这样可以减少内存和遍历查询时间

实现的思路:
在加入换肤监听的地方做判断,而判断依据最直接的方法就是解析xml
个人觉得可以参照android skin loader的做法,在xml中设置skin:enable=false这种类似的字段,在解析xml时读取出来

毕竟不设置皮肤的情况比较少见,在xml中设置一个值的情况不会太多

可否不继承 SkinCompatActivity

如题。因为有一个库已经需要我继承它的 Activity,所以不能再兼容继承 SkinCompatActivity,还有别的方法解决吗

shape 文件,里面的gradient 失效了。

<gradient
    android:startColor="@color/white"   // white 是 #ffffff 色
    android:endColor="@color/cfbf1f2"
    android:angle="0" />

然后是在 RecyclerView 里面
为LinearLayout 设置的一个 渐变色
viewholder.itemRootview.setBackgroundResource(Constant.quote_default_bg);
// quote_default_bg = R.drawable.quote_default_gradient; quote_default_gradient是上面的shape文件
发现设置的渐变背景色没有了,皮肤包里面也有对应的资源文件,不知道是什么原因

SkinCompatEditText

光标颜色不能随着夜间模式改变,皮肤包里面配置了,textCursorDrawable设置了颜色,但是更换夜间模式后,颜色没有改变。

提示皮肤资源获取失败

按照步骤来的,在 assets/skins/ 目录下放入了 demo 中的 night.skin。然后运行的时候就出这样的错误信息

android.support.design.widget.TabLayout 切换失败

android.support.design.widget.TabLayout 切换失败 我已经引入这个库了,重启程序久好了,帮忙一下,谢谢
又是会有这个错误
Unknown element under : meta-data at /storage/emulated/0/Android/data/com.packeage/cache/skins/night.skin Binary XML file line #11

viewHolder.conversationMark.setImageResource(R.color.transparent); 突然项目崩溃

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setTintList(android.content.res.ColorStateList)' on a null object reference
at android.support.v4.graphics.drawable.DrawableCompatLollipop.setTintList(DrawableCompatLollipop.java:57)
at android.support.v4.graphics.drawable.DrawableCompat$LollipopDrawableImpl.setTintList(DrawableCompat.java:225)
at android.support.v4.graphics.drawable.DrawableCompat.setTintList(DrawableCompat.java:396)
at skin.support.widget.SkinCompatImageHelper.applySkin(SkinCompatImageHelper.java:67)
at skin.support.widget.SkinCompatImageHelper.setImageResource(SkinCompatImageHelper.java:45)
at skin.support.widget.SkinCompatImageView.setImageResource(SkinCompatImageView.java:45)

请教一下自定义控件的问题

我自定义了一个BottomNavigationView extends SkinCompatLinearLayout
每个item中放了一个
`

<ImageView
    android:id="@+id/iv_bottom_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/tv_bottom_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@drawable/bottom_text_selector" />

`

LayoutInflater inflater = LayoutInflater.from(this.getContext()); LinearLayout childLayout = (LinearLayout) inflater.inflate(R.layout.item_bottom, this, false);

里面使用selector设置了一个选中颜色和默认颜色
但是没有效果

drawable 里面设置了颜色它是一个selector 貌似没效果

代码这样写的
<item android:drawable="@drawable/ic_button_pressed" android:state_pressed="true" android:state_window_focused="false"/> <item android:drawable="@drawable/ic_button_enable" android:state_enabled="false"/> <item android:drawable="@drawable/ic_button_normal" android:state_enabled="true"/> <item android:drawable="@drawable/ic_button_normal"/>
ic_button_pressed :
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/color10"/> <corners android:radius="@dimen/app_radius_size"/> </shape>

ic_button_enable:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/color10"/> <corners android:radius="@dimen/app_radius_size"/>

ic_button_normal:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/color4"/> <corners android:radius="@dimen/app_radius_size"/> </shape>
这样做之后不能进行换肤,什么原因呢

如何在代码中设置EditText左边的图片啊?

我的EditText是一个自定义View,继承你的SkinCompatEditText,然后代码中以下设置

Drawable username_nav_left = getResources().getDrawable(R.drawable.bg_login_user);
 username_nav_left.setBounds(0, 0, username_nav_left.getMinimumWidth() - 25, username_nav_left.getMinimumHeight() - 25);
 binding.activityLoginUsername.setCompoundDrawables(username_nav_left, null, null, null);

上面设置了R.drawable.bg_login_user图片,希望在载入其他skin的时候替换成其他的图片,但是最终的效果没有替换成功,我的手机的Nexus6p , 7.1的系统,并且在使用的时候有遇到载入皮肤后崩溃的问题,但是别人低版本的手机不会出现这个问题。
再问一个问题哈:库里支持修改text属性吗?不同skin有不同的标题.

运行出现问题

Attempt to invoke virtual method 'int skin.support.content.res.SkinCompatResources.getColor(int)' on a null object reference

allowBackup 相关问题

build项目的时候,使用 skin.support:skin-support:2.0.4有以下失败log:

Attribute application@allowBackup value=(false) from AndroidManifest.xml:67:9-36
is also present at [skin.support:skin-support:2.0.4] AndroidManifest.xml:12:9-35 value=(true).
Suggestion: add 'tools:replace="android:allowBackup"' to element at AndroidManifest.xml:65:5-1065:19 to override.
请参考下,能否关闭skin-support的该属性

statusBarColor颜色有错

在AndroidManifest.xml中, 如果application节点有主题, 在某个activity中又指定了主题, 同时恰好这两个主题的statusBarColor不一样, SkinCompatActivity会把application的statusBarColor读取出来, 填充到activity上

报错 生成app 直接就闪退 然后报如下的错

Didn't find class "skin.support.design.R$styleable" on path: DexPathList[[zip file "/data/app/star.liuwen.com.endskin-1/base.apk"],nativeLibraryDirectories=[/data/app/star.liuwen.com.endskin-1/lib/arm64, /vendor/lib64, /system/lib64]]

我导入了app-skin 然后依赖了
compile 'skin.support:skin-support:1.0.1'
compile 'skin.support:skin-support-design:0.0.2'
然后生成app 点击就闪退了 求解

自定义控件的话,paint.setColor()的问题

自定义控件时,遇到这种
Paint.setColor(mRoundColor);
mRoundColor是通过
typedArray.getColor(R.styleable.RoundProgressBar_textColor, getResources().getColor(R.color.c4c6072));获取的,之前你说过不支持 getResources().getColor(R.color.c4c6072)方式更换颜色,想问下这种情况怎么解决?

制作皮肤后,Android7.1.1换肤正常,Android7.0及其以下无法换肤, PackageInfo=null

java.lang.NullPointerException: Attempt to read from field 'java.lang.String android.content.pm.PackageInfo.packageName' on a null object reference
05-08 01:24:49.699 9563-9602/com.xxxxx.xxxxx W/System.err: at skin.support.SkinCompatManager.initSkinPackageName(SkinCompatManager.java:196)
05-08 01:24:49.700 9563-9602/com. xxxxx.xxxxx W/System.err: at skin.support.SkinCompatManager.access$400(SkinCompatManager.java:33)

关于应用在生产环境中的一些疑问

如果线上版本,已集成该库,用户也下载了其它颜色进行换肤。在接下的新版本中,默认主题颜色,增加了一个新的 color 值,那线上版本的用户下载的其它颜色皮肤,怎样同步新版本中的新 color 值?只能让线上用户重新下载那些皮肤吗?

关于ConstraintLayout背景色问题

我有几个界面用ConstraintLayout做根布局,在切换它们的android:background时,有的布局背景色偶尔会变偶尔不会,无规律,有的布局怎么都不变,我尝试过杀死应用再重启,都无法解决这个问题,请问这是什么问题?

内存消耗严重

1.植入换肤模块后,刷新图片列表(RecyclerView),GC基本失效,内存基本只升不降,去掉后恢复正常,
2.控制台一直打log,影响项目调试,希望关掉多余日志。

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.