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
Yorum Gönder