warning: Creating default object from empty value in /home/www/gary/data/www/garik.pp.ua/modules/taxonomy/taxonomy.pages.inc on line 33.

Android

Mad Minesweeper

Submitted by gary on Sat, 09/28/2013 - 23:13

Just for fun був написаний сапер для андроїда.
Це перша моя програма, яка має хоч трошки корисної функціональності
Ігрове поле фіксованих розмірів. Клітинки поля це кнопки (!), які динамічно розміщуються на екрані.
Так як не вистачило натхнення/вміння, то рестарт гри відбувається після зміни орієнтації телефону.

Pictures: 
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-28-22-32-51.png
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-28-22-33-14.png
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-28-22-33-35.png
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-28-22-34-07.png
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-28-22-34-14.png
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-28-22-34-33.png
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-28-22-35-18.png
http://garik.pp.ua/sites/default/files/blog_pics/Screenshot_2013-09-26-00-13-57.png

Calculon :-)

Submitted by gary on Sat, 02/23/2013 - 01:00

Щойно за уроком http://startandroid.ru/ru/uroki/vse-uroki-spiskom/54-urok-19-pishem-prostoj-kalkuljator.html створив простий калькулятор. Дуже порадувало.

Макет:

<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1"
android:layout_marginLeft="10pt"

Анімація

Submitted by gary on Sat, 02/23/2013 - 01:00

Щойно грався з анімаціями. В папці /res/anim/ створюю фали анімацій
myscale.xml

<?xml version="1.0" encoding="utf-8"?>
<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.1"
android:toXScale="1.0"
android:fromYScale="0.1"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000">
</scale>

mytrans.xml

<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-150"
android:toXDelta="0"

Menu

Submitted by gary on Sun, 02/03/2013 - 01:00

Є кілька способі створити меню:
1.

public boolean onCreateOptionsMenu(Menu menu) {
  // TODO Auto-generated method stub

  menu.add("menu1");
  menu.add("menu2");
  menu.add("menu3");
  menu.add("menu4");
 
  return super.onCreateOptionsMenu(menu);
}

Цей спосіб дуже примітивний і не зручний, адже визначати обраний пункт меню ми можемо лише те текстом

public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();

Context menu

Submitted by gary on Sun, 02/03/2013 - 01:00

Створення контекстного пеню дуже нагадує створення звичайного меню. Ось код і трохи коментарів:

public class MainActivity extends Activity {

final int MENU_COLOR_RED = 1;
final int MENU_COLOR_GREEN = 2;
final int MENU_COLOR_BLUE = 3;

final int MENU_SIZE_22 = 4;
final int MENU_SIZE_26 = 5;
final int MENU_SIZE_30 = 6;

TextView tvColor, tvSize;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Динамічне створення об'єктів

Submitted by gary on Sun, 02/03/2013 - 01:00

Створює кнопки на екрані. В якості обробника натиснень кнопок використовується Activity (тобто допишемо в оголошення класу implements OnClickListener, і створимо метод обробки onClick).


package ua.pp.garik.android.dynamiclayout2;

import java.util.Random;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioGroup;

Ресурси

Submitted by gary on Sat, 02/02/2013 - 01:00

Всі ресурси зберігаються в папці /res/. Зараз цікавлять саме константи, які лежать в /res/values/

Створюю власний файл з різними типами ресурсів: /res/values/myres.xml

<resources>
    <string name="tvTopText">Верхний текст</string>
    <string name="btnTopText">Верхняя кнопка</string>
    <string name="tvBottomText">Нижний текст</string>
    <string name="btnBottomText">Нижняя кнопка</string>
    <color name="llTopColor">#336699</color>
    <color name="llBottomColor">#339966</color>
</resources>

Створюю layout:


Log i Toast

Submitted by gary on Sat, 02/02/2013 - 01:00

Лог:

Log.v("Boyan", "Нажата кнопка ОК");

Алерт:

Toast.makeText(this, "Нажата кнопка Cancel", Toast.LENGTH_LONG).show();

Один OnClickListener для різних об'єктів

Submitted by gary on Wed, 01/23/2013 - 01:00

Продовження попереднього поста. В обробнику перевіряємо який об'єкт викликав цю подію, і виконуємо відповідну дію. Код в методі onCreate()

OnClickListener oclBtn = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnOk:
tvOut.setText("Нажата кнопка ОК");
break;

case R.id.btnCancel:
tvOut.setText("Нажата кнопка CAncEL!");
break;
default:
break;
}
}
};

btnOk.setOnClickListener(oclBtn);
btnCancel.setOnClickListener(oclBtn);

Layout, доступ до елементів

Submitted by gary on Mon, 01/21/2013 - 01:00

Після кількох дослідів, файл src/ua.pp.garik.android.p0051_layoutfiles/MainActivity.java набув такого вигляду:


package ua.pp.garik.android.p0051_layoutfiles;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;

public class MainActivity extends Activity {

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