Android - temel jest algılama
fling
jest algılama Android uygulamam için çalışma yapmak istiyorum.
Ne var 9 ImageView
s içeren GridLayout
. Burada bulabilirsiniz kaynağı: Romain Guys's Grid Layout.
Bu dosya Photostream application Romain almak ve sadece biraz adapte olmuştur.
Basit bir tıklama durumu View.OnClickListener
uygulayan activity
ana olmam Ekle ImageView
her onClickListener
set lazım sadece. Sonsuz fling
bir tanıdığı bir şey uygulamak daha karmaşık görünüyor. Bu views
yayılma olabilir diye tahmin ediyorum?
Eğer benim etkinlik uygular
OnGestureListener
nasıl olduğunu bilmiyorum jest dinleyici olarak ayarlaGrid
yaImage
görünümler ekleyin.public class SelectFilterActivity extends Activity implements View.OnClickListener, OnGestureListener { ...
Eğer benim etkinlik uygular
OnTouchListener
o zaman ben de hayır varonFling
(override
yöntem parametreleri bana izin olarak iki olay eğer fling olup olmadığını belirlemek için kayda değer).public class SelectFilterActivity extends Activity implements View.OnClickListener, OnTouchListener { ...
Eğer bir özel
ImageView
uzatırGestureImageView
gibiView
, yaparsamfling
bir görünümden oluşan aktivite nasıl söyleyeceğimi bilmiyorum. Her durumda, bunu denedim ve yöntemleri ekrana dokunduğumda denilen değildi.
Bunu sadece somut bir örnek görünümler arasında çalışma gerekiyor. Ne, ne zaman ve nasıl listener
bu eklemek gerekir? Tek tıklama da tespit etmek lazım.
// Gesture detection
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
int dx = (int) (e2.getX() - e1.getX());
// don't accept the fling if it's too short
// as it may conflict with a button push
if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.absvelocityY)) {
if (velocityX > 0) {
moveRight();
} else {
moveLeft();
}
return true;
} else {
return false;
}
}
});
Benim ekranın üstünde şeffaf bir görünüm koymak mümkün kaçamakları yakalamak için mi?
Eğer 29 ** istemezsem XML, çocuk resim görüşlerim oluşturmak ImageView
yeni bir alt sınıf için bir yapıcı parametre olarak GestureDetector
geçebilir miyim?
Bu fling
çalışmak için algılama almaya çalışıyorum bu çok basit bir aktivite: SelectFilterActivity (Adapted from photostream).
Bu kaynaklar bakıyordum:
Benim için hiçbir şey şimdiye kadar çalıştı ve bazı öneriler için umuyordum.
CEVAP
Benim durum için adapte olan Code Shogun için teşekkürler.
Etkinlik her zamanki gibi OnClickListener uygulamak
public class SelectFilterActivity extends Activity implements OnClickListener
{
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* ... */
// Gesture detection
gestureDetector = new GestureDetector(this, new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(SelectFilterActivity.this, "Left Swipe", Toast.LENGTH_SHORT).show();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(SelectFilterActivity.this, "Right Swipe", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
// nothing
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
}
}
Ana sayfa düzeni eklemek tüm görünümler için jest dinleyiciniz takın;
// Do this for each view added to the grid
imageView.setOnClickListener(SelectFilterActivity.this);
imageView.setOnTouchListener(gestureListener);
Sizin geçersiz gibi huşu içinde seyretmek yöntemleri, her iki özelliği(View v) etkinlik ve jest dinleyici onFling çarptı.
public void onClick(View v) {
Filter f = (Filter) v.getTag();
FilterFullscreenActivity.show(this, input, f);
}
The post 'kaçamak' dans isteğe bağlı ama önerilir.
devre dışı bırakma android navigasyon ...
Px, dp, arasındaki fark ve Android dip...
Doğru kullanımı Android kullanıcısı Yö...
Yakın/Android Klavyeyi gizlemek...
"sertifika süresi dolmuş hata Ayı...