您的位置:首页 > 编程语言 > Java开发

Eclipse配置CardeView Library

2016-12-18 11:48 246 查看
    最近想用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"

4000
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>

[align=left]
[/align]
[align=left][/align]
[align=left]
[/align]
[align=left]
[/align]



[align=center]
[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息