當前位置:首頁 » 安卓系統 » 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-05-02 00:55:53 瀏覽:599
英國學術訪問簽證 發布:2024-05-02 00:26:30 瀏覽:56
刷歡樂豆腳本 發布:2024-05-02 00:25:51 瀏覽:174
安卓買藍牙耳機什麼牌子好 發布:2024-05-02 00:08:32 瀏覽:945
編譯器基礎知識 發布:2024-05-01 23:50:59 瀏覽:26
我的世界拔刀劍伺服器和ip地址 發布:2024-05-01 23:26:24 瀏覽:531
phpsmtp郵件發送 發布:2024-05-01 22:43:04 瀏覽:239
資料庫的規范化理論 發布:2024-05-01 22:38:16 瀏覽:594
md5加密ppt 發布:2024-05-01 21:51:46 瀏覽:353
dnf雲伺服器50g 發布:2024-05-01 21:44:56 瀏覽:450