Eclipse配置CardeView Library

来源:互联网 发布:贵州云博大数据 编辑:程序博客网 时间:2024/06/06 19:17
    最近想用CardView这个Layout,因为原来开发Android程序一直是用Eclipse的缘故,想在Eclipse导入CardView这个库。实际上Cardview在Android Studio上配置非常简单,无奈Android Studio太占内存了,这里吐槽一下Android Studio:4G内存基本打开Android Studio后基本会去到70%以上,还没打开AVD。如果打开AVD基本上电脑就跟砖头差不多了。因此,还是用Eclipse开发好一些。
    网上有很多关于Eclipse的使用CardView的配置,但是感觉总写的不全面。看多很多人些的配置,基本上在Eclipse直接导入CardView Library,Project properties设置为“Is Library”属性,然后在使用项目中引用CardView Library即可。
这里有个问题,就是使用者必须自己下载CardView Library,但是这个库在网上基本找不到资源,初学者简直就是找瞎眼也找不着。通常能找到CardView的Jar文件,悲剧的是,这个文件还不能直接在项目直接引用。网上众说纷纭,能找到一些关于JAR包使用的案列,也不乏成功者。我试了网上提供的方法,坑真尼玛多,反正被虐的遍体鳞伤。
    受CardView Library的启发,既然手上没有这个库,干脆自己动手生成一个就完事了!在Android Studio SDK的文件夹下找到  extras\\android\m2repository\com\android\support\这个目录,下面我们可以看到CardView这个文件夹(我不确定是否每个SDK都能找到这个目录,如果没有请下载安装Android Studio,安装完毕后会生成一个SDK文件夹)。进入这个文件夹可以发现有很多版本的CardView。



    进入任意一个版本,在里面可以找到一个cardview-v7-xx-xx-xx-sources.jar的文件。这个其实就是Cardview的源码包。接下来我们将使用这个源码包在制作cardview library。


下面我选择的试cardview-v7-21.0.0-source.jar,这是最低版本的cardview.

    Copy cardview-v7-21.0.0-source到桌面,解压文件后可以得到两个文件夹,其中源码放在android\support\v7\widget这个文件夹下,进入android\support\v7\widget就可以看到cardview的源码了。

android\support\v7\widget
    在Eclipse新建一个Android Application,Project Name可以写CardViewLibs,注意Cardview使用的API应高于21。然后点击Next

    这里应将“Mark this project as a library”勾上,那么所建工程就是一个Library工程。“Create custom launcher icon”和“Create activity”可以不选。意味着可以不需要应用图标和创建Activity。

    点击Finish完成工程创建,然后Copy前面解压好的源码文件夹android到工程源码目录src\下。然后在Eclipse右键CardViewLib->Refresh,更新Eclipse下工程,即可看到Copy到src\文件夹下的源码了。


   这里还缺少一个文件。回到android\support\v7\widget这个文件夹下找到一个叫cardview-v7-21.x.x.aar的文件,Copy到桌面后将文件后缀该为Zip文件,解压这个文件,得到res/values/ values.xml这个文件和AndroidManifest,以及一个class.jar的文件。values.xml拷贝到CardviewLib工程夹下的res/values/下,新AndroidManifest替换原来的AndroidManifest,class.jar copy到主目录下。即可。
到此,CardView Library创建完毕。

   其他工程调用这个库,可以在Project->properties->android下Library选项卡,点击Add,添加该库即可使用。注意Android的API必须大于21以上。

    最后,附上Cardview使用的demo XML文件,以供参考(这个cardview demo底部圆角其实有点小问题,可能是我使用cardview的版本太低的缘故)。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res/com.answerinpay"    android:id="@+id/linearview"    android:layout_width="wrap_content"    android:layout_height="match_parent"    android:gravity="fill_vertical"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="10dp"    android:scrollbarAlwaysDrawVerticalTrack="false"    tools:context="com.answerinpay.MainActivity" >    <android.support.v7.widget.CardView        android:id="@+id/cardview1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginBottom="10dp"        android:layout_marginLeft="1dp"        android:layout_marginRight="1dp"        android:clickable="true"        android:longClickable="true"        app:cardBackgroundColor="@color/ghostwhite"        app:cardCornerRadius="10dp"        app:cardElevation="20dp"        app:cardMaxElevation="20dp"        app:cardPreventCornerOverlap="true"        app:cardUseCompatPadding="false" >        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_marginBottom="@dimen/cardview_default_radius"            android:layout_marginLeft="@dimen/cardview_default_radius"            android:layout_marginRight="@dimen/cardview_default_radius"            android:layout_marginTop="@dimen/cardview_default_radius" >        <TextView            android:id="@+id/info_text"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/essay" />    <ImageView        android:id="@+id/image"       android:layout_below="@id/info_text"       android:layout_width="wrap_content"       android:layout_height="100dp"       android:scaleType="fitXY"       android:src="@drawable/nature"        />           </RelativeLayout>     </android.support.v7.widget.CardView>        <android.support.v7.widget.CardView        android:id="@+id/cardview2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginBottom="10dp"        android:layout_marginLeft="1dp"        android:layout_marginRight="1dp"        android:layout_marginTop="@dimen/cardview_compat_inset_shadow"        android:clickable="true"        app:cardBackgroundColor="@color/ghostwhite"        app:cardCornerRadius="10dp"        app:cardElevation="15dp"        app:cardMaxElevation="20dp"        app:cardPreventCornerOverlap="true" >        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:padding="@dimen/cardview_default_radius" >        <TextView            android:id="@+id/info_text2"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="@string/title" />   <ImageView       android:id="@+id/image2"       android:layout_width="match_parent"       android:layout_height="100dp"       android:layout_below="@id/info_text2"       android:scaleType="fitXY"       android:src="@drawable/scene" />           </RelativeLayout>     </android.support.v7.widget.CardView>    <android.support.v7.widget.CardView        android:id="@+id/cardview3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginBottom="10dp"        android:layout_marginLeft="1dp"        android:layout_marginRight="1dp"        android:layout_marginTop="@dimen/cardview_compat_inset_shadow"        android:clickable="true"        app:cardBackgroundColor="@color/deeppink"        app:cardCornerRadius="10dp"        app:cardElevation="10dp"        app:cardMaxElevation="20dp"        app:cardPreventCornerOverlap="true" >        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:padding="@dimen/cardview_default_radius" >        <TextView            android:id="@+id/info_text3"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="@string/demo" />           </RelativeLayout>     </android.support.v7.widget.CardView>        </LinearLayout>







0 0
原创粉丝点击