Android

Android PushButton

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

<?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

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.

pushbutton

Uygulama kaynak kodlarını buradan indirebilirsiniz.

 

 

Yorum

Yorum Yap