Evlerimizde bulunan kapı zilinden örnek alarak, basıldığı sürece aktif olan bırakıldığında ise eski konumuna dönen bas-bırak türü diğer bir isimle “pushbutton” kontrolünü nasıl oluşturabiliriz? Android üzerinde farklı buton tipleri mevcuttur. Görsel farklılıkları olsa da temel işlevleri açısından belkide en önemli olayı “setOnClickListener()” görülür. Tıklandığında dediğimizde bu olay bildirimininin “onClick()” metodunu override ettiğinizde tek dokunuşla metodu devreye alabilirsiniz. Ancak “dokunuş bırakıldığında” durumunu da ele alabilmek, kısaca bas-bırak davranışını buton kontrolümüze uyarlamak için “setOnTouchListener()” olayını ele almalıyız.
Bir örnek uygulama üzerinde inceleyelim;
Butona basıldığı sürece uygulama sayfasının arkaplanını mavi, bırakıldığında kırmızı renk olarak bırakacağız.
Öncelikle basit bir android EmptyActivity oluşturun ve MainActivity üzerine bir buton ekleyin.
MainActivity.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/backLayout" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.hk33.pushbutton.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:id="@+id/Button" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="114dp" /> </RelativeLayout> |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn=(Button)findViewById(R.id.Button); final RelativeLayout layout=(RelativeLayout)findViewById(R.id.backLayout); btn.setOnTouchListener(new View.OnTouchListener(){ @Override public boolean onTouch(View v,MotionEvent event){ if (event.getAction() == MotionEvent.ACTION_DOWN ) { layout.setBackgroundColor(Color.BLUE); }else if(event.getAction()==MotionEvent.ACTION_UP){ layout.setBackgroundColor(Color.RED); } return false; } }); } } |
Uygulama kaynak kodlarında “setOnTouchListener()” olayı içinde “onTouch()” metodunu override ederek dokunma algılamasını bu olay yardımıyla kontrol edebilirsiniz. En önemlisi metod parametreleriyle gelen “MotionEvent” türündeki event değişkenimiz. “getAction()” özelliği ile dokunma biçimlerini rahatlıkla değerlendirebileceğiniz bir seçenek sunmaktadır. Tek yapılması gereken MotionEvent sabitleri ile eşleşimleri ele almak olacaktır.
Uygulama kaynak kodlarını buradan indirebilirsiniz.
yandex disk üzerinden yoladım mail hata vermekte
Arkadaşlar bu olayı IOIO programına uygulamak istiyorum ancak android yazılım ile ilgili bilgim yok bu konuda bana yardımcı olabilecek arkadaş varmı
Nereye ve nasıl uygulamak istediğinize dair biraz daha bilgi verirseniz, yardımcı olmaya çalışırım.
ELİMDE IOIO PROGRAMI VAR 16 BUTONLU HER BUTON BİR RÖLE ÇEKMEKTE BEN BU BUTONLARIN ÜÇ TANESİNİ BAS BIRAK YAPMAK İSTİYOM YUKARIDAKİ GİBİ
VE HER BUTON BİR RÖLE KONTROL ETMEKTE
Elinizde başladığınız bir proje varsa ve oruvar@yazilimbilisim.net adresime yollarsanız kaynak kodlarında bir düzenleme yapabilirim.
maili alabildinizmi acaba