2016-11-14 7 views
1

Я искал через весь интернет, но не нашел ответа, как добиться того, чего я хочу.Создать андроидную кнопку с красной анимацией внешнего освещения

Я хочу создать GlowButton (я имею в виду, что это будет расширенный кнопочный) класс, который является кнопкой с внешним свечением, когда на нажатом или сфокусированном состоянии. Смотрите рисунок ниже, чтобы понять, что я имею в виду:

enter image description here

Это внешнее свечение должно появиться и disapper с анимацией (просто изменить непрозрачность).

  1. Простой вопрос. Как я могу сделать эту кнопку без анимации. Я знаю, что я могу создать что-то вроде этого:

    <item android:state_pressed="true"> 
        <shape> 
         <solid android:color="@color/gray"/> 
         <stroke 
          android:width="4dp" 
          android:color="@color/orange" /> 
         <corners 
          android:radius="8dp" /> 
         <padding android:bottom="1dp" 
           android:top="1dp" 
           android:left="1dp" 
           android:right="1dp"/> 
        </shape> 
    </item> 
    ... 
    

    Но есть твердое свечение. Мне нужно градиентное свечение, как на картинке выше.

  2. Hard вопрос. Как я могу сделать эту кнопку с появлением и исчезновением анимации? Пользовательская кнопка - свечение появляется с непрозрачностью 0% до 100% непрозрачности в пределах 300 мс. Свечение должно исчезнуть аналогичным образом, когда пользователь перестанет касаться кнопки.

Большое вам спасибо!

ответ

1

Вы можете настроить альфа-анимацию нажатием кнопки . Вы должны поставить свет в качестве фона на кнопку, и когда вы нажмете кнопку, кнопка кнопки будет анимировать, как альфа. анимация с повторением счетчика 1, так что выглядит, как появляется тень, и dissappear. Установить время анимации 300мс

alpha_animation.xml в папке Anim

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <alpha 
     android:duration="1000" 
     android:fromAlpha="0.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:toAlpha="1.0" /> 

</set> 

Компоновка файл как ниже

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/btnGlowBg" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_centerInParent="true" 
     android:background="@drawable/drawable_glow" 
     android:padding="20dp" 
    /> 
    <Button 
     android:id="@+id/btnPinButton" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_centerInParent="true" 
     android:padding="20dp" 
     android:text="10"/> 

</RelativeLayout> 

Код активности

public class TestActivity extends AppCompatActivity { 
    Button btnGlowBg; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_test); 

     btnGlowBg = (Button) findViewById(R.id.btnGlowBg); 
     btnGlowBg.setVisibility(View.GONE); 
     findViewById(R.id.btnPinButton).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) {     
       btnGlowBg.setVisibility(View.VISIBLE); 
       final Animation startAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha_animation); 
       btnGlowBg.startAnimation(startAnimation); 


      } 
     }); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^