Android studio: iki parmak hareketi ile Textview yazı büyüt ve küçült
Android studio: iki parmak hareketi ile Textview yazı büyüt ve küçült

Android uygulama geliştirirken kullanabileceğiniz iki parmak hareketi ile TextView yazı küçültüp, büyültmek için hazırladığım örnek kodları projelerinize kolaylıkla entegre edebilirsiniz.

Örnek video:

https://youtu.be/SSUW0mOhY5Y

Örnek kodlar:

package com.kuaza.kuazatextviewbuyut_kucult;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView textview_kuaza;
    int mBaseDist;
    float en_buyuk_boyut = 81.0f,
            en_kucuk_boyut = 15.0f,
            mBaseRatio,STEP = 200,
            default_yazi_boyutu=25;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textview_kuaza = findViewById(R.id.textview_kuaza);
        textview_kuaza.setTag(default_yazi_boyutu); // textview e oncelikli olarak 25 yada yazi boyutu ne olmasini istiyorsaniz eklemeniz gerekli.
        textview_kuaza.setOnTouchListener(new yazi_alani_tiklama_algilama());
    }

    /**
     * Yaziya iki parmak tiklayarak buyutup kucultmek icin kullanacagimiz fonksiyon
     */
    private final class yazi_alani_tiklama_algilama implements View.OnTouchListener {

        public boolean onTouch(View view, MotionEvent event) {

            view.performClick();

            if (event.getPointerCount() == 2) {
                // iki parmek ile yazi uzerine tiklaninca bu kisim calistirilir.
                // Yaziyi buyutup kucultmek icin kullanacagiz
                float mRatio_yeni;//viewById.getTextSize();
                int action = event.getAction();
                int pureaction = action & MotionEvent.ACTION_MASK;
                if (pureaction == MotionEvent.ACTION_POINTER_DOWN) {
                    mBaseDist = getDistance(event);
                    mBaseRatio = (float) textview_kuaza.getTag();  // yazinin son boyutunu ekledigimiz sayiyi aliyoruz.
                } else {
                    float delta = (getDistance(event) - mBaseDist) / STEP;
                    float multi = (float) Math.pow(2, delta);
                    mRatio_yeni = Math.min(en_buyuk_boyut, Math.max(en_kucuk_boyut, mBaseRatio * multi)); // 61.0 maximum cikilacak yazi boyutunu belirler. 15.0 en az inilecek yazi boyutunu belirtir.
                    textview_kuaza.setTextSize(mRatio_yeni); // iki parmak hareketine gore yazinin boyutunu artirir yada dusururuz.
                    textview_kuaza.setTag(mRatio_yeni); // Yazinin son boyutunu alip settag ile kaydediyoruz. Sonraki ilk hareketde bu sayidan kaldigi yerden devam edecek.
                }

                return true;
            }

            return true;
        }
    }
    
    int getDistance(MotionEvent event) {
        int dx = (int) (event.getX(0) - event.getX(1));
        int dy = (int) (event.getY(0) - event.getY(1));
        return (int) (Math.sqrt(dx * dx + dy * dy));
    }
    
}

Konudaki uygulamayı buradaki linke tıklayarak indirebilirsiniz. Test etmek için bu proje dosyalarını önceden yeni bir proje oluşturarak kullanabilirsiniz.

CEVAP VER

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.