【问题标题】:How can I make an animated/constant glowing effect around button in android?如何在android中的按钮周围制作动画/恒定发光效果?
【发布时间】:2018-01-24 00:48:25
【问题描述】:

我正在设法让两个按钮周围有一个薄薄的光芒,有点脉动-褪色效果

按钮有一个可绘制的背景图像,我只想在它周围有一个发光效果,让它与播放的音乐产生共鸣

我已经搜索了多个线程,它们要么只是一个图像视图,要么是按下时,要么是位图,所以不一定是我要寻找的

这是我的按钮 XML:

<Button
android:id="@+id/playEasyMode_Button"
android:layout_width="145dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/play_easy_button"
android:onClick="playEasyMode"
android:layout_margin="15dp"/>

请不要尝试在按下时建议使用背景可绘制对象等等,这不是我想要做的。我想以编程方式或在 XML 中设置这样的效果


编辑:Object Animator offloat relative layout error image 编辑2:好的,所以我几乎已经达到了我想要的效果,下面是Aman Verma,这是我现在更新的XML:

<RelativeLayout
    android:id="@+id/relative_layout_id"
    android:layout_width="160dp"
    android:layout_height="55dp"
    android:layout_alignParentBottom="true"
    android:background="#FFC107"
    android:alpha=".1"
    android:layout_gravity="center_horizontal"
    android:layout_margin="15dp">

    <Button
        android:id="@+id/playEasyMode_Button"
        android:layout_width="145dp"
        android:layout_height="40dp"
        android:layout_marginLeft="8dp"
        android:background="@drawable/play_easy_button"
        android:onClick="playEasyMode"
        android:layout_marginTop="8dp"/>

</RelativeLayout>

这是java代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.home_screen_layout);

    //glowing button effect
    RelativeLayout relativelayout = (RelativeLayout)findViewById(R.id.relative_layout_id);

    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(relativelayout, "alpha", .5f, .1f);
    fadeOut.setDuration(300);
    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(relativelayout, "alpha", .1f, .5f);
    fadeIn.setDuration(300);

    final AnimatorSet mAnimationSet = new AnimatorSet();

    mAnimationSet.play(fadeIn).after(fadeOut);

    mAnimationSet.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            mAnimationSet.start();
        }
    });

    mAnimationSet.start();
}

目前正在为按钮和相对布局中的黄色设置动画 我需要按原样设置按钮,而不受实际布局动画的影响

【问题讨论】:

    标签: android android-layout android-animation android-button


    【解决方案1】:

    你可以做的是你可以像这样将相对布局作为背景-

    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="#FFC107"
            android:alpha="0.1"
            android:layout_marginBottom="30dp">
    
    
            <Button
                android:layout_width="match_parent"
                android:layout_height="40dp"
    
    
                />
    
        </RelativeLayout>
    

    我最初在相对布局中将 alpha 设置为 0.1。

    现在在activity中可以编写淡入淡出的动画了-

    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(relativelayout, "alpha", .5f, .1f);
            fadeOut.setDuration(300);
            ObjectAnimator fadeIn = ObjectAnimator.ofFloat(relativelayout, "alpha", .1f, .5f);
            fadeIn.setDuration(300);
    
            mAnimationSet = new AnimatorSet();
    
            mAnimationSet.play(fadeIn).after(fadeOut);
    
            mAnimationSet.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    mAnimationSet.start();
                }
            });
    
            mAnimationSet.start();
    

    编辑 3:

    像这样更新你的布局复制并粘贴代码:相应地更改颜色。

    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="30dp">
    
            <RelativeLayout
                android:id="@+id/relative_layout_id"
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:layout_centerInParent="true"
                android:background="#FFC107"
                android:alpha="0.1">
    
    
            </RelativeLayout>
    
            <Button
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:background="#000000"
                android:layout_centerInParent="true"
    
                />
    
        </RelativeLayout>
    

    【讨论】:

    • 这是用于 imageView 的...是否适用于按钮?也......它的涟漪效应,这不是我想要的诚实:/我想要的是一个外部发光效果,不断淡入然后淡出淡入淡出......等等
    • 你的 xml 中的按钮应该是我当前的按钮吗?那么我是否删除所有其他属性并只保留您拥有的两个属性?但这是否意味着我为按钮设置的当前背景图像会消失?
    • 哪个背景图片?你能更新整个有问题的 XML 文件吗
    • android:background="@drawable/play_easy_button"
    • 您可以使用您的按钮,只需像我一样将其包裹在布局中并将动画设置为布局......正如回答的那样......
    【解决方案2】:

    第 1 步:创建一个“发光”可绘制对象放在按钮后面,并将它们都放在 Framelayout 中。您需要在按钮周围放置一些填充物才能看到其背后的可绘制对象。

    第 2 步:像这样创建一个动画资源文件,并根据自己的喜好调整数字。

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fillAfter="true">
    
        <scale
            android:fromXScale="1"
            android:toXScale="0"
            android:fromYScale="1"
            android:toYScale="0"
            android:duration="400"
            android:pivotX="50%"
            android:pivotY="50%"
            />
    
        <scale
            android:startOffset="700"
            android:fromXScale="0"
            android:toXScale="1"
            android:fromYScale="0"
            android:toYScale="1"
            android:duration="400"
            android:pivotX="50%"
            android:pivotY="50%"
            />
    </set>
    

    【讨论】:

    • hmm...您能否在您的第 1 步中更多地强调我将如何“放在按钮后面并将它们都放在 Framelayout 中。”什么样的发光drawable?基本上像我提供的图片链接?
    猜你喜欢
    • 2011-05-19
    • 2018-05-31
    • 2011-01-30
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    相关资源
    最近更新 更多