关闭

翻看谷歌源码 那些让人感兴趣的东西--L版本引入的CardView

标签: 源码谷歌gitandroid
1228人阅读 评论(2) 收藏 举报
分类:

转载请注明出处:王亟亟的大牛之路

刚才Safari一阵闪退,写了一长串的文章瞬间崩塌,内心崩溃。。。。。。。

最近做的都是Web的东西,git又没找到什么想介绍的,就继续翻Google的例子,今天是CardView

官方下载地址:https://developer.android.com/downloads/samples/CardView.zip

因为有墙,我做到自己git里了,传送门:https://github.com/ddwhan0123/BlogSample/tree/master/CardView

附件地址:https://github.com/ddwhan0123/BlogSample/blob/master/CardView/CardView.zip?raw=true

在介绍内容和看效果前,继续安利(每天都在更):https://github.com/ddwhan0123/Useful-Open-Source-Android

Ok,废话不说了,看下运行效果

这里写图片描述

CardView很好的处理了我们之前用shape和selector做的事。

看下如何使用

XML:

  <android.support.v7.widget.CardView
            android:id="@+id/cardview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:elevation="100dp"
            card_view:cardBackgroundColor="@color/cardview_initial_background"
            card_view:cardCornerRadius="8dp"
            android:layout_marginLeft="@dimen/margin_large"
            android:layout_marginRight="@dimen/margin_large"
            >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/margin_medium"
                android:text="@string/cardview_contents"
                />
        </android.support.v7.widget.CardView>

他继承于FrameLayout,所以你就直接像ViewGroup一样往里塞东西就好了。

看下Activity部分的代码(详细注解)

/**
 * Fragment that demonstrates how to use CardView.
 * Fragment来演示如何使用CardView
 */
public class CardViewFragment extends Fragment {

    private static final String TAG = CardViewFragment.class.getSimpleName();

    /**
     * The CardView widget.
     * CardView控件
     */
    //@VisibleForTesting
    CardView mCardView;

    /**
     * SeekBar that changes the cornerRadius attribute for the {@link #mCardView} widget.
     * 用于拖拉圆角的SeekBar
     */
    //@VisibleForTesting
    SeekBar mRadiusSeekBar;

    /**
     * SeekBar that changes the Elevation attribute for the {@link #mCardView} widget.
     * 用于拖拉阴影的SeekBar
     */
    //@VisibleForTesting
    SeekBar mElevationSeekBar;

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @return A new instance of fragment NotificationFragment.
     * 跟之前几个例子一样,返回一个CardViewFragment的实例
     */
    public static CardViewFragment newInstance() {
        CardViewFragment fragment = new CardViewFragment();
        fragment.setRetainInstance(true);
        return fragment;
    }

    public CardViewFragment() {
        // Required empty public constructor
        //空构造
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        //填充布局
        return inflater.inflate(R.layout.fragment_card_view, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //具体获取对象
        mCardView = (CardView) view.findViewById(R.id.cardview);
        mRadiusSeekBar = (SeekBar) view.findViewById(R.id.cardview_radius_seekbar);
        mRadiusSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                //拖拽时打印
                Log.d(TAG, String.format("SeekBar Radius progress : %d", progress));
                mCardView.setRadius(progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                //Do nothing
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //Do nothing
            }
        });

        mElevationSeekBar = (SeekBar) view.findViewById(R.id.cardview_elevation_seekbar);
        mElevationSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                Log.d(TAG, String.format("SeekBar Elevation progress : %d", progress));
                mCardView.setElevation(progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                //Do nothing
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //Do nothing
            }
        });
    }
}

几乎每一个重要步骤都已经进行了解释。

CardView主要的2个属性如下:

圆角 card_view:cardCornerRadius

阴影 card_view:cardElevation

跟麻烦的XML定义圆角/阴影或再见吧!

这里给出传统的实现传送门:

http://blog.csdn.net/way_ping_li/article/details/8099092

http://www.yiqivr.com/2015/03/03/在Android中实现阴影效果/

这篇比较简单,没什么大营养,但是怕自己忘记还是写了,大家想看什么,想了解什么可以微信我(活人,不是公众号)

这里写图片描述

1
0
查看评论

翻看谷歌源码 那些让人感兴趣的东西--通知的好用功能

转载请注明出处:王亟亟的大牛之路上周写完那篇Blog之后就一直做着被分配到的Web任务,也就没继续捯饬N那些事,然后今天还在看Notification这部分,然后看到了LNotification这个包,读完源码之后继续给大家做简单的分析,因为源码涉及翻墙所以代码和自己加的注释丢到Git了安理下我的收...
  • ddwhan0123
  • ddwhan0123
  • 2016-05-30 12:39
  • 8425

翻看谷歌源码 那些让人感兴趣的东西--桌面提示未读信息

转载请注明出处:王亟亟的大牛之路之前一旦时间觉得不知道看些什么学些什么还打游戏,有点颓废。然后想想总得继续学习,正好I/O大会刚结束,那就来看一些新东西大篇幅安利:https://github.com/ddwhan0123/Useful-Open-Source-Android(我每天都在更啊!!)平...
  • ddwhan0123
  • ddwhan0123
  • 2016-05-25 12:20
  • 5514

翻看谷歌源码 那些让人感兴趣的东西--WebView如何申请授权

转载请注明出处:王亟亟的大牛之路强行安利下自己的收纳库(日更):https://github.com/ddwhan0123/Useful-Open-Source-Android昨天写了个CardView的貌似,不太受欢迎,今天上午没啥大事就继续翻源码,这一篇讲的是WebView的授权实现(WebVi...
  • ddwhan0123
  • ddwhan0123
  • 2016-06-02 11:48
  • 2467

逻辑人渴望控制那些让他们感兴趣的东西

逻辑人渴望控制那些让他们感兴趣的东西,而那些让他们感兴趣的都是些复杂的确定性系统。人是复杂的,但他们不像机器,他们的行为不具有逻辑性和可预见性。最好的机器是数字的,因为这样它就能变得最为复杂、精细,并且能被程序员轻易改变。 获取控制的代价总是更多的努力和更高的复杂度。大部分人愿意适度地努力,但程序...
  • i_like_cpp
  • i_like_cpp
  • 2013-10-30 09:59
  • 899

Android CardView使用和导入出错问题

Android CardView使用和导入出错问题 第一部分:导入Android CardView出错的问题。 Android CardView是Android在support.v7包里面的一个view组件,同时还有一个RecyclerView。 位置在Android的SDK包中,目录...
  • zhangphil
  • zhangphil
  • 2015-08-12 10:16
  • 3203

Android CardView的使用细节

转自:Android 使用CardView轻松实现卡片式设计 Material design中有一种很个性的设计概念:卡片式设计(Cards),这种设计与传统的List Item有所区别,Cards包含更多的内容元素和拥有自己的UI特征,关于Cards的设计规范可以参考官网介绍: https:/...
  • qq_27650777
  • qq_27650777
  • 2017-03-23 13:29
  • 1874

cardview 兼容 5.0以下版本

android cardview 是5.0之后发布的控件,现在有向下兼容包support.v7 。可以在兼容性方面还有一些问题。 例如在低于 API 21时 cardview 把elavation部分都算进 width长度,但是高于API 21 时 cardview 不会把elevation算进wi...
  • yusufolu9
  • yusufolu9
  • 2016-11-17 14:44
  • 645

android5.0自带兼容控件__CardView

CardView是带有立体效果的卡片View. 只有api21版本才有z轴,而低版本不能添加z轴,可以使用CardView弥补低版本的不足.
  • Rozol
  • Rozol
  • 2015-12-06 20:29
  • 1955

国产安卓手机让人反感的营销模式

小米开启了国产android机的预约抢购模式,之后的其它国产android不管是真假火爆,有些甚至库存明明已经堆了很多了,但还是走小米的预约、抢购模式。有的更升化一步:购买裸机无货,但购买豪华套装有货,套装中的搭卖的其它商品必须购买,且价格也不便宜,而且往往你根本不需要!国产安卓机难道真的抢购才算火...
  • ligaofeng
  • ligaofeng
  • 2015-04-29 18:14
  • 534

CardView源码解析-View阴影

CardView 扩展 FrameLayout 类并让您能够显示卡片内的信息,这些信息在整个平台中拥有一致的呈现方式。CardView 小部件可拥有阴影和圆角。 如果要使用阴影创建卡片,请使用 card_view:cardElevation 属性。CardView 在 Android 5....
  • Theo_Yan
  • Theo_Yan
  • 2017-08-14 21:38
  • 1038
    个人资料
    • 访问:814866次
    • 积分:10534
    • 等级:
    • 排名:第1891名
    • 原创:211篇
    • 转载:5篇
    • 译文:6篇
    • 评论:938条
    博客专栏