N
no1Ltan
Fortgeschrittenes Mitglied
- 7
Hallo,
ich versuche in dieser kleinen Test-App, die aus nur 1 Activity und 1 TextView besteht, folgendes:
Beim Klick auf die TextView soll einfach der Wert innerhalb der TextView mit 1 addiert werden.
Zusätzlich soll es einen Klick-Effekt geben (visuelles Feedback) und es soll verhindert werden, dass ein Doppelklick möglich ist.
Beim Doppelklick soll also nicht addiert werden und der Klick-Effekt soll auch nicht an sein.
Habe es hinbekommen, dass der Doppelklick nicht funktioniert und den Klick-Effekt habe ich auch hinbekommen.
Leider schaffe ich es nicht, den Klick-Effekt kurzzeitig zu deaktivieren.
Ich dachte, SystemClock.sleep(1000); würde mir da helfen, aber das sorgt einfach nur für eine Verzögerung in der Methode.
Das ist der Code:
Wie bekomme ich es hin, dass auch der Klick-Effekt aus ist, wenn der Counter nicht hochgezählt wird?
Bezüglich des Hintergrundes in der TextView ist auch einiges unklar... aber eins nach dem anderen.
Grüße
ich versuche in dieser kleinen Test-App, die aus nur 1 Activity und 1 TextView besteht, folgendes:
Beim Klick auf die TextView soll einfach der Wert innerhalb der TextView mit 1 addiert werden.
Zusätzlich soll es einen Klick-Effekt geben (visuelles Feedback) und es soll verhindert werden, dass ein Doppelklick möglich ist.
Beim Doppelklick soll also nicht addiert werden und der Klick-Effekt soll auch nicht an sein.
Habe es hinbekommen, dass der Doppelklick nicht funktioniert und den Klick-Effekt habe ich auch hinbekommen.
Leider schaffe ich es nicht, den Klick-Effekt kurzzeitig zu deaktivieren.
Ich dachte, SystemClock.sleep(1000); würde mir da helfen, aber das sorgt einfach nur für eine Verzögerung in der Methode.
Das ist der Code:
Code:
import android.content.res.TypedArray;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity
{
private int count;
private long mLastClickTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textViewCount = findViewById(R.id.text_view_count);
textViewCount.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000) // If second click is within 1 second:
{
return; // Don't execute code below
}
mLastClickTime = SystemClock.elapsedRealtime(); // Reset mLastClickTime
rippleEffect(); // Add click effect
count++; // Increment counter by 1
String countText = Integer.toString(count); // Cast int to String
textViewCount.setText(countText); // Show String value in TextView
}
});
}
public void rippleEffect() // Add click effect
{
TextView textViewCount = findViewById(R.id.text_view_count); // Link ID with variable
int[] attrs = new int[]{R.attr.selectableItemBackground};
TypedArray typedArray = obtainStyledAttributes(attrs);
int backgroundResource = typedArray.getResourceId(0, 0);
textViewCount.setBackgroundResource(backgroundResource);
textViewCount.setClickable(false); // Set clickable to false
SystemClock.sleep(1000); // Add delay of 1 s - BAD IDEA!
textViewCount.setClickable(true); // Set clickable to true again
}
}
Wie bekomme ich es hin, dass auch der Klick-Effekt aus ist, wenn der Counter nicht hochgezählt wird?
Bezüglich des Hintergrundes in der TextView ist auch einiges unklar... aber eins nach dem anderen.
Grüße