Soru & Cevap

Android programımda saçma hatalar alıyorum ...

22.07.2015 - 04:03

Merhaba arkadaşlar. Eclipse üzerinden bir android uygulaması geliştiriyorum ama şöyle iki sorun var ve haftalardır uğraşıyorum ama bi sonuca varamadım. Maddeler halinde sıralayacak olursam.

1- Sayfalar arası geçişte .java kodlarında herhangi bir yazım hatası olmamasına rağmen bazı sayfalarda "program çalışmayı durdurdu" hatası alıyorum. "Kapat" seçeneğine tıkladığımda ise programı bi önceki sayfaya yolluyor ve bidaha ileri butonuna tıkladığımda bu hatayı almıyorum.

2- Yaptığım uygulamayı kendi telefonum (Samsung Galaxy S4) üzerinden deniyorum. Lakin farklı telefonlarda denediğim zaman imageview ve textview'ler iç içe giriyor. Bunun böyle olmaması için büyüklük ayarlarını "dp" ile yapmıştım ama genede bu hatayla karşılaştım. Sorunu göstermek gerekirse ---} http://i.hizliresim.com/ylAnk0.jpg

Programı bitiremememdeki en büyük 2 problem bunlar arkadaşlar. Yardımlarınızı bekliyorum.

35 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-57908-1460820411.jpg
mesutpiskin
26.07.2015 - 01:11

İlk olarak tasarımlarınızda dp  cinsinden boyutlandırma verebilirsiniz,her cihazın ekran çözünürlüğüne göre ve boyutuna göre farklı dp değerleri olacağı için kullandığınız bileşenlerde o ekrana göre boyutlandırılacaktır fakat bir çok alanda sıkıntı çıkartabiliyor özellikle sanal bir cihaz ile deneme yapıyorsanız özelleştirilmiş ekran çözünürlükleri ve boyutları verdiğinizde bir problem oluşturur.Fakat siz bileşenlerinizin boyutlandırmasını direk bir dp değeri vererek değilde o nesnenin sağdan,soldan,yukarıda,aşağıdan olan uzaklıklarını yada referans alınan bir nesneye göre bu uzaklıkları verdiğinizde ekranınız büyüdüğünde referans değerleriniz değişmeyeceği için bileşenlerinizde o boyutta büyüyecektir.Şimdi kullandığınız resimler büyük ise küçük resim oluşturmanıza gerek yok aşağıda yazdığım metot ile resimlerinizi küçültebilirsiniz.Bıtmap bir dosya bir yükseklik ve context parametresi alarak size yeni bir bitmap döndürecektir,bileşenlerinizde (imageview vs.) boyutlandırılmış yeni bitmap i kullanabilirsiniz.

public static Bitmap Boyutlandir(Bitmap photo, int newHeight, Context context) {

        final float densityMultiplier = context.getResources().getDisplayMetrics().density;

        int h= (int) (newHeight*densityMultiplier);
        int w= (int) (h * photo.getWidth()/((double) photo.getHeight()));

        photo=Bitmap.createScaledBitmap(photo, w, h, true);

        return photo;
    }

 

picture-57908-1460820411.jpg
mesutpiskin
22.07.2015 - 11:10

Eğer arayüz tasarımında kullandığın bileşenlerin boyutlarını direk olarak verirsen sıkıntı çıkması normaldir atıyorum bir imageview nesnesine 500dp genişlik verirsen her telefon için bu 500 sağlanamaya bilir ve taşabilir iç içe girebilir vs bunun için padding kullanarak hizalama yapman gerecektir.

Activity sorunlarına gelecek olarsakta kodlarına bakmadan birşey söylemek zor bir yerde mantık hatasıda yapmış olabilirsin.Birde kapat işlemleri ile uygulamanı kapatamazsın sadece açık olan activityi kapatırsın.Bir activityden sonraki activity e geçerken finish() ile yönlendirmeden önceki activityi kapatıp geri tuşunun kullanımında ise override ederek istediğin işlemleri yaptırmalısın.

Maroon
25.07.2015 - 02:02
Öncelikle soruma zaman ayırıp cevap verdiğiniz için teşekkür etmek istiyorum. Verdiğiniz cevaplar çözümü getirecek cevaplar gibi görünüyor. Arayüz tasarımında padding kullanarak hizalama yap demişsiniz. Padding hakkında biraz daha detaylı bilgi verirmisiniz? Ve ben her telefon/tablet için nasıl bi ekrandan hepsini ayarlaya bilirim ? Bu soruyu başka biyerde sorduğumda "dp" olarak ayarlarsan bu sıkıntı çıkmaz ilerde demişlerdi ama çıktı. 2. olarak sayfa arası geçişi şöyle kodladım www.imgim.com/3241incid3120303.png ve bütün sayfalarımda bu kodlar var. Tahminimce sorun programımda kullandığım resimlerden kaynaklanıyor. Çünkü 1 ay öncede bu sorun çıktığında resimleri değiştirip/küçültüp/üzerinde oynadığımda sorun kalkmıştı ama nasıl yaptığımı bilmiyorum tamamen tesadüf eseri oldu.Ve ben her seferinde bir tesadüf eserinde çözmek istemiyorum artık bu projeyi bitirip yeni projelere başlamak istiyorum. Rahatsızlık verdiğim için kusuruma bakmayın.Cevaplarınızı bekliyorum.