精华内容
参与话题
问答
  • Android Support 包的作用、用法

    千次阅读 2018-01-23 09:35:07
    1, Android Support V4, V7, V13是什么? 本质上就是三个java library。 2, 为什么要有support库? 如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support库...
    1, Android Support V4, V7, V13是什么?
    本质上就是三个java library。



    2,  为什么要有support库?
    如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support库。


    3, 三个Support 库的区别和作用是什么?
    Android Support v4 是最早(2011年4月份)实现的库。用在Android1.6 (API lever 4)或者更高版本之上。它包含了相对V4, V13大的多的功能。
                                    例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabAtrip,Loader,FileProvider 等。
                                    详细API 参考 http://developer.android.com/reference/android/support/v4/app/package-summary.html
    Android Support v7:  这个包是为了考虑Android2.1(API level 7) 及以上版本而设计的,但是v7是要依赖v4这个包的,也就是如果要使用,两个包得同时                                 被引用。
                                    v7支持了Action Bar。
    Android Support v13:这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。


    4, 如何使用?
    首先要保证Android Support Library 被安装


    然后在工程中增加(例如 support-v4 Library)

    在ADT中需要按照以下步骤:
    1、右击当前工程,查找Properties
    2、选择Java Build Path
    3、选择Libraries tab,点击右边面板的Add External JARs按钮
    4、选择android-support-v4.jar文件,这一文件的常见路径为:YOUR_DRIVE\android-sdks\extras\android\support\v4\android-support-v4.jar

    5、完成添加后,选择Order and Export标签,确认即可。


    5,v4、v7、v13 的例子代码
    4v : <sdk>/extras/android/support/samples/Support4Demos/
    7v : <sdk>/extras/android/support/samples/Support7Demos/
    13v : <sdk>/extras/android/support/samples/Support13Demos/

    App Navigation: <sdk>/extras/android/support/samples/SupportAppNavigation/

    6,内容介绍

    (1)support-v4

    support-v4包算是 Android 最低等级的支持包。所谓的 v4,代表着它最低支持 Android1.6(API Level4),这个版本算得上是一个真正意义上比较成熟的 Android版本,更何况现在我们写应用的时候一般都只最低支持到 Android 2.x 系统,对于1.x 的系统基本已经已经完全抛弃了,因此你可已经他作为最基本的系统组件使用。

    在 support-v4包中,它所拥有的类还是很多的,主要包含了对应用组件的支持,用户交互体验的一些工具类,一些数据网络方面的工具类,相面我们将详细来看看它里面具体的一些类。

    1.系统组件部分

    Fragment:其实 Fragment 是直到 Android3.0才正式进入 Android 框架体系的,但是 Android 为了低版本的兼容,因此他帮我们在低版本也适配了 Fragment 框架

    NotificationCompat:这是通知栏的一些适配,可以帮助你在低版本的通知栏显示更加丰富的信息

    LocalBroadcastManager:这个是用于本地广播通知的,当你希望发送的通知只被本应用接收时,你就应该使用它

    2.用户界面交互部分

    ViewPager,这个相信我不用怎么说了,他主要用于帮助我们进行界面间的滑动交互

    PagerTitleStrip,PagerTabStrip 这两个算是 ViewPager 的帮助类吧,他们的作用是进行 Tab 栏的切换辅助显示

    DrawerLayout,主要用于侧滑栏的实现

    SlidingPaneLayout,这个类也是用于侧滑栏的实现,和 DrawerLayout 不同的是,DrawerLayout 侧滑栏出来的时候,默认是覆盖在当前页面上,而 SlidingPaneLayout 则是会将当前页面移走。

    3. Accessbility访问的帮助类

    ExploreByTouchHelper,帮助自定义 View 实现 Accessibility 的工具类

    AccessbilityEventCompat, AccessbilityNodeInfoCompat, AccessbilityNodeProviderCompat, AccessbilityDelegateCompat,这几个都是用作 Accessibility 功能适配的类

    4.数据访问帮助类

    Loader,主要用于异步加载数据

    FileProvider,提供应用间的文件分享功能


    (2)support-v7

    1.Appcompat

    这个包的主要作用是为了在低版本实现 Android 的 Holo 风格界面而引入的,与之类似的有一个开源项目叫做 SherlockActionbar

    2.CardView

    卡片布局是最近在 android5.0发布的时候才引入的新包,在我看来,他主要效果是让应用进行卡片花显示

    3.GridLayout

    网格布局能够帮助你将整个布局按照一格两格的格子形式进行排列

    4.MediaRouter

    这个布局主要是用来支持 GoogleCast 的,主要用于进行设备间的音频,视频交换显示

    5.Palette

    这个包也是最新出来的,他的作用是帮助 Android 实现他的 MaterialDesign,让你的 Actionbar 能够根据界面进行对应的颜色改变

    7.RecyclerView

    这个包同样也是刚出来的,他的作用是替换 ListView 和 GridView,但是可惜是没有实现 OnItemClick 这些接口,你需要自己处理它


    (3)support-v8

    support-v8中其实只有一格特性,就是用来渲染脚本


    (4)support-v13

    这个包的作用主要是为 Android3.2级以上的系统提供更多地 Framgnet 特性支持,使用它的原因在于,android-support-v4包中虽然也对 Fragment 做了支持,由于要兼容低版本,导致他是自行实现的 Fragment 效果,在高版本的 Fragment 的一些特性丢失了,而对于 v13以上的 sdk 版本,我们可以使用更加有效,特性更多的代码


    (5)support-v17

    这个包得主要作用是用于支持电视设备,并为电视设备提供了很多组件

    例如下面的:

    BrowseFragment, DetailFragment, PlaybasckOverlayFragment, SearchFragment

    但是原谅我没有做过 Android TV 开发,我也不知道他们的用处是什么,如果真的想要查看,请去官网看看吧


    引用:

    http://blog.csdn.net/hh2000/article/details/39718623;

    http://blog.csdn.net/u010015108/article/details/52459890;

    展开全文
  • support库中v4 v7版本冲突错误详解

    千次阅读 2017-05-09 19:17:54
    support中v4 v7库版本错误,主要会报以下两种错误,下面针对每一种错误进行详解第一种错误信息:先来看两个崩溃信息,如下:java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/...

    support中v4 v7库版本错误,主要会报以下两种错误,下面针对每一种错误进行详解

    第一种

    错误信息:

    先来看两个崩溃信息,如下:

    java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/AnimatorCompatHelper;
    
    java.lang.NoSuchMethodError: No static method wrap(Ljava/lang/Object;)Landroid/support/v4/view/WindowInsetsCompat; in class Landroid/support/v4/view/WindowInsetsCompat; or its super classes (declaration of 'android.support.v4.view.WindowInsetsCompat' appears in /data/app/cn.xuexuan.newui-2/base.apk:classes12.dex)
    	
    

    经过这两次错误的分析,总结出一个规律,凡是出现**android/support/v4/**中找不到类或者方法,可以确定是依赖了多个不同版本的support库,都可以使用下面介绍的方法来解决。

    分析:

    以第一种错误为例,进行分析

    log显示,找不到v4库下的这个类,但是我发现在support-v4-24.1.0中可以找到这个类,又想到在build.gradle中看到的这样一个提示,

    这里写图片描述

    我猜想,难道是在运行的时候,使用的不是support-v4-24.1.0的库,使用了其他版本的库???

    原因:

    经过一番查找,和最后实践证明,确实是使用了26.0.0-alpha1版本的库(Support Repo 47.0.0 包括26.0.0-alpha1),在26.0.0-alpha1版本的库中确实没有AnimatorCompatHelper类。

    因为某个模块的不同版本同时被依赖时,默认使用新版,gradle同步时不会报错。所以这里24.1.0版本的库被自动替换为了26.0.0-alpha1版本的库

    要解决问题,就要找到哪个库使用了26.0.0-alpha1,使用命令gradlew :app:dependencies查看库的依赖树,发现**compile ‘com.mcxiaoke.viewpagerindicator:library:2.4.1’**使用了动态版本

    这里写图片描述

    解决:

    找到了原因,那么解决起来就有头绪了
    网上有人说,删除掉compile ‘com.android.support:support-v4:+’,也算是一种方法吧。像上面这种依赖在第三方库中,就需要下面的方法

    第一种:

    排除依赖中的指定包

    compile ('com.mcxiaoke.viewpagerindicator:library:2.4.1') {
            exclude group: 'com.android.support'
        }
    

    第二种:

    force强制设置某个模块的版本。

    configurations.all {
        resolutionStrategy {
            force 'com.android.support:support-v4:24.1.0'
        }
    }
    

    或者

    com.android.support包名的库版本都是用24.1.0

    configurations.all {
       resolutionStrategy.eachDependency { DependencyResolveDetails details ->
           def requested = details.requested
           if (requested.group == 'com.android.support') {
               if (!requested.name.startsWith("multidex")) {
                   details.useVersion '24.1.0'
               }
           }
       }
    }
    

    第二种

    ##错误信息

    gradle 4.+版本才会出现的错误

    Android dependency 'com.android.support:support-compat' has different version for the compile (25.1.0) and runtime (25.3.0) classpath
    

    主要意思是在compile和runtime 时使用的support库版本不一样

    分析

    compile 是runtime 的一部分。 例如,假设一个名为app程序使用库foo,而库foo在内部使用库bar。 编译应用程序app只需要foo库,但是运行app时需要foo和bar。 对Gradle compile的配置在其runtime 配置中也是可见的,但相反则不是这样。

    原因:

    因为某个库的不同版本同时被依赖时,默认使用较新版。

    使用命令gradlew :app:dependencies查看库的依赖树,

    在compile 时,看不到库mvp中依赖的support 版本,所以google play 相关的库使用support-v4:24.0.0的版本。下面之所以看不到mvp库中的依赖,是因为在引用第三方库使用了implementation(gradle 4.+版本才出现的新特性。详情可参考这里

    这里写图片描述

    在runtime时,运行了库mvp中,其中依赖的support 版本为support-v4:25.1.0,

    这里写图片描述

    所以google play 相关的库使用support的较新版本25.1.0
    这里写图片描述

    导致出现了上面的报错

    解决

    第一种:

    解决方法和上面是一样的

    第二种:

    在lib中使用api依赖第三方库A,这样在module中也可以使用库A里面的相关类

    dependencies {
    	api xxxxxx
    }
    

    终极解决:

    将项目迁移至AndroidX(推荐)
    以后的趋势肯定是往AndroidX的方向发展的,官方对这个更新的速度很快,足见其重视性
    迁移方法看官方文档即可,比较简单:迁移至AndroidX

    参考:
    java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/AnimatorCompatHe

    Alpha support library version overriding previous support libs versions

    All com.android.support libraries must use the exact same version specification

    执行代码 loadMoreEnd()报错

    Android Support Repo 46.0.0 with Android Studio 2.3

    Difference between compile and runtime configurations in Gradle

    展开全文
  • Android-skin-support 一款用心去做的Android 换肤框架

    万次阅读 热门讨论 2017-01-17 21:03:10
    Android-skin-support: 一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验.只需要两行代码, 就可以实现换肤, 你值得拥有!!!

    介绍

    Github地址: https://github.com/ximsfei/Android-skin-support

    Android-skin-support: 一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验.

    重要的事情说三遍:
    只需要两行代码, 就可以实现换肤, 你值得拥有!!!
    只需要两行代码, 就可以实现换肤, 你值得拥有!!!
    只需要两行代码, 就可以实现换肤, 你值得拥有!!!

    第一行: 在Application的onCreate中初始化

    SkinCompatManager.init(this).loadSkin();

    第二行: 继承自SkinCompatActivity

    public class BaseActivity extends SkinCompatActivity {}

    就这么简单, 你的APK已经拥有了强大的换肤功能.

    skin-app // 换肤demo app
    skin-night // 换肤demo 夜间模式
    skin-support // 换肤框架, 基础控件支持
    skin-support-design // 换肤框架, Material Design 支持

    最佳实践

    仿网易云音乐皮肤切换

    下载

    red_1red_2red_3
    white_1white_2white_3
    night_1night_2night_3

    支持

    目前支持:

    • 支持Android 4.x, 5.x, 6.x, 7.x
    • 支持自定义View换肤
    • skin-support: appcompat-v7 支持

      • View
      • Button
      • CheckBox
      • EditText
      • TextView
      • ImageView
      • ImageButton
      • RadioButton
      • FrameLayout
      • LinearLayout
      • RelativeLayout
      • CheckedTextView
      • AutoCompleteTextView
      • MultiAutoCompleteTextView

      • android.support.v7.widget.Toolbar

    • skin-support-design: material design 支持

    用法

    导入:

    git clone https://github.com/ximsfei/Android-skin-support.git

    选择需要的module依赖:

    // aar
    dependencies {
        compile(name: 'skin-support-release', ext: 'aar') // Android 基础控件, 及V7包中的一些控件
        compile(name: 'skin-support-design-release', ext: 'aar') // Android support design包中的一些控件
    }

    或者

    dependencies {
        compile project(':skin-support')
        compile project(':skin-support-design')
    }

    或者

    // 可以打开调试日志
    dependencies {
        releaseCompile project(path: ':skin-support', configuration: 'release')
        debugCompile project(path: ':skin-support', configuration: 'debug')
        releaseCompile project(path: ':skin-support-design', configuration: 'release')
        debugCompile project(path: ':skin-support-design', configuration: 'debug')
    }

    初始化:

    在Application的onCreate中初始化

    @Override
    public void onCreate() {
        super.onCreate();
        SkinCompatManager.init(this).loadSkin(); // 应用启动加载当前(保存在SharedPreferences中)皮肤库
    }

    继承SkinCompatActivity

    让所有需要换肤的Activity继承自skin.support.app.SkinCompatActivity.

    public class BaseActivity extends SkinCompatActivity {}

    加载插件皮肤库

    // 指定皮肤插件, 并且监听加载状态
    SkinCompatManager.getInstance().loadSkin("new.skin");
    
    // 恢复应用默认皮肤
    SkinCompatManager.getInstance().restoreDefaultTheme();

    自定义View换肤

    要点:

    1. 实现SkinCompatSupportable接口
    2. 在构造方法中解析出需要换肤的resId
    3. 在applySkin方法中实现换肤

    实现:

    1. 自定义View可以直接继承自SkinCompatView, SkinCompatLinearLayout等已有控件

      eg: CustomTextView

    2. 不想继承自已有控件

      eg: CustomTextView2

    3. 需要换肤自定义属性

      // 需要换肤AutoCompleteTextView的R.attr.popupBackground属性
      eg: SkinCompatAutoCompleteTextView

    4. 需要使用第三方库控件怎么办

      // 需要使用https://github.com/hdodenhof/CircleImageView 控件, 并且要支持换肤
      eg: CustomCircleImageView

    制作皮肤插件:

    新建Android application工程

    将需要换肤的资源放到res目录下(同名资源)

    打包生成apk, 即为皮肤包

    交流合作

    深入研究发现Android换肤原理其实不难, 难在要实现一个完善的换肤框架所带来的工作量, 所以在没有特殊原因的前提下, 希望大家多多使用, 多多交流, 为本项目贡献自己的力量, 为所有Android开发者带来福音, 减少没必要的工作量.

    QQ群二维码

    致谢

    展开全文
  • Android Support v4\v7\v13和AndroidX理解

    千次阅读 2019-03-25 15:17:58
    为什么要用support库呢? 因为在低版本Android平台上开发一个APP时,想使用高版本才有的功能,此时就需要使用Support来支持兼容。 1. android-support-v4 compile "com.android.support:support-v4 2011年4月份...

    为什么要用support库呢?

    因为在低版本Android平台上开发一个APP时,想使用高版本才有的功能,此时就需要使用Support来支持兼容。

    1. android-support-v4 

    compile "com.android.support:support-v4

    2011年4月份,谷歌推出最低兼容到1.6版本系统的包。

    eclipse新建工程时,都默认包含了,里面有类似Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabAtrip,Loader,FileProvider  等等控件。

    V4包含了V7和V13的基础功能。

    2. android-support-v7

    compile "com.android.support:appcompat-v7:xx.xx"

    2014年 I/O大会时推出,最低兼容Android2.1系统。

    最新的v7包增加了很多material design的兼容类和素材,其中涉及的内容有Theme、value、布局、新的控件、新的动画实现方式,包含了support-v4的全部内容。

    android studio在创建工程的时候默认导入了v7工程,并且将style使用了兼容style。

    3. android-support-v13

    为平板开发推出的版本兼容包,最低兼容Android3.2的系统。可以说Android 3.x系统都是平板专用系统。

    4. androidX 

     从android9.0 (API28)开始, support库将会进行改动, V7: 28.0.0将会是support库的终结版本。未来新的特性和改进都会进入Androidx包。其主要原因是support库的命名已经越来越令人迷惑 ,包越来越臃肿。

    依赖包的变化从:api 'com.android.support:appcompat-v7:28.0.0'

    变成了:api 'androidx.appcompat:appcompat:1.0.0'

    需要注意的是,build.gradle中的插件版本要在3.2.0以上才可以。

    如果项目中包含的第3方包中引用了support包,而又想使用androidX,则可以进行如下配置:

    android.useAndroidX=true

    android.enableJetifier=false

    Android Studio就提供了sopport转androix的能力;需要先在gradle.properties 文件中加入配置:

    android.useAndroidX=true

    android.enableJetifier=true

    然后

    展开全文
  •  Google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性,即我们用4.x开发时,在1.6等版本上,可以使用高版本的有些特性,如Fragement,ViewPager等。我们常见的Android Support ...
  • display命令是网络维护和故障处理的重要工具,可用于了解: 1、设备的当前状况。 2、检测相邻设备。 3、总体监控网络。 4、定位网络故障 ...基本信息 display diagnostic-information ...接口信息 displ...
  • vuetifyjs/vuetify

    2020-09-16 17:15:43
    Vuetify is a MIT licensed project that is developed and... with support from the entire Core Team. Sponsor Vuetify and receive some awesome perks and support Open Source Software at the same time! tada B
  • PIE, position independent executables.android 4.1上开始支持PIE,所以4.1之前的版本不能使用PIE的executable,而之前开发的...Android 4.1 PIE (Position Independent Executable) support Read-only relocations
  • 屏蔽Android PIE检测机制

    千次阅读 2017-03-24 13:52:29
    最近做NDK开发相关的项目,总会时不时冒出下面这句打印信息:error: only position independent executables (PIE) are supported.后面一查,原来是Android版本新添加的保护机制,以前在RK3168 android4.1上没有看到...
  • Android support.v7包

    万次下载 热门讨论 2015-04-14 20:28:30
    Android support.v7包
  • ======================================================================= 2018年11月25日更新: 从iTunes 12.9.1.4中提取了驱动,可通过已更新的一键修复工具修复连接问题 ... 文件标题:一键修复iTun...
  • 今天在电脑上安装了Mysql 8.0.11,然后又屁颠屁颠地安装了Navicat for MySQL,打开Navicat准备链接数据库的时候出现了如下提示: 上网搜索解决方案,网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是...
  • Android Support库——support annotations

    万次阅读 多人点赞 2016-01-03 22:43:17
    Android Support库是官方出的第三方库,包含了丰富的组件、工具类等,通过在Android SDK Manager中勾选以下两项来获取到。  其中,Android Support Library下载的是对应的源码或jar包,在使用Eclipse时会从这里...
  • Failed to resolve:com.android.support:appcompat-v7:报错处理

    万次阅读 多人点赞 2017-10-29 14:44:22
    你在使用android studio时是否也出现过上图的报错,你还在为它的出现烦恼?没问题,看了本文章,我确保你会顺利解决掉它并会很骄傲的认为这只是一个小case级别的报错。我们进入正题吧,先来说下什么时候会出现这种...
  • com.android.support版本冲突的解决办法

    万次阅读 多人点赞 2017-10-12 14:49:59
    All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes 当我们使用android studio添加一些第三方的依赖库时,很可能会提示上面这个错误...
  • Android Design Support Library使用详解

    万次阅读 多人点赞 2015-06-04 23:19:04
    Android Design Support Library使用详解Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们...
  • support转androidx关系映射

    千次阅读 2018-12-04 11:16:30
    Google为了方便升级插件以及兼容性,Jetpack等一系列功能,对原有的support包进行了升级全面的重构到androidx。 下面是官网给出的对应的转换关系,目前使用中上有一些问题,建议大家等待一段时间在正式中使用,但不...
  • AndroidX迁移——弃用support库指南

    千次阅读 2019-04-20 18:21:21
    support库一样,每个AndroidX库都与Android操作系统分开提供,并提供跨Android版本的向后兼容性。 androidx 是对 android.support.xxx 包和其他google android支持库整理后的产物。由于之前的support包过于混乱,...
  • 随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LEVEL EXCEPTION: ...
  • androidx 是对 android.support.xxx 包的整理后产物。由于之前的support包过于混乱,所以,google推出了 androidX。 自support v7:28.+开始,大部分support包都会迁移到androidx下,,所以建议开发者们尽早将项目...

空空如也

1 2 3 4 5 ... 20
收藏数 1,070,324
精华内容 428,129
关键字:

support