J'essaye d'implémenter quelque chose comme dans l'image gif. Des suggestions comment faire cela? See image here J'ai défini OnTouchListener sur ma mise en page parente qui contient des textviews. Détecte la direction de l'événement tactile. Mais je suis coincé sur la façon de changer l'arrière-plan des textviews en continu selon le glissement du doigt.Mettre en surbrillance Textview onTouch
<LinearLayout
android:id="@+id/grades"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:weightSum="15">
<TextView
android:id="@+id/txt_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="1"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center"
android:padding="3dp"
android:text="2"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="3"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="4"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="5"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="6"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="7"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="8"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="9"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="10"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="11"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="12"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:padding="3dp"
android:text="13"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:maxLines="1"
android:padding="3dp"
android:text="14"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:id="@+id/txt_15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:maxLines="1"
android:padding="3dp"
android:text="15"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark" />
</LinearLayout>
public class OnSwipeTouchListener implements OnTouchListener {
public final GestureDetector gestureDetector;
public OnSwipeTouchListener (Context ctx){
gestureDetector = new GestureDetector(ctx, new GestureListener());
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
private final class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
}
result = true;
}
else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0) {
onSwipeBottom();
} else {
onSwipeTop();
}
}
result = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
}
public void onSwipeRight() {
}
public void onSwipeLeft() {
}
public void onSwipeTop() {
}
public void onSwipeBottom() {
}}
public class ExamSubjectsActivity extends BaseActivity {
private ActivityExamsSubjectsBinding binding;
LinearLayout myLayout;
MotionEvent mMotionEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_exams_subjects);
myLayout = binding.grades;
myLayout.setOnTouchListener(new OnSwipeTouchListener(this) {
public void onSwipeTop() {
Toast.makeText(ExamSubjectsActivity.this, "top", Toast.LENGTH_SHORT).show();
}
public void onSwipeRight() {
Toast.makeText(ExamSubjectsActivity.this, "right", Toast.LENGTH_SHORT).show();
for (int i = 0; i < myLayout.getChildCount(); i++) {
View view = myLayout.getChildAt(i);
Rect outRect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
if (outRect.contains((int) mMotionEvent.getX(), (int) mMotionEvent.getY())) {
view.setBackgroundColor(ContextCompat.getColor(ExamSubjectsActivity.this, R.color.prime_orange));
}
}
}
public void onSwipeLeft() {
Toast.makeText(ExamSubjectsActivity.this, "left", Toast.LENGTH_SHORT).show();
for (int i = 0; i < myLayout.getChildCount(); i++) {
View view = myLayout.getChildAt(i);
Rect outRect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
if (outRect.contains((int) mMotionEvent.getX(), (int) mMotionEvent.getY())) {
view.setBackgroundColor(ContextCompat.getColor(ExamSubjectsActivity.this, R.color.white));
}
}
}
public void onSwipeBottom() {
Toast.makeText(ExamSubjectsActivity.this, "bottom", Toast.LENGTH_SHORT).show();
}
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
}
_I'm essayer de mettre en œuvre quelque chose ..._ Où est votre code? –
@bub, la question est mise à jour, merci! –