public class SelectLayout extends LinearLayout { private AnimationSet mInAnime; private AnimationSet mOutAnime; private Animation mAlphaAnime; private View mCheckView; private View[] mViewArray; public SelectLayout(Context context, AttributeSet attrs) { super(context, attrs); // TODO 鑷姩鐢熸垚鐨勬瀯閫犲嚱鏁板瓨鏍? } public void iniSelectLayout(){ iniAnimation(); mViewArray=new View[getChildCount()]; for(int i=0;i<getChildCount();i++){ mViewArray[i]=getChildAt(i); if(i>0) mViewArray[i].startAnimation(mAlphaAnime); } mCheckView=mViewArray[0]; mCheckView.startAnimation(mInAnime); MyOnClickListener tmp=new MyOnClickListener(); for(View item:mViewArray) item.setOnClickListener(tmp); } private void iniAnimation(){ mInAnime=new AnimationSet(false); ScaleAnimation tmp=new ScaleAnimation(1, 1.2f, 1, 1.2f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); tmp.setDuration(300); AlphaAnimation tmp2=new AlphaAnimation(0.7f, 1); tmp2.setDuration(300); mInAnime.addAnimation(tmp); mInAnime.addAnimation(tmp2); mInAnime.setFillAfter(true); tmp=new ScaleAnimation(1.2f, 1, 1.2f, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); tmp.setDuration(300); tmp2=new AlphaAnimation(1, 0.7f); tmp2.setDuration(300); mOutAnime=new AnimationSet(false); mOutAnime.addAnimation(tmp); mOutAnime.addAnimation(tmp2); mOutAnime.setFillAfter(true); mAlphaAnime=new AlphaAnimation(0.7f,0.7f); mAlphaAnime.setFillAfter(true); } public View getSelectView(){ return mCheckView; } private class MyOnClickListener implements OnClickListener{ @Override public void onClick(View v) { // TODO 鑷姩鐢熸垚鐨勬柟娉曞瓨鏍? if(!v.equals(mCheckView)){ for(int i=0;i<mViewArray.length;i++){ if(!mViewArray[i].equals(v)&&!mViewArray[i].equals(mCheckView)) mViewArray[i].startAnimation(mAlphaAnime); } v.startAnimation(mInAnime); mCheckView.startAnimation(mOutAnime); mCheckView=v; } } }
继承自LinearLayout,在xml里当LinearLayout用就行了,调用iniSelectLayout后会有类似RadioGroup的功能,被选中的子View会放大,没被选中的是半透明。注意如果子View的背景是jpg的话会出现闪烁,png不会。
相关推荐
本文将深入探讨如何通过自定义ImageView来实现旋转动画,让图片在XYZ轴上动态展示,为用户带来更加生动的视觉效果。 首先,我们需要创建一个新的类,继承自Android的内置ImageView类。这个新类将作为我们自定义的...
本文将深入探讨如何在Android中创建一个自定义的带有动画效果的圆环进度条,这将帮助开发者们构建更加美观且动态的用户界面。 首先,我们需要了解圆环进度条的基本概念。它是一种特殊的进度条,形状为圆形,通常...
以上就是关于Android自定义Spinner样式的详细说明。通过这些方法,你可以打造出与应用主题相符、用户体验良好的Spinner组件。记住,良好的UI设计能够提升用户对应用的满意度,因此花时间在自定义控件样式上是值得的...
在Android开发中,自定义动画和窗口效果是提升用户体验的重要手段。本文将深入探讨如何实现Activity的淡入淡出效果,以及模拟iPhone的左右滑动切换界面的效果,同时讲解如何自定义Activity窗口。 首先,让我们从...
总结来说,创建Android自定义垂直SeekBar主要涉及以下几个步骤: 1. 创建新的View类,继承自SeekBar。 2. 重写构造函数和onMeasure()方法,使SeekBar变为垂直布局并调整尺寸。 3. 在XML布局文件中声明自定义View,并...
在Android开发中,自定义对话框...综上所述,Android自定义对话框结合动画的应用不仅能够丰富用户体验,还能增强应用的美观度。通过合理的布局设计和动画设置,开发者可以创造出功能强大且具有吸引力的对话框组件。
本教程将探讨如何在Android应用中实现一个带有滑动效果的自定义弹窗。 首先,我们需要创建一个新的布局文件来定义弹窗的内容。这个布局可以包含任何视图元素,如文本、图片、按钮等。在`res/layout`目录下创建一个...
本教程将深入探讨如何在Android中实现一个自定义的圆盘方向按钮,这个控件可以用于游戏或者其他需要用户进行方向选择的应用场景。我们将讨论如何从头开始构建这样一个自定义控件,包括继承自View类,利用Canvas进行...
在Android开发中,创建自定义对话框(Dialog)是一种常见的需求,这允许开发者根据应用的UI风格和功能需求定制...在实际项目中,你还可以进一步扩展,例如添加更多的交互元素、动画效果,甚至实现更复杂的业务逻辑。
这个练习不仅有助于理解Android图形和动画机制,还能为你的应用增添亮点。 首先,我们需要创建一个新的XML布局文件来定义自定义开关按钮的外观。在`res/layout`目录下,我们可以创建一个名为`custom_toggle_button....
Android 自定义加载动画Dialog弹窗效果的示例代码 Android 自定义加载动画Dialog弹窗效果是Android开发中常用的效果之一,通过自定义加载动画Dialog弹窗可以提高用户体验。下面将详细介绍Android 自定义加载动画...
本项目是关于如何在Android应用中自定义一个带有动画效果的饼图组件。以下将详细介绍实现这一功能所需的关键知识点。 1. **自定义View** 自定义饼图首先需要创建一个新的`View`类,继承自Android的`View`或`...
本教程将详细讲解如何在Android Studio环境下创建一个带有动画效果的自定义PopupWindow。 首先,我们需要了解PopupWindow的基本用法。PopupWindow对象可以通过以下方式初始化: ```java PopupWindow popupWindow =...
PopupWindow具有高度的可定制性,可以设置背景、宽度、高度、动画效果等。 下面我们将按照以下步骤来实现一个自定义的下拉框: 1. **创建布局文件**: - 首先,我们需要为下拉框创建一个布局文件,例如`popup_...
2. 设计XML布局:在res/layout目录下创建一个XML布局文件,用于定义自定义标题栏的视图结构。这里可以设置控件的大小、位置、颜色等属性。 3. 在Activity中设置:在Activity的布局文件中,用自定义的标题栏布局替换...
综上所述,实现Android自定义水波纹按钮的关键在于理解`onDraw()`方法的绘制逻辑、渐变色的使用以及触摸事件的处理。通过巧妙地结合这些技术,我们可以创建出一个美观且交互性强的自定义按钮组件。在实际项目中,...
原生的`android.widget.Switch`虽然能满足基本需求,但有时我们可能需要自定义更丰富的视觉效果或者交互行为。创建自定义`SwitchButton`通常涉及到以下几个步骤: 1. **创建布局资源**:在`res/layout`目录下创建一...
在Android开发中,进度条(ProgressBar)是一种常见的用户界面组件,用于显示操作的进度或等待时间,提升用户体验。...实践过程中,不断探索和创新,你会发现Android自定义控件的世界充满了无限可能。
在`init()`方法中,我们设置了进度条的动画,这里可以替换为自己的自定义动画资源。`setProgressText()`方法允许我们动态改变文字提示。 现在我们可以在代码中实例化并使用自定义的ProgressDialog了: ```java ...
有了自定义属性`alphaAnimationDuration`后,我们可以创建一个AlphaAnimation来实现透明度渐变效果。在自定义的MyattrImageView类中,我们可以添加以下代码: ```java private void startAlphaAnimation() { ...