我想要启动新线程并按下按钮时发生错误。 这里误差的一些截图和海洋保护区的代码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);
}
我可以看到你的日志猫的错误? – MrAppMachine
这个不显示任何错误,只有当我使用performClick或CallOnClick时,不认识OnClick事件 – user3196443