日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android clipChildren的使用

發布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android clipChildren的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.




今天,簡單講講android里如何使用clipChildren。


之前,自己一直都不知道有這樣一個屬性,不過最近在學習自定義控件時,偶然發現代碼里出現了這個屬性,不知道是什么意思,所以在網上查找資料,最終是解決了問題。


翻文檔找到下面介紹

android:clipChildrensetClipChildren(boolean)Defines whether a child is limited to draw inside of its bounds or not.?
android:clipToPaddingsetClipToPadding(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區域內繪制。


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"android:clipChildren="false" android:clipToPadding="false"><ImageViewandroid:id="@+id/img1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:src="@drawable/ic_launcher" /><ImageViewandroid:id="@+id/img2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:src="@drawable/ic_launcher" /><ImageViewandroid:id="@+id/img3"android:onClick="AA"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="@android:color/black"android:src="@drawable/ic_launcher" /><ImageViewandroid:id="@+id/img4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:src="@drawable/ic_launcher" /><ImageViewandroid:id="@+id/img5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:src="@drawable/ic_launcher" /><ImageViewandroid:id="@+id/img6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:src="@drawable/ic_launcher" /></LinearLayout>

?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>


package com.example.clipchildren;import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.Toast;public class MainActivity extends Activity {//只對第三個小人做放大動作ImageView image3 =null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);image3 = (ImageView) findViewById(R.id.img3);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void AA(View view) {Toast.makeText(this, "aa", Toast.LENGTH_SHORT).show();Animation an = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.anims);image3.startAnimation(an);}}


???? 簡單講講,其實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的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。