2017-08-29 32 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