‘壹’ 如何在android Studio中添加RecyclerView-v7支持包
Android 5.0新特性中出现了一个非常牛逼的控件——RecyclerView。默认情况下,Android Studio当前的支持包中没有引入RecyclerView的v7包,所以当我们直接输入Recycle时提示中没有RecyclerView。这里要介绍的是如何在Android studio中引入支持RecyclerView的v7包。
前提是已经下载了Android Support Library支持包,一般是自动就下载好了。如果没有下载,就打开SDK Manager下载喽!
一、
1.在Project模式下,点开External Libraries,可以看到只有appcompat-v7-23.4.0(这是我自己下载的版本)这个v7包,通过查看其属性可以找到源码位置
二、其实还可以这样做:
在源码位置可以找到recyclerview-v7-23.4.0-sources.jar,将其复制到libs目录下同样可以达到目的。
‘贰’ Android 应用只支持4.0以上还需要support v7兼容包么
android-support-v4是谷歌推出的兼容包,最低兼容Android1.6的系统,里面有类似ViewPager等控件。ViewPager在Android1.6以下的版本是不自带的,所以要实现ViewPager需要使用v4包中的ViewPager。其余控件同理。android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系统,这个包通常和appcompat-v7这个工程一起使用。appcompat-v7这个工程可以让开发者统一开发,在任何系统版本下保证兼容性。涉及的内容有Theme,value,布局,新的控件,新的动画实现方式,包含了support-v4的全部内容,开发Android工程时,要兼容低版本都要导入v7工程。androidstudio在创建工程的时候默认导入了v7工程,并且将style使用了兼容style,给开发者提供了极大的方便。并且最新的v7包增加了很多materialdesign的兼容类和素材,请及时更新。android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系统。当初是为了开发平板做设计的。Android3.x系统都是平板专用系统,但是3.x系统失败了。所以使用v13的包没有任何价值。v7版本适用于任何版本的开发,保证了兼容性,所以在使用的时候一定要采用。不要再用Eclipse做Android开发,ADT已经没有更新过了,AndroidStudio是Android开发的首选工具,支持5.0开发,更好的开发享受。(1.3正式版将会有非常大的变化,非常期待)
‘叁’ Android_support_v4和android_support_v7区别
其实还有v13的包,
google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性,即我们用4.x开发时,在1.6等版本上,可以使用高版本的有些特性,如Fragement,ViewPager等,下面,简单说明下这几个版本间的区别:
Android Support v4: 这个包是为了照顾1.6及更高版本而设计的,这个包是使用最广泛的,eclipse新建工程时,都默认带有了。
Android Support v7: 这个包是为了考虑照顾2.1及以上版本而设计的,但不包含更低,故如果不考虑1.6,我们可以采用再加上这个包,另外注意,v7是要依赖v4这个包的,即,两个得同时被包含。
Android Support v13 :这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。
‘肆’ android v7包里的Toolbar,怎么定制图标,字体居中的效果
首先使用 Toolbar 来代替ActionBar ,这样我们就能够把ActionBar嵌入到我们的View体系中,然后我们"禁用"系统的status bar,由 DrawerLayout 来处理status bar,最后抽屉部分往上移,或者裁剪掉status bar那一部分。
控制Status bar
在你的values-v21里面添加新的主题,并设置一下属性:
values-v21/themes.xml
<style name="AppTheme">
<item name="android:">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
这里解释一下:
,将它设置为true,系统将在你的window里面绘制status bar,默认为 TRUE ,之所以要写出来是因为你的theme有可能是继承过来的,确保为true。(在这里小插曲一下,因调试时,总以为注释了这段代码就以为是false,程序员思维害苦了我。另外从命名来看,Android把它称为system bar,可能是为了与能被我们处理的status bar区分开而做的改变。)
statusBarColor 设置为透明是因为我们不再需要系统的status bar,因为我们无法控制它的位置,后面我们将交由 DrawerLayout 来处理。
使用DrawerLayout
首先,你的布局文件应该是和这个类似的:
<android.support.v4.widget.DrawerLayout
xmlns:android="url"
android:id="@+id/my_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- Your normal content view -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- We use a Toolbar so that our drawer can be displayed
in front of the action bar -->
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
<!-- The rest of your content view -->
</LinearLayout>
<!-- The navigation drawer -->
<ScrimInsetsFrameLayout xmlns:android="rul"
xmlns:app="url"
android:layout_width="304dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="@android:color/white"
android:elevation="10dp"
android:fitsSystemWindows="true"
app:insetForeground="#4000">
<!-- Your drawer content -->
</ScrimInsetsFrameLayout>
</android.support.v4.widget.DrawerLayout>
在这里布局里面我们用到了一个的开源类 ScrimInsetsFrameLayout ,它的主要作用就是利用 fitsSystemWindows 的回调方法 fitSystemWindows(Rect insets) 来获取status bar的大小,然后调整画布已达到去掉status bar的效果,所以我们需要在ScrimInsetsFrameLayout 下设置 fitsSystemWindows 为true。当然你也可以不使用这个类,而改用 layout_marginTop 属性来达到效果。
insetForeground 这个属性是ScrimInsetsFrameLayout自带的,表示插入区域的前景色,我们设置为带透明的黑色#4000。别忘了使用这个属性需要添加如下代码到attrs.xml里:
values/attrs.xml
<declare-styleable name="ScrimInsetsView">
<attr name="insetForeground" format="reference|color" />
</declare-styleable>
自此,我们已经实现了将DrawerLayout抽屉的那一部分显示在 Toolbar 和systembar(为了和下面的status bar区分,我们称为system bar)之间了,可是system bar的颜色被我们设置了透明,所以我们接下来要改变status bar的颜色。
改变Status bar的颜色
你可能已经注意到刚才的布局里面 DrawerLayout 的 fitsSystemWindows 属性设置了为true,这是因为我们要在代码里面使用了 DrawerLayout 设置status bar颜色的方法:
// 在这里我们获取了主题暗色,并设置了status bar的颜色
TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimaryDark, typedValue, true);
int color = typedValue.data;
// 注意setStatusBarBackgroundColor方法需要你将fitsSystemWindows设置为true才会生效
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.my_drawer_layout);
drawerLayout.setStatusBarBackgroundColor(color);
使用ToolBar来代替ActionBar
在代码里面这样设置:
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
‘伍’ 如何使用android-support-v7-appcompat
综述:通过SDK Manager获取Support Library。
1、打开Android SDK Manager。
2、在SDK Manager窗口,滚动到Package List的末尾,找到Extra文件夹,如果需要的话打开文件夹显示它的内容。
3、选择Android Support Library项目。
注意:如果你使用的是Android Studio开发,选择并安装Android Support Repository项目而不是Android Support Library项目。
4、点击Install packages按钮。
5、下载完成后,SDK会将Support Library文件安装到你已经存在的Android SDK目录下。
‘陆’ Android Support v4,v7,v13的区别和应用场景
高版本的 SDK里提供了新的东西,如果你用了这些东西开发应用,然后你又想支持低版本SDK的机器的时候你就需要把新的东西直接导入你的apk里面,这样你的apk装到低版本的机器里去也能运行。
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及更高版本的,一般我们都不常用,平板开发中能用到
‘柒’ Android的v7包与vlayout包版本不一致怎么办
第一查看方式:打开mole底下的build.gradle文件,在最后“zddependencies”标签中查看是否添内加v7包第容二查看方式:依次“Build——>EditLibrariesandDependencies”在右边栏目查看是否添加对应的v7包
‘捌’ Android Studio v7包版本和依赖库v7包版本不一致警告怎么解决
第一查看方式:打开mole底下的build.gradle文件,在最后“dependencies”标签中查看是否添加v7包第二查看方式:依次“Build——>EditLibrariesandDependencies”在右边栏目查看是否添加对应的v7包
‘玖’ 在android 6.0中开发还需要加载android v7包吗
如果你需要开发一些更高级的控件,需要兼容低版本也有对应的效果的话,就需要导入
‘拾’ android support v7怎么导入源码 注意 是v7的 v4的那一套不管用
File ---- Import---- Existing Android Code Into Workspace.
选择<sdk>/extras/android/support/v7/appcompat/.
在github上搜索platform_framework_support,下载解压。
在你自己的appcompat项目的libs目录增加android-support-v7-appcompat.jar.properties文件,文件内容为src=你的路径/platform_frameworks_support-master/v7/appcompat/src。
close掉v7的project再打开即可。