android clipChildren的使用
今天,簡單講講android里如何使用clipChildren。
之前,自己一直都不知道有這樣一個屬性,不過最近在學習自定義控件時,偶然發現代碼里出現了這個屬性,不知道是什么意思,所以在網上查找資料,最終是解決了問題。
翻文檔找到下面介紹
| android:clipChildren | setClipChildren(boolean) | Defines whether a child is limited to draw inside of its bounds or not.? |
| android:clipToPadding | setClipToPadding(boolean) | Defines whether the ViewGroup will clip its drawing surface so as to exclude the padding area.? |
翻譯就是,
1.clipChild用來定義他的子控件是否要在他應有的邊界內進行繪制。 默認情況下,clipChild被設置為true。 也就是不允許進行擴展繪制。
2. clipToPadding用來定義ViewGroup是否允許在padding中繪制。默認情況下,cliptopadding被設置為ture, 也就是把padding中的值都進行裁切了。
還有該功能是android第一個版本就已經提供的方法。 所有可以跨任意android版本使用。
這兩個屬性聯合起來能干什么呢? 哈, 用來做一些類似于心形放大等點擊特效非常合適啊。 ? ?不用去更改布局, 只需加入這兩個屬相,并引入動畫效果就完成了。
按照上面的思路,做個demo吧。
先看看最后的效果吧, 點擊第三個機器人就會播放一個變大的效果(類似于心變大的效果)
廢話不多說,上關鍵代碼:
1. ?布局代碼(核心)
主要看設的兩個關鍵屬性android:clipChildren和android:clipToPadding均為false。 ?這就讓點擊第三個小人時,可以跨邊界進行繪制,并且允許其在padding區域內繪制。
?2. 其他輔助代碼,如動畫和act等內容
<?xml version="1.0" encoding="utf-8"?> <scalexmlns:android="http://schemas.android.com/apk/res/android"android:fromXScale="1.0"android:fromYScale="1.0"android:toXScale="3.0"android:toYScale="3.0"android:duration="2000"android:pivotX="50%"android:pivotY="50%"> </scale>
???? 簡單講講,其實clipChildren就是使子控件是否可以繪制到父控件的外面,如果沒有設置時,默認是true,表示不允許繪制到父控件的外面。如果是false,表示可以繪制到父控件的外面。這個屬性對動畫十分有用,比如點擊后子控件變大,由于父控件沒有變大,導致子控件無法顯示完整,但是設置android:clipChildren="false"就可以解決這個問題。
再舉一個例子:
假設我們要做一個效果,界面最頂部是一個ActionBar并且是半透明的,ActionBar下面是一個ListView,在初始狀態 下,ListView是top是在ActionBar的bottom位置的,但當ListView滾動的時候可以透過ActionBar看到下面的 ListView的內容。如下面兩張圖所示:
正常態:
乍一看,不是很簡單嗎,只要設置一下marginTop或者paddingTop就可以了,但問題是只用這兩個其中一個屬性的話,ListView 滑動的時候就不能滾到paddingTop或者marginTop那部分區域,有人說可以用HeaderView來解決,這是其中一個辦法,但僅僅了為這 個占空使用HeadView有點浪費而且會影響onItemClick的position.于是這里介紹可以到這個效果的兩個屬性,就是 android:clipToPadding和android:clipChildren,這兩個屬性不是太多人用到,這里說明一下
clipToPadding就是說控件的繪制區域是否在padding里面的,true的情況下如果你設置了padding那么繪制的區域就往里 縮,clipChildren是指子控件是否超過padding區域,這兩個屬性默認是true的,所以在設置了padding情況下,默認滾動是在 padding內部的,要達到上面的效果主要把這兩個屬性設置了false那么這樣子控件就能畫到padding的區域了。
<ListViewandroid:layout_gravity="center_vertical"android:id="@+id/list"android:clipChildren="false"android:clipToPadding="false"android:paddingTop="50dip"android:layout_width="match_parent"android:layout_height="match_parent">Actionbar半透明就不詳細說了,只要設置actionbarOverlay為true并為ActionBar設置一個半透明的background即可.
android clipChildren的使用就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android clipChildren的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 插补器Interpola
- 下一篇: android handler.rem