当前位置:首页 » 安卓系统 » android点击波纹效果

android点击波纹效果

发布时间: 2024-04-05 17:51:00

A. 安卓按钮按下效果怎么设置呢怎么设置按钮圆角和按下效果

可以通过shape设置圆角

<?xml version="1.0" encoding="utf-8"?>
<!-- shape如果不声明形状默认是正方形 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 设置圆角 -->
<corners android:radius="2dp" >
</corners>
<!-- 设置填充色 -->
<solid android:color="#4285f4" >
</solid>
<!-- 设置边框的颜色和宽度 -->
<stroke
android:width="1dp"
android:color="#4285f4" >
</stroke>
</shape>
通过selector设置点击效果

button_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- 这个是用于控制按钮组背景的文件 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<!-- **点击时效果**********背景引用的资源*************************是否获得焦点*********************是否按下******* -->
<item android:drawable="@drawable/button_p" android:state_focused="true" android:state_pressed="false"/>
<item android:drawable="@drawable/button_p" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/button_p" android:state_focused="false" android:state_pressed="true"/>

<!-- **************没有任何操作时显示的背景************** -->
<item android:drawable="@drawable/button_n"></item>
</selector>
在xml文件中设置button的background属性。
android:background="@drawable/button_bg"

B. Android中CardView的使用

一、简介

Material  design 中有一种很个性的设计概念:卡片式设计(Cards),这种设计与传统的List Item 有所区别,Cards 包含更多的内容元素和拥有自己的 UI 特征,关于 Cards 的设计规范可以参考官网介绍:

https://material.google.com/components/cards.html#

为了更好地实现这种 Cards  UI  的设计,Google在v7  包中引进了一种全新的控件:CardVew。用一句话介绍了 CardView:一个带圆角和阴影背景的 FrameLayout。CardView在Android Lollipop(API 21)及以上版本的系统中适配较好。

二、导入依赖

compile 'com.android.support:cardview-v7:版本'

三、常用属性

1. API 5 以上(Android 2.0)

1.1 app:cardConerRadius: 圆角的半径

1.2 app:cardBackgroundColor:CardView 的卡片颜色

2. API 21 以上(Android 5.0)

2.1 app:cardElevation:CardView 的 Z 轴阴影

2.2 app:cardMaxElevation:阴影的最大高度

2.3 android:foreground="?android:attr/selectableItemBackground":点击时有波纹发散效果

四、排版技巧

CardView 从本质上属于 FrameLayout,而 CardView 通常包含了较多的内容元素,为了方 便 地 排 版 布 局 中 的 各 个 元 素 , 一 般 借 助 于 其 他 基 本 布 局 容 器 , 比 如 使 用 了 一个RelativeLayout 作为 CardView 的唯一子布局。

C. 如何取消android5.0的水波纹效果

<item android:state_enabled="false">
<shape>
<corners android:radius="2dp"></corners>
<solid android:color="@color/redcolorPressed"></solid>
</shape>
</item>
<item android:state_pressed="true">
<shape>
<corners android:radius="2dp"></corners>
<solid android:color="@color/redcolorPressed"></solid>

D. 如何让所有 View 都可以带上点击的水波纹效果

V2EX›Android

如何让所有 View 都可以带上点击的水波纹效果?

AtlantisZ· 2015-11-12 23:49:00 +08:00

这是一个创建于 483 天前的主题,其中的信息可能已经有所发展或是发生改变。

根据 G官方文档
定制触摸反馈
材料设计中的触摸反馈可在用户与 UI 元素互动时,在接触点上提供即时视觉确认。适用于按钮的默认触摸动画使用全新 RippleDrawable 类别,以波纹效果实现不同状态间的转换。

在大多数情况下,您应以下列方式指定视图背景,在您的视图 XML 中应用此功能:

?android:attr/selectableItemBackground 指定有界的波纹
?android:attr/ 指定越界的波纹
注意: 是 API 级别 21 中推出的新属性。

此外,您可利用 ripple 元素将 RippleDrawable 定义为一个 XML 资源。

您可以为 RippleDrawable 对象指定一种颜色。如果要改变默认触摸反馈颜色,请使用主题的 android:colorControlHighlight 属性。


但是发现有时候一个 LinearLayout 设置 android:background="?android:attr/selectableItemBackground"
就带上了水波纹效果,有的不行,,TextView 也是,设置 android:background="?android:attr/selectableItemBackground"有的带上了,有的不行.


RecyclerView 的 Item layout 根布局加上了这个属性也无效果.

后来辗转反侧,找到了 Stackflow 找到的回答,也不奏效.
FrameLayout view = (FrameLayout) View.inflate(context, R.layout.item_top_news, null);
RippleDrawable drawable = (RippleDrawable) mActivity.getResources()
.getDrawable(R.drawable.ripple_background);

view.setClickable(true);
view.setForeground(drawable);

求解如何实现 BiliBili MD 客户端,几乎每个 View 点击都有的水波纹效果.

波纹

attr

Android

drawable

12 回复 |直到 2015-11-19 21:41:40 +08:00

1

little_cup 2015-11-13 00:04:55 +08:00

从设计的角度说,你不应该让所有的 View 都带上 Ripple 效果,只应该让可点击的元素带上。
从程序的角度说,你无法让所有的 View 都带上 Ripple 效果,只能让拿到点击事件的元素带上。

2

AtlantisZ 2015-11-13 00:15:38 +08:00

@little_cup额,我只是感觉很难有短文字叙述清楚问题,原来标题是如何让 RecyclerView 的子 Item 带上水波纹效果了.感觉太局限了.
请问现在 RecyclerView 的子 Item 已经可以响应点击事件跳转 Activity 了,请问如何才能带上水波纹的点击效果.我在 Item 的 layout 根布局修改 android:background="?android:attr/selectableItemBackground"没有效果.

3

little_cup 2015-11-13 00:25:24 +08:00

@AtlantisZ哪个 view 绑定 click 就给哪个设 selectableItemBackground 。当然注意不要被其他 view 在视觉上覆盖了。

4

AtlantisZ 2015-11-13 00:42:01 +08:00

在 onBindViewHolder 中
TypedValue typedValue = new TypedValue();
mActivity.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, typedValue, true);
Drawable background = getResources().getDrawable(typedValue.resourceId);
// Drawable background = getResources().getDrawable(R.drawable.ripple_background);
holder.rootView.setBackground(background);
holder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getContext(), VideoDetailActivity.class));
// ToastUtils.showToast(mActivity, "av :: " + mRecommendList.get(position).av);
}
});
还是没有用额.

5

AtlantisZ 2015-11-13 11:17:22 +08:00

@little_cup

在 onBindViewHolder 中
TypedValue typedValue = new TypedValue();
mActivity.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, typedValue, true);
Drawable background = getResources().getDrawable(typedValue.resourceId);
// Drawable background = getResources().getDrawable(R.drawable.ripple_background);
holder.rootView.setBackground(background);
holder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getContext(), VideoDetailActivity.class));
}
});
还是没有用额.

6

miao1007 2015-11-15 19:55:46 +08:00

这样写不会报错?

ClassNoFound 这个错误在低 API 下会出现

7

ybjaychou 2015-11-17 20:53:35 +08:00

我也是在愁这个问题,同样是在 RecyclerView 的 Item 里面,不知道怎么才能有点击效果,就算不是水纹也可以啊。。
顺便搭个车,就是怎么在 RecyclerView 里面做多选操作,然后 Toolbar 上面出现操作按钮,不知道有人做过没

8

ecma 2015-11-18 19:01:06 +08:00

同表示弄不出波纹点击效果,不知道是不是 SDK 版本的原因。
目前暂时通过 github 上一个开源项目实现那个效果了。。
https://github.com/balysv/material-ripple

9

ecma 2015-11-18 19:05:55 +08:00

@ybjaychou
我自己是在 itemView 上加入了一个 checkBox ,平常处于隐藏状态,需要批量删除的适合,重新加载 RecyclerView 让 checkBox 显示。而 checkBox 的点击事件则是往一个数组里面扔 item 的 id ,那样就知道选了那些。
toolbar 的改变的话可以通过 onPrepareOptionsMenu 和 invalidateOptionsMenu()来改变,当然也可以通过 ActionMode.Callback 来实现
通过这种方法来实现的话需要对 checkBox 的点击进行标示优化,避免列表滑动的适合 checkBox 错误问题

10

ybjaychou 2015-11-19 12:52:08 +08:00 via Android

@ecma好,谢谢,我试试!

11

AtlantisZ 2015-11-19 16:49:47 +08:00

@ybjaychou
@ecma

参考http://stackoverflow.com/questions/26961147/touch-feedback-with-recyclerview-and-cardview/29033353解决了 RecyclerView 中 Item 无水波纹效果的问题额.

12

ecma 2015-11-19 21:41:40 +08:00

@AtlantisZ
THX!等下就去试试喽

热点内容
域名访问量查询 发布:2024-11-27 20:22:13 浏览:725
如何清理网页帐号和登录密码 发布:2024-11-27 20:18:53 浏览:372
大发明解压密码 发布:2024-11-27 20:18:52 浏览:502
蓝鸥c语言 发布:2024-11-27 20:14:38 浏览:813
阿里云高配服务器租用 发布:2024-11-27 20:13:40 浏览:758
国外图片上传 发布:2024-11-27 20:13:31 浏览:546
苹果手机怎么重置密码 发布:2024-11-27 20:10:28 浏览:533
万里红存储介质信息消除工具 发布:2024-11-27 20:10:13 浏览:387
氢怎么存储 发布:2024-11-27 20:08:46 浏览:837
安卓120w快充哪个好 发布:2024-11-27 19:53:40 浏览:478