`
yanghaoli
  • 浏览: 288510 次
社区版块
存档分类
最新评论

Android自定义有动画效果,用于选择的Layout

 
阅读更多

 

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不会。

3
0
分享到:
评论

相关推荐

    android自定义ImageView实现旋转动画

    本文将深入探讨如何通过自定义ImageView来实现旋转动画,让图片在XYZ轴上动态展示,为用户带来更加生动的视觉效果。 首先,我们需要创建一个新的类,继承自Android的内置ImageView类。这个新类将作为我们自定义的...

    Android自定义带动画圆环进度条

    本文将深入探讨如何在Android中创建一个自定义的带有动画效果的圆环进度条,这将帮助开发者们构建更加美观且动态的用户界面。 首先,我们需要了解圆环进度条的基本概念。它是一种特殊的进度条,形状为圆形,通常...

    Android自定义Spinner样式

    以上就是关于Android自定义Spinner样式的详细说明。通过这些方法,你可以打造出与应用主题相符、用户体验良好的Spinner组件。记住,良好的UI设计能够提升用户对应用的满意度,因此花时间在自定义控件样式上是值得的...

    android自定义动画,窗口

    在Android开发中,自定义动画和窗口效果是提升用户体验的重要手段。本文将深入探讨如何实现Activity的淡入淡出效果,以及模拟iPhone的左右滑动切换界面的效果,同时讲解如何自定义Activity窗口。 首先,让我们从...

    android自定义垂直seekbar

    总结来说,创建Android自定义垂直SeekBar主要涉及以下几个步骤: 1. 创建新的View类,继承自SeekBar。 2. 重写构造函数和onMeasure()方法,使SeekBar变为垂直布局并调整尺寸。 3. 在XML布局文件中声明自定义View,并...

    android自定义对话框加动画

    在Android开发中,自定义对话框...综上所述,Android自定义对话框结合动画的应用不仅能够丰富用户体验,还能增强应用的美观度。通过合理的布局设计和动画设置,开发者可以创造出功能强大且具有吸引力的对话框组件。

    android自定义弹窗带动画

    本教程将探讨如何在Android应用中实现一个带有滑动效果的自定义弹窗。 首先,我们需要创建一个新的布局文件来定义弹窗的内容。这个布局可以包含任何视图元素,如文本、图片、按钮等。在`res/layout`目录下创建一个...

    android自定义圆盘方向按钮

    本教程将深入探讨如何在Android中实现一个自定义的圆盘方向按钮,这个控件可以用于游戏或者其他需要用户进行方向选择的应用场景。我们将讨论如何从头开始构建这样一个自定义控件,包括继承自View类,利用Canvas进行...

    自定义右上角带叉号Dialog Android 自定义layout Dialog

    在Android开发中,创建自定义对话框(Dialog)是一种常见的需求,这允许开发者根据应用的UI风格和功能需求定制...在实际项目中,你还可以进一步扩展,例如添加更多的交互元素、动画效果,甚至实现更复杂的业务逻辑。

    Android自定义带动画的开关按钮

    这个练习不仅有助于理解Android图形和动画机制,还能为你的应用增添亮点。 首先,我们需要创建一个新的XML布局文件来定义自定义开关按钮的外观。在`res/layout`目录下,我们可以创建一个名为`custom_toggle_button....

    Android 自定义加载动画Dialog弹窗效果的示例代码

    Android 自定义加载动画Dialog弹窗效果的示例代码 Android 自定义加载动画Dialog弹窗效果是Android开发中常用的效果之一,通过自定义加载动画Dialog弹窗可以提高用户体验。下面将详细介绍Android 自定义加载动画...

    Android自定义带动画的饼图PieChart

    本项目是关于如何在Android应用中自定义一个带有动画效果的饼图组件。以下将详细介绍实现这一功能所需的关键知识点。 1. **自定义View** 自定义饼图首先需要创建一个新的`View`类,继承自Android的`View`或`...

    Android自定义带动画的PopupWindow

    本教程将详细讲解如何在Android Studio环境下创建一个带有动画效果的自定义PopupWindow。 首先,我们需要了解PopupWindow的基本用法。PopupWindow对象可以通过以下方式初始化: ```java PopupWindow popupWindow =...

    Android自定义下拉框(PopupWindow实现)

    PopupWindow具有高度的可定制性,可以设置背景、宽度、高度、动画效果等。 下面我们将按照以下步骤来实现一个自定义的下拉框: 1. **创建布局文件**: - 首先,我们需要为下拉框创建一个布局文件,例如`popup_...

    android自定义标题栏

    2. 设计XML布局:在res/layout目录下创建一个XML布局文件,用于定义自定义标题栏的视图结构。这里可以设置控件的大小、位置、颜色等属性。 3. 在Activity中设置:在Activity的布局文件中,用自定义的标题栏布局替换...

    android 自定义按钮实现水波纹效果

    综上所述,实现Android自定义水波纹按钮的关键在于理解`onDraw()`方法的绘制逻辑、渐变色的使用以及触摸事件的处理。通过巧妙地结合这些技术,我们可以创建出一个美观且交互性强的自定义按钮组件。在实际项目中,...

    android自定义选择开关switchButton

    原生的`android.widget.Switch`虽然能满足基本需求,但有时我们可能需要自定义更丰富的视觉效果或者交互行为。创建自定义`SwitchButton`通常涉及到以下几个步骤: 1. **创建布局资源**:在`res/layout`目录下创建一...

    基于Android自定义实现的几种进度条

    在Android开发中,进度条(ProgressBar)是一种常见的用户界面组件,用于显示操作的进度或等待时间,提升用户体验。...实践过程中,不断探索和创新,你会发现Android自定义控件的世界充满了无限可能。

    Android中自定义ProgressDialog实现加载滚动条效果

    在`init()`方法中,我们设置了进度条的动画,这里可以替换为自己的自定义动画资源。`setProgressText()`方法允许我们动态改变文字提示。 现在我们可以在代码中实例化并使用自定义的ProgressDialog了: ```java ...

    android 自定义属性实现 ImageView 透明度渐变效果

    有了自定义属性`alphaAnimationDuration`后,我们可以创建一个AlphaAnimation来实现透明度渐变效果。在自定义的MyattrImageView类中,我们可以添加以下代码: ```java private void startAlphaAnimation() { ...

Global site tag (gtag.js) - Google Analytics