您的位置:首页 > 其它

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

2016-06-01 15:11 501 查看

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

刚才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定义圆角/阴影或再见吧!

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

/article/1657229.html

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

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

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