N
no1Ltan
Fortgeschrittenes Mitglied
- 7
Hallo,
ich versuche eine simple Ein- und Ausblend-Animation zu erzeugen.
Dafür arbeite ich mit dem Object Animator.
Nach Klick auf einen Button soll ein Text ein- und ausgeblendet werden (in einer TextView).
Das Problem ist, dass es entweder nur eingeblendet wird oder nur ausgeblendet.
Egal, wie ich die Werte gesetzt habe, und selbst mit der if-Abfrage (type), es klappt leider nicht, wie ich es gern hätte.
Wie müsste der Code korrekt aussehen?
Danke für jede Hilfe!
ich versuche eine simple Ein- und Ausblend-Animation zu erzeugen.
Dafür arbeite ich mit dem Object Animator.
Nach Klick auf einen Button soll ein Text ein- und ausgeblendet werden (in einer TextView).
Das Problem ist, dass es entweder nur eingeblendet wird oder nur ausgeblendet.
Egal, wie ich die Werte gesetzt habe, und selbst mit der if-Abfrage (type), es klappt leider nicht, wie ich es gern hätte.
Wie müsste der Code korrekt aussehen?
Code:
public class Fragment1 extends Fragment
{
ObjectAnimator fade; // Variable for animation (fade-out/in effect)
TextView textViewFeedback;
Button buttonAddText;
@Override public void onResume()
{
super.onResume();
textViewFeedback = getActivity().findViewById(R.id.text_view_feedback);
buttonAddText = getActivity().findViewById(R.id.button_add_text);
buttonAddText.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
feedback(textViewFeedback);
}
});
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
View fragment1 = inflater.inflate(R.layout.fragment1, container, false); // Link view and layout
return fragment1;
}
public void feedback(final View view) // Visual feedback on button click
{
final Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
fadeEffect(view,0,3.0f, 0.0f); // Fade-Out
((TextView)view).setText(""); // Remove +1 after 500 ms
}
}, 1500); // 900 ms delay
fadeEffect(view, 1,0.0f, 3.0f); // Fade-In
((TextView)view).setText("Hello!"); // Add Hello for 1500 ms
}
public void fadeEffect(View side, int type, float f1, float f2) // Receive specific position and float values (from to)
{
if (type == 0) // Fade-In
{
fade = ObjectAnimator.ofFloat(side, View.ALPHA, f1, f2); // Either fade-In or fade-out
}
else // Fade-Out
{
fade = ObjectAnimator.ofFloat(side, View.ALPHA, f2, f1); // Either fade-In or fade-out
}
fade.setDuration(400); // 400 ms animation duration
fade.start(); // Start animation!
}
}
Danke für jede Hilfe!