
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:
Ö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.