2017-08-29 33 views
0

我想要启动新线程并按下按钮时发生错误。 这里误差的一些截图和海洋保护区的代码OnCallclick按钮上的动画出错

When I start the fragment, the button starts well, with the corresponding animation

But when I press another, this simply invalidates, when it should be like the others.

这里是我的代码:

Initializacion按钮

destacados_btn = (Button) view.findViewById(R.id.destacados); 
destacados_btn.setOnClickListener(this); 
favoritos_btn.setOnClickListener(this); 
en_vivo.setOnClickListener(this); 
chat.setOnClickListener(this); 
a_= convierte.ConvierteVectorDrawable(getActivity().getBaseContext(), "destacados_icon", destacados_btn.getContext().getTheme()); 
destacados_btn.setCompoundDrawablesRelativeWithIntrinsicBounds(a_, null, null, null); 

@Override 
public void onClick(final View view) { 
    regresaElementoAnimado(); 
    switch (view.getId()) { 
     case R.id.destacados: 
      a.iniciaAnimacion(view); 
      Log.i("BOTON", "INNICIO"); 
      break; 
     case R.id.favoritos: 
      b.iniciaAnimacion(view); 
      break; 
     case R.id.live: 
      c.iniciaAnimacion(view); 
      break; 
     case R.id.chat: 
      d.iniciaAnimacion(view); 
      break; 
     default: 
      break; 
    } 
} 

private void regresaElementoAnimado() { 
     a.quitaAnimacion(); 
     b.quitaAnimacion(); 
     c.quitaAnimacion(); 
     d.quitaAnimacion(); 
} 

private final Context context; 
private final Button button; 
private ExpandAnimation animation; 
private final String txt; 
private final int color; 
private final VectorDrawableCompat drawable; 
private View view; 

/** 

* Método que realiza cambios dinamicos al botón 
* @param context Actividad 
* @param button Aboton a trabajar 
* @param color Asignación de color 
* @param txt Texto del botón 
* @param drawable Vector icono del boton 
*/ 

public AnimationButton(Context context, Button button, String txt, VectorDrawableCompat drawable, int color) { 
    this.context = context; 
    this.button = button; 
    this.txt = txt; 
    this.color = color; 
    this.drawable = drawable; 
} 

public void iniciaAnimacion(View view) { 
    this.view = view; 
    // OvalShape, shape utilizado en el menu videos {oval_menu} 
    button.setBackgroundResource(R.drawable.oval_menu); 
    // Se le asigna a {oval_manu} color dinamicamente 
    ((GradientDrawable) button.getBackground()).setColor(color); 
    // Creamos una nueva animación (se desliza solo verticalmente) 
    // context.getResources().getDimension(R.dimen.animacion_width) -> Dimensiones ó tamaño del desplazamiento la animacion 
    animation = new ExpandAnimation(view, view.getBottom(), 100, 90, (int) context.getResources().getDimension(R.dimen.animacion_width)); 
    // Asignamos duración 
    animation.setDuration(300); 
    // ANimación persistente hasta que termina 
    animation.setFillAfter(true); 
    // Eventos de la animación 
    animation.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation arg0) { 
      // Ocultamos icono izquiero hasta que acabe la animación 
      button.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, null); 
      // Damos márgen izquiero para mejorar el estilo del icono izqquierdo del boton 
      actualizaPadding(); 
     } 

     @Override 
     public void onAnimationRepeat(Animation arg0) { 
     } 

     @Override 
     public void onAnimationEnd(Animation arg0) { 
      // Intercambiamos colores del icono y oval_menu, también se aigna titulo al botón 
      cambiaElementosBoton(Color.WHITE /* Color del drawable al quitar animacioón */, 
        drawable,/* Icono */ 
        txt); /* Texto del boton */ 
     } 
    }); 
    view.startAnimation(animation); 
} 

public void quitaAnimacion() { 
    // Si hay animación existente canelala 
    if(animation != null) { 
     // animacion = null 
     animation = null; 
     // Reacomodamos márgenes 
     actualizaPadding(); 
     // quitamos animación al botón 
     view.getAnimation().cancel(); 
     // volvemos al estado original 
     cambiaElementosBoton(color, drawable, ""); 
     // quitamos oval menu 
     button.setBackground(null); 
    } 
} 

/** 

* Método que realiza cambios dinamicos al botón 
* @param color Asignación de color 
* @param icono_izquiero Vector previamente trabajado para el botón (icono) 
* @param txt Texto del botón 
*/ 
private void cambiaElementosBoton(int color, VectorDrawableCompat icono_izquiero, String txt) { 
    icono_izquiero.setColorFilter(color, PorterDuff.Mode.SRC_IN); // Color del icono 
    button.setCompoundDrawablesRelativeWithIntrinsicBounds(icono_izquiero, null, null, null); 
    button.setText(txt); 
} 

/** 

* Márgenes en el botón 
* 25 corresponde al padding izquierdo 
*/ 
private void actualizaPadding() { 
    button.setPadding(25, 10, 0, 0); 
} 
+0

我可以看到你的日志猫的错误? – MrAppMachine

+0

这个不显示任何错误,只有当我使用performClick或CallOnClick时,不认识OnClick事件 – user3196443

回答

0

我觉得有必要设置setOnClickListener()方法在你的按钮上,然后当你点击你的按钮调用onClick事件。

在您的按钮初始化下面试试这个:

destacados_btn.setOnClickListener(本);

+0

我已经定义这个 – user3196443

+0

Where ..?对不起,我没有看到 –

+0

我没有把这个例子代码,但在我定义这个项目。 – user3196443