最近在看别人技术博客(http://www.cnblogs.com/over140/p/3508335.html)的时候,发现一个属性:android:clipChildren属性。html
翻文档找到下面介绍android
Defines whether a child is limited to draw inside of its bounds or not.
Defines whether the ViewGroup will clip its drawing surface so as to exclude the padding area.
翻译就是,api
1.clipChild用来定义他的子控件是否要在他应有的边界内进行绘制。 默认状况下,clipChild被设置为true。 也就是不容许进行扩展绘制。app
2. clipToPadding用来定义ViewGroup是否容许在padding中绘制。默认状况下,cliptopadding被设置为ture, 也就是把padding中的值都进行裁切了。ide
还有该功能是android第一个版本就已经提供的方法。 全部能够跨任意android版本使用。布局
这两个属性联合起来能干什么呢? 哈, 用来作一些相似于心形放大等点击特效很是合适啊。 不用去更改布局, 只需加入这两个属相,并引入动画效果就完成了。post
按照上面的思路,作个demo吧。动画
先看看最后的效果吧, 点击第三个机器人就会播放一个变大的效果(相似于心变大的效果)this
废话很少说,上关键代码:url
1. 布局代码(核心)
主要看设的两个关键属性android:clipChildren和android:clipToPadding均为false。 这就让点击第三个小人时,能够跨边界进行绘制,而且容许其在padding区域内绘制。
2. 其余辅助代码,如动画和act等内容
>
packagecom.example.clipchildren;importandroid.os.Bundle;importandroid.app.Activity;importandroid.view.Menu;importandroid.view.View;importandroid.view.animation.Animation;importandroid.view.animation.AnimationUtils;importandroid.widget.ImageView;importandroid.widget.Toast;public class MainActivity extendsActivity {//只对第三个小人作放大动做
ImageView image3 =null;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image3=(ImageView) findViewById(R.id.img3);
}
@Overridepublic booleanonCreateOptionsMenu(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 voidAA(View view) {
Toast.makeText(this, "aa", Toast.LENGTH_SHORT).show();
Animation an=AnimationUtils.loadAnimation(getApplicationContext(), R.anim.anims);
image3.startAnimation(an);
}
}
3. 除了这种应用,网上还有其余人对这两个属性的妙用:
用viewPaper来实现一个Gallery效果:http://www.iteye.com/topic/1129898