ANDROID DERSLERI

ANDROID DERSLERI



1)ANDROID SDK , Android studio ( ve ya eclipse de ola biler)  ve JAVA kompunuza qurulmalidi
2)SImulator gec islediyi ucun ya GENYMOTION qurmaliyiq ya da oz devicemizi istfde etneliyik
3)GENYMOTION islemesi ucun ozu ve elave olaraq ORACLE VIRTUALBOX qurulmalidi
4)Device ile islemek ucun oz devicinizi usb vasitesile taxirsiz kompa ve Android studioda asagida ANdroid Manitor hissesinden oz devicinizi secirsiz


*** Ve ya RUN > Edit configurable > General > Target  hissedinde oz devicinizi ve ya emulatoru sece bilersiz
*** ve yavas isleyen komplarda android studio suretli islemesi ucun  ctl+shift+esc basiriq
Android stuido servisimizin ustidne sag vurub  prioritetini high secirik ki daha cox resurs xerclesin istfdesine


Actiity - neceki bir sayta girdikde sehfe ile qarsilasirsiniz androidde her bir sehfe activity-dir deye bilerik


Intent - activitelere kecid aralarinda bir korpu deye bilerik


Androidmanifest - burda appimizin butun esas melumatlari yer alir demek olarki
(aktivityler, sdk,icon,label,theme ve.s)


Resources - butun appimzn sekilelri  stringler , elave dil propertyleri ve.s hamisi bu folderde yer alir

Layoitlar
LinearLayout - en sade layout novumuzdu ,icerisindeki controllerlerin bir birinin ardinca horinoztal ve ya vertoical siralanmasini yerine yetirir orientation propertiesi vasitesile
TableLayout - Table seklinde tr (tablerow) ve td(tableView) prinipi ile isleyir
RelativeLayout- burada layoutlarimiz bir birile elaqeidirse istfde edirik
FrameLayout - ust uste duzur compoenentleri






Ilk proyektimizin ekran gorunusu temasini ve.s deyismek ucun


 main activityden apptheme basib sece bilerik ve  values -> styles.xml-den deyise bilriik tema rengler ve.s-ni

EKRANDAKI TEXT DEYISMEK UCUN


Evvelce gelin strings.xml-de yeni string yaradaq


Daha sonra main activitimizde text uzerine click edib sagda TextView-dan text browse hissesine vurruuq ve siyahidan yeni yaratdigimiz title stringini secirik






















SEKIL ELAVE ETMEK BACKGROUNDA


Bunun ucun seklimizi drawable folderimize atriiq , daha sonra imageView atiriq ekranimiza ve onun src-sine  drawable-mizdeki hemin sekli veririk.


Gorunduyu kimi  seklimiz yazimizin ustune cixib. Seklimizi en arxa atmaq ucun Component Tree-mizden en 1-ci yere seklimizi drag edirik.

APP-imizin iconunu deyismek


Programimizin esas boss file olan manifest xml faylimizi tapiriq ve orada butun app ile bagli esas bilgiler var orda  :icon hisesinde gostrilen png oz png-mizle deyissek iconumuz deyismis olacaq


SADE APP



Zerr at-a basdiqca loga random olaraq dusen zerrlerin hansi oldugunu yazir


Burda ise biz random atilan zerr normesine uygun image set edirik arraydan .

TRUE-FALSE QUIZ APP


1) true ve ya false basdiqda  yeni suala kecilmelidir
2)asagida progressbar olmalidir son suala yaxinlasdigimizi bildirmek ucun
3)asagida score: olmalidir xalimizi gostermek ucun
4)Sual dogrudusa score artirilmalidir
5)son suala catanda  dialogda son score gorsenmelidir ve close application butonu olmlaiidr
6)Sual sehv ve ya duz olanda toast mesaj ile gostermek


String.xml-de suallarimizi  ve buton, textview texlerimizi yaradiriq


Acitivity view-muzu yaradiriq


Bir eded model classimizi yaradiriq .int tipinden QuestionId ve  bollen tipinden cavabini tutan

Indi gelin esas kodumuza kecen MainAcitivty javamiza


public class MainActivity extends Activity {


  // Komponentlerimizi  ve istifade edeceyimiz deyiskenleri tanimlayiriq
  Button mTrueButton;
  Button mFalseButton;
  TextView mScoreTextView;
  TextView mQuestionTextView;
  ProgressBar mProgressBar;
  int mIndex;    // Sualin indexi ucun
  int mScore; // yigilan xal ucun
  int mQuestion;
  Toast mToastMessage; // toast mesaj


 //TrueFalse obyekti tipinden arrayimizi yaradiriq, burada suallarimiz ve cavablari qeyd olunub
  @NonNull
  private TrueFalse[] mQuestionBank = new TrueFalse[] {
          new TrueFalse(R.string.question_1, true),
          new TrueFalse(R.string.question_2, true),
          new TrueFalse(R.string.question_3, true),
          new TrueFalse(R.string.question_4, true),
          new TrueFalse(R.string.question_5, true),
          new TrueFalse(R.string.question_6, false),
          new TrueFalse(R.string.question_7, true),
          new TrueFalse(R.string.question_8, false),
          new TrueFalse(R.string.question_9, true),
          new TrueFalse(R.string.question_10, true),
          new TrueFalse(R.string.question_11, false),
          new TrueFalse(R.string.question_12, false),
          new TrueFalse(R.string.question_13,true)
  };


  // Progressbar ucun incirmet deyeri secilir
  // bu 100/ umumi sul sayi olmalidi riyazi mentiqle
  final int PROGRESS_BAR_INCREMENT = (int) Math.ceil(100.0 / mQuestionBank.length);

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


      // In API 26 'casting' is no longer needed.
      // For API 25 and lower: mTrueButton = (Button) findViewById(R.id.true_button);
      // For API 26 and higher can use: mTrueButton = findViewById(R.id.true_button);
      mTrueButton = (Button)findViewById(R.id.btn_true);
      mFalseButton = (Button) findViewById(R.id.btn_false);
      mQuestionTextView = (TextView) findViewById(R.id.question_text);
      mScoreTextView =(TextView) findViewById(R.id.score);
      mProgressBar =(ProgressBar)findViewById(R.id.progress_bar);


      // Eger screen roatte etsek  scroumuzun 0-andigini gore bilerik
       //Bu olmamamsi ucun savedInstance istfde edilir
    //mutleq komponentler yaradildiqdan sonra yazilmalidi bu kodlar evvelde saved elesek sehv         verer .Save edilen score-u yeniden textview set etmeliyik
      if (savedInstanceState != null) {
          mScore = savedInstanceState.getInt("ScoreKey");
          mIndex = savedInstanceState.getInt("IndexKey");
          mScoreTextView.setText("Score " + mScore + "/" + mQuestionBank.length);
      } else {
          mScore = 0;
          mIndex = 0;
      }
    


      //ilk sual goturulur arrayden ve question textmize set edilir
      mQuestion = mQuestionBank[mIndex].getmQuestionID();
      mQuestionTextView.setText(mQuestion);


      mTrueButton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              checkAnswer(true);  //cavabi yoxla
              updateQuestion();  // kec novbeti suala
          }
      });


      mFalseButton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              checkAnswer(false);
              updateQuestion();
          }
      });


  }


  private void updateQuestion() {
      //eger son suala catsa arrayindexout exception vermemeis ucun asagidaki kimi riyazi mentiqle yaza bilerik bele olan halda son suala catandan sonra yeniden 0 olur mIndex       mIndex = (mIndex + 1) % mQuestionBank.length;


      // En son suala catanda Dialog acilir ve orada son al ve close app butonu gosterilir
      if(mIndex == 0) {
          AlertDialog.Builder alert = new AlertDialog.Builder(this);
          alert.setTitle("Game Over");
          alert.setCancelable(false);
          alert.setMessage("You scored " + mScore + " points!");
          alert.setPositiveButton("Close Application", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                  finish(); //Activity classinin finish yeni bagla metodudur
              }
          });
          alert.show();
      }


      //yeni suali gotur , progresbari 1 artir , score-u yenile
      mQuestion = mQuestionBank[mIndex].getmQuestionID();
      mQuestionTextView.setText(mQuestion);
      mProgressBar.incrementProgressBy(PROGRESS_BAR_INCREMENT);
      mScoreTextView.setText("Score " + mScore + "/" + mQuestionBank.length);
  }


  private void checkAnswer(boolean userSelection) {
     //duzgun cavab goturulur sual idnexine esasen
      boolean correctAnswer = mQuestionBank[mIndex].ismAnswer();
.
      if (mToastMessage != null) {
          mToastMessage.cancel();
      }
     //user cavani ile dzgun cavab eynidise
      if(userSelection == correctAnswer) {
          mToastMessage = makeText(getApplicationContext(), R.string.correct_toast, Toast.LENGTH_SHORT);
          mScore = mScore + 1;


      } else {
          mToastMessage = Toast.makeText(getApplicationContext(), R.string.incorrect_toast, Toast.LENGTH_LONG);
      }


      mToastMessage.show();


  }


  // screen roattion zamani score , index kimi  global deyiskenlerimiz 0-landigi ucun onlari savedInstnce ile save edirik  outState-mize
  @Override
  public void onSaveInstanceState(Bundle outState){
      super.onSaveInstanceState(outState);


      outState.putInt("ScoreKey", mScore);
      outState.putInt("IndexKey", mIndex);
  }
}


Screen roatteion teyin etmek ucun


Manifest faylda activity tag-imiza android:screenOrientation  ne versek o qalir, Yeni scree rotation olsa bele deyismesini istemirikse protrait veririk



TOAST MESAJ STILINI DEYISMEK


1)gradle app-de  compile 'com.android.support:appcompat-v7:25.0.0'
 Elave edib sync now basiriq


2)Kodumuzda
StyleableToast.makeText(getApplicationContext(), "Got it!", R.style.exampleToast).show();


3)style.xml-de  exampleToast yaradiriq


<style name="exampleToast">
  <item name="colorBackground">#94ffab</item>
  <item name="textColor">#000</item>
 <!-- <item name="iconLeft">@drawable/ic_airplanemode_inactive_black_24dp</item> -->
</style>


Ve gorunduyu kimi toast mesajimizi istediyimiz kimi stil verdik


Ferqi diller ucun string.xml -ler , avtomatik androidin diline gore secilmesi


String.xml=imizi acdiqda  sagda ustde open editor var ona basiriq


Daha sonra orda  dunya seklinde icon var ora basib olkeler secirik
Ve uygun olaraq her dil ucun tercumesin qeyd edirik


Biz programi run etdikde  android deviceda dil ne secsek avtomatik ozu deyisecek





Yorumlar

Bu blogdaki popüler yayınlar

İNGİLİS DİLİNDƏ ƏN ÇOX İSTİFADƏ OLUNAN 2600 CÜMLƏ QƏLİBLƏRİ VƏ 6000 SÖZ

INGILIS DILI BUTUN ZAMANLAR