Kişisel Sayfaları
İlgi Alanları
İş Tecrubesi
Eğitim Geçmişi
Sertifikalar & Başarılar
Kullanıcıya ait test sonucu bulunmamaktadır.
Dil Becerileri
Son Forum Aktiviteleri
11Farklı bir ekran boyutlarını desteklerken sıkıntı yaşıyorum
Herkese merhaba, hali hazırda android markette yayınlamış olduğum bir uygulamam var. Farklı ekran boyutlarını desteklemek için layout içerisinde *large(xhdpi, xxhdpi, xxxhdpi) *normal (xhdpi, xxhdpi, xxxhdpi, hdpi) *xlarge(xhdpi, xxhdpi, xxxhdpi) layoutlarını ayrı ayrı oluşturdum. Android studio tasarım kısmında ki bütün cihazlarda ekran istediğim şekli alıyor. Genymotion da da birçok cihazda denedim sorunsuz. Ancak LG G3 ve G4 e marketten indirdiğim zaman ekran da bazı kısımlarda taşma ve viewlar da görünmeyen kısımlar ortaya çıkıyor. Android virtual device da lg g4 e benzer custom bir emülator oluşturdum orda da sıkıntısız ama reel cihazda sıkıntı yaşıyorum. Bana yardımcı olabilir misiniz? Denemek isteyenler için https://play.google.com/store/apps/details?id=com.dr.minaz.sensitiveunitcurrencyconverter
Uygulama yönetim paneli nedir nasıl yapılır
Merhaba, örnek veriyorum bir işletme için ios - android uygulama yaptığımızı düşünelim. Müşteri bu uygulama içine nasıl bilgisayarı üzerinden içerik ekleyip-güncelleyebilir yada ürün takibini yapabilir? Bunun için programcı nasıl bir yol izlemelidir? Hangi servisi kullanmalıdır? Umarım demek istediğimi anlatabilmişimdir. Orta düzey bir android geliştirici olduğumu düşünerek cevaplarsanız sevinirim.
Gelişmiş hesap makinasında işlem önceliğine yer veremiyorum.
Merhaba android üzerinde gelişmiş bir hesap makinası yapmaktayım. Oluşturduğum sayı klavyesi ile basılan tuşlardan aldığım sayıları StringBuffer'a ekliyorum ardından Double'a parse ediyorum ve 4 işlem tuşlarından birine bastığında gerçek zamanlı hesaplama yapabiliyorum. Ancak doğru sonucu sadece toplama ve çıkarma işlemlerinde alabiliyorum. Araya çarpma bölme işlemi girdiğinde hesabı yanlış yapıyor. Örnek vermek gerekirse kullanıcı 23+4+4 gibi bir işlemi doğru hesaplayabiliyor. Önceki yazılan sayıyı şimdiki yazılan sayıyla çarp topla gibi. Ama benim yaptığım kodlama 23+4x8 dediğimde 23 ile 4 ü toplayıp sonra 8 ile çarpıyor. Tabi sonuç yanlış.
Umarım anlatabilmişimdir. Benim sizden istediğim ise; bu konuda sizin öneriniz nedir veya yararlanabileceğim bir kaynak gösterebilecek misiniz.
Aşağıda class'ımdaki bazı kod bölümleri ve en altta da tamamı yer almaktadır.
Aşağıda ki kod kalıbında kullanıcıdan gelen isteğe göre yapılacak işlemi belirliyor.
if(lastString.equals("+") || lastString.equals("-") || lastString.equals("*") || lastString.equals("/")){
if(bufferText.length()>0) {
Sil();
if (mesaj == "+") {
bufferText.append("+");
islemYap = true;
islemYapilan = ISLEM_TOPLA;
sonucDuzeni();
} else if (mesaj == "-") {
bufferText.append("-");
islemYap = true;
islemYapilan = ISLEM_CIKART;
sonucDuzeni();
} else if (mesaj == "*") {
bufferText.append("*");
islemYap = true;
islemYapilan = ISLEM_CARP;
sonucDuzeni();
} else if (mesaj == "/") {
bufferText.append("/");
islemYap = true;
islemYapilan = ISLEM_BOL;
sonucDuzeni();
}
}
}
Şu kısımda da işlemin yapıldığı bölüm :
( 'd' değişkeni kullanıcının 3+56*4 gibi bir kısımda kısımda ki " +-*/ " işleminden sonraki yazdığı en son sayıdır. Bunu önceki yazılmış sayı ile toplayıp çarpıp bölüyor gibi düşünebilirsiniz)
private void KontrolEtVeDortIslemYap() {
if(islemYap==true){
if(islemYapilan==ISLEM_TOPLA){
ToplamaIslemiYap();
}
else if(islemYapilan==ISLEM_CIKART){
CikartmaIslemiYap();
}
else if(islemYapilan==ISLEM_CARP){
CarpmaIslemiYap();
}
else if(islemYapilan==ISLEM_BOL){
BolmeIslemiYap();
}
}
}
private void ToplamaIslemiYap(){
// sonuc=ESKI_SONUC[say-1];
sonuc=(d+Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
private void CikartmaIslemiYap(){
sonuc=(d-Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
private void BolmeIslemiYap(){
sonuc=(d/Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
private void CarpmaIslemiYap(){
sonuc=(d*Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
Buda Class'ımdaki kodun tamamı :
package com.dr.minaz.drbirimsel.Fragments.Hesap;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.dr.minaz.drbirimsel.Fragments.Birim.StandartHesapla;
import com.dr.minaz.drbirimsel.PublicDegerler;
import com.dr.minaz.drbirimsel.R;
import com.easyandroidanimations.library.TransferAnimation;
public class HesapMakinesi extends Fragment {
private static final int NUM_PAGES = 1;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
StandartHesapla standartHesapla;
String ISLEM_TOPLA="+"
,ISLEM_CIKART="-"
,ISLEM_BOL="/"
,ISLEM_CARP="*";
String islemYapilan=null;
PublicDegerler publicDegerler;
TextView tx_yazilan
,tx_sonuc;
public double d
,sonuc;
StringBuffer bufferText
,bufferSayi;
boolean islemYap
,animasyonAktif
,noktayaBasildi;
int i=0
,k=0;
double eskiBufferSayi;
int sayiForGeriadim;
int say=-1;
double[] ESKI_D,ESKI_SONUC;
String KLAVYE_GIRILEN;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.sayfa_hesap_makinesi, null);
return root;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Ilkle();
MediumYaziTipiUygula();
mPager.setAdapter(mPagerAdapter);
LightTextYaziTipiUygula();
sayiForGeriadim=100;
ESKI_D= new double[sayiForGeriadim];
ESKI_SONUC = new double[sayiForGeriadim];
SonucYaziGosterGizle();
setHasOptionsMenu(true);
}
private void LightTextYaziTipiUygula() {
publicDegerler.YaziTipiUygulaTextView(tx_sonuc,0);
publicDegerler.YaziTipiUygulaTextView(tx_yazilan,0);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.id_menu_hesap_sonuc_kopyala: {
SonucuKopyala();
return true;
}
}
return super.onOptionsItemSelected(item);
}
private void SonucuKopyala() {
if (sonuc==0) {
publicDegerler.ToastGoster(getActivity().getResources().getString(R.string.copy_bos_value));
} else {
ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(getActivity().CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("drbirimsel", String.valueOf(sonuc));
clipboard.setPrimaryClip(clip);
publicDegerler.ToastGoster("" + getActivity().getResources().getString(R.string.deger_kopyalandi_mesaj));
}
}
public void Al(String mesaj) {
KLAVYE_GIRILEN=mesaj;
if (mesaj == "tan" || mesaj == "cos" || mesaj == "sin" || mesaj == "in" || mesaj == "pi" || mesaj == "us" || mesaj == "e" || mesaj == "kok"
|| mesaj == "log" || mesaj == "(" || mesaj == ")" || mesaj == "%") {
switch (mesaj) {
case "sin":
bufferText.append("sin(");
LabelYazdir();
break;
case "tan":
break;
}
}
if (mesaj == "0" || mesaj == "1" || mesaj == "2" || mesaj == "3" || mesaj == "4" || mesaj == "5" || mesaj == "6" || mesaj == "7" || mesaj == "8" || mesaj == "9") {
bufferText.append(mesaj);
bufferSayi.append(mesaj);
KontrolEtVeDortIslemYap();
LabelYazdir();
} else if (mesaj == ".") {
if (bufferText.length() < 1) {
if(noktayaBasildi==false){
bufferText.append("0.");
bufferSayi.append("0.");
noktayaBasildi=true;
}
} else {
if(noktayaBasildi==false) {
bufferText.append(".");
bufferSayi.append(".");
noktayaBasildi = true;
}
}
LabelYazdir();
} else if (mesaj == "+-") {
} else if (mesaj == "=") {
noktayaBasildi=false;
} else if (mesaj == "SIL") {
Sil();
} else if (mesaj == "TEMIZLE") {
noktayaBasildi=false;
Temizle();
} else if (mesaj == "+" || mesaj == "-" || mesaj == "*" || mesaj == "/") {
noktayaBasildi=false;
String lastString="";
if(bufferText.length()>0) {
char last = bufferText.charAt(bufferText.length() - 1);
lastString= String.valueOf(last);
}
if(lastString.equals("+") || lastString.equals("-") || lastString.equals("*") || lastString.equals("/")){
if(bufferText.length()>0) {
Sil();
if (mesaj == "+") {
bufferText.append("+");
islemYap = true;
islemYapilan = ISLEM_TOPLA;
sonucDuzeni();
} else if (mesaj == "-") {
bufferText.append("-");
islemYap = true;
islemYapilan = ISLEM_CIKART;
sonucDuzeni();
} else if (mesaj == "*") {
bufferText.append("*");
islemYap = true;
islemYapilan = ISLEM_CARP;
sonucDuzeni();
} else if (mesaj == "/") {
bufferText.append("/");
islemYap = true;
islemYapilan = ISLEM_BOL;
sonucDuzeni();
}
}
}
if (bufferSayi.length() > 0) {
d = Double.valueOf(String.valueOf(bufferSayi));
say++;
ESKI_D[say]=d;
ESKI_SONUC[say]=sonuc;
// publicDegerler.ToastGoster("D: "+ESKI_D[say]+ "SONUC : "+ESKI_SONUC[say]);
bufferSayi.delete(0, bufferSayi.length());
if (mesaj == "+") {
bufferText.append("+");
islemYap = true;
islemYapilan = ISLEM_TOPLA;
sonucDuzeni();
} else if (mesaj == "-") {
bufferText.append("-");
islemYap = true;
islemYapilan = ISLEM_CIKART;
sonucDuzeni();
} else if (mesaj == "*") {
bufferText.append("*");
islemYap = true;
islemYapilan = ISLEM_CARP;
sonucDuzeni();
} else if (mesaj == "/") {
bufferText.append("/");
islemYap = true;
islemYapilan = ISLEM_BOL;
sonucDuzeni();
}
}
LabelYazdir();
}
/*
*/
}
private void MediumYaziTipiUygula() {
}
private void Ilkle() {
publicDegerler = new PublicDegerler(getActivity());
standartHesapla=(StandartHesapla)getActivity().getSupportFragmentManager().findFragmentByTag("STANDART");
mPager = (ViewPager) getActivity().findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getActivity().getSupportFragmentManager());
tx_sonuc=(TextView)getActivity().findViewById(R.id.id_tx_bilimsel_sonuc);
tx_yazilan=(TextView)getActivity().findViewById(R.id.id_tx_bilimsel_yazilan);
bufferText =new StringBuffer();
bufferSayi=new StringBuffer();
}
private void KontrolEtVeDortIslemYap() {
if(islemYap==true){
if(islemYapilan==ISLEM_TOPLA){
ToplamaIslemiYap();
}
else if(islemYapilan==ISLEM_CIKART){
CikartmaIslemiYap();
}
else if(islemYapilan==ISLEM_CARP){
CarpmaIslemiYap();
}
else if(islemYapilan==ISLEM_BOL){
BolmeIslemiYap();
}
}
}
private void ToplamaIslemiYap(){
// sonuc=ESKI_SONUC[say-1];
sonuc=(d+Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
private void CikartmaIslemiYap(){
sonuc=(d-Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
private void BolmeIslemiYap(){
sonuc=(d/Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
private void CarpmaIslemiYap(){
sonuc=(d*Double.valueOf(String.valueOf(bufferSayi)));
SonucYaz();
SonucYaziGosterGizle();
}
private void EsittirAnimasyonUygula() {
for(;i<=1;i++){
new TransferAnimation(tx_yazilan).setDestinationView(getView().findViewById(R.id.textView2)).animate();
new TransferAnimation(tx_sonuc).setDestinationView(getActivity().findViewById(R.id.textView3)).animate();
}
animasyonAktif=true;
}
private void SonucYaz(){
tx_sonuc.setText(""+sonuc);
}
private void LabelYazdir(){
if(bufferText.length()==0){
tx_yazilan.setText("0");
}
else {
tx_yazilan.setText("" + bufferText.toString());
}
}
private void Temizle(){
if(bufferText.length()>=1){
bufferText.delete(0, bufferText.length());
}
if(bufferSayi.length()>=1){
bufferSayi.delete(0,bufferSayi.length());
}
sonuc=0;
islemYap=false;
SonucYaziGosterGizle();
if(animasyonAktif==true){
}
LabelYazdir();
}
private void SonucYaziGosterGizle(){
if(bufferSayi.length()==0&& bufferText.length()==0){
tx_sonuc.setVisibility(View.INVISIBLE);
}
else{
tx_sonuc.setVisibility(View.VISIBLE);
}
}
private void Sil(){
char lastOfSilinen;
String lastStringofSilinen;
if(bufferText.length()>0){
lastOfSilinen = bufferText.charAt(bufferText.length() - 1);
lastStringofSilinen=String.valueOf(lastOfSilinen);
bufferText.deleteCharAt(bufferText.length() - 1);
if(lastStringofSilinen.equals("+")){
BufferSayiTemizle();
bufferSayi.append(ESKI_D[say]);
d = ESKI_SONUC[say-1];
say--;
KontrolEtVeDortIslemYap();
publicDegerler.ToastGoster("Sonuc : "+sonuc +"\nBufferSayi : "+ bufferSayi +"\nSay :"+ say);
}
}
if(bufferSayi.length()>0){
char last = bufferSayi.charAt(bufferSayi.length() - 1);
String lastString=String.valueOf(last);
if(lastString.equals(".")){
noktayaBasildi=false;
}
bufferSayi.deleteCharAt(bufferSayi.length()-1);
if(bufferSayi.length()!=0){
KontrolEtVeDortIslemYap();
}
else if(bufferSayi.length()==0){
tx_sonuc.setVisibility(View.INVISIBLE);
}
}
LabelYazdir();
}
private void sonucDuzeni(){
if(sonuc==0){
sonuc=d;
} else {d=sonuc;}
}
private void BufferSayiTemizle(){
if(bufferSayi.length()>=1){
bufferSayi.delete(0,bufferSayi.length());
}
}
class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new StandartSlide();
default:
return null;
}
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
}
Hesap uygulamasında parantez işlevini nasıl ekleyebilirim?
Merhaba, android platformunda bir hesaplama uygulaması üzerinde çalışmaktayım. Uygulamamda activity üzerindeki butonlara basıldığında StringBuffer'a bu textleri alıp sonra Double a parse ediyorum. Buraya kadar herşey düzgün şekilde çalışıyor sıkıntı yok ama ben parantez açıp parantez içi işlemleride eklemek istiyorum örenğin 16-(25-(13+1)) gibisinden.. Fakat bir türlü buna dair mantıklı bir algoritma kuramadım. Java ya da c# programlama dilinde mantığını kavramama yardımcı olursanız sevinirim. Teşekkürler ..
Navigation drawer menü üzerinde action bar kaybolmuyor
Merhaba arkadaşlar. Bir proje üzerinde uğraşıyorum. Projede ana activity üzerine fragmentler aracılığıyla ekranlarımı yerleştiriyorum, actionbar'ı aktif olarak kullanıyorum ve navigation drawer menü bulunduruyorum. Sorun şu ki navigation drawer menü açıldığında actionbar, navigation drawer menünün üstünde kalıyor (Ekran alıntısı olarak resmi de ekledim). İnternetten araştırdım ama istediğim cevabı alamadım bana yardımcı olurmusunuz lütfen.
Uygulama verilerinin internet üzerinde yedeklenmesi
teşekkür ederim Turkcell usergrid i deniycem
Genymotion sanal makina çalışmayı durdurdu
Sistem Özelliklerim :
CPU : Pentium Dual Core T4500 2.3 çift çekirdek
2 GB RAM
Directx11
Lenovo G550
Mobile İntel(R) 4 Series Express Chipset Family paylaşımlı yaklaşık toplam bellek : 1036 MB