ФорумПрограммированиеБольше языковJava → Android пинок под зад

Android пинок под зад

  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 7 сентября 2009 г. 12:11

    кто видел кто нет, а я на выходных наваял вот такую штуку
    http://mabp.kiev.ua/2009/09/05/pbank/

    подробностей конкретно этой программы не будет а в общих чертах расскажу.
    создаем новый проект и получаем дерево папок и пару файлов

    \
    + AndroidManifest.xml
    \gen\ua\kiev\mabp
    + R.java
    \res\layout
    + main.xml
    \res\drawable
    + icon.png
    \res\values
    + strings.xml
    \src\ua\kiev\mabp
    + MyActivity.java


    поехали по порядку
    AndroidManifest.xml - дескриптор развертывания, тоже самое что web.xml для J2 Enterprise Edition , для тех кто не в курсе андроид использует J2 Micro Edition

    структура фала

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ua.kiev.mabp">
       <application android:icon="@drawable/icon" android:label="tests">
           <activity android:name="MyActivity" android:label="PBank">
               <intent-filter>
                   <action android:name="android.intent.action.MAIN"/>
                   <category android:name="android.intent.category.LAUNCHER"/>
               </intent-filter>
           </activity>
       </application>
       <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    </manifest>


    package="ua.kiev.mabp" - пакет приложения
    android:label="tests" - название приложения
    android:name="MyActivity" - запускаймая активность (может быть несколько)
    android:label="PBank" - заголовок активности
    android:name="android.intent.action.MAIN" - главная активность приложения
    android:name="android.intent.category.LAUNCHER" - может запускатся из менюшки
    android:name="android.permission.INTERNET" - приложение может выходить в интернет (есть разные разрешения например на получение SMS или доступ к SD)

    R.java
    Генерируемый файл, руками его править бесполезно потому что он перезаписывается при каждой компиляции
    Файл содержит класс R(esources) в котором хранятся ссылки на все ресурсы, более подробно чуть ниже

    Папке res содержит ресурсы нескольких типов, все они при компиляции сохраняются в класс R
    папка разделена на ресурсы разного типа
    drawable - картинки
    layout - слои
    values - переменные
    есть еще смотрите доки

    Думаю про картинки объяснять не надо. единственно что доступ к ним происходит вот так
    R.drawable.image_name_without_extention

    main.xml
    Слои хранят в себе дефолтовую разметку экранов
    пример разметки

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent">

       <ListView
    android:id="@id/android:list"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_weight="1"
    android:drawSelectorOnTop="false"/>

    </LinearLayout>


    все начинается с определения LinearLayout
    android:orientation="vertical" - вертикальное положение (как альбомная страница)
    android:layout_width="fill_parent" - заполняет весь экран в ширину
    android:layout_height="fill_parent" - заполняет весь экран в высоту

    основной экран содержит список ListView
    android:id="@id/android:list" - список доступен в ресурсах через ID R.id.list
    android:layout_width="fill_parent" - заполняет родительский объект по ширене
    android:layout_height="wrap_content" - имеет высоту содержимого
    android:drawSelectorOnTop="false" - первый элемент списка не подсвечен

    еще пример row.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/vw1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal">    

       <ImageView android:id="@+id/img"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"/>

       <LinearLayout
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:orientation="vertical">

           <TextView android:id="@+id/text"
               android:textSize="12sp"
               android:textStyle="bold"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"/>

       </LinearLayout>

    </LinearLayout>


    это ряд с списке

    strings.xml
    Хранит в себе локализацию.
    если создать папку values-ru то из нее будет браться русская локаль

    пример файла

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
       <string name="first">Первая строка</string>
       <string name="second">Вторая строка</string>
    </resources>


    строки доступны через объект ресурсов R.string.first или через слои android:text="@string/first"
    чтобы преобразовать ресурс в локализированную строку делаем так context.getString(R.string.first)

    переходим к приложению
    MyActivity.java

    пример класса

    public class ResourceExplorer extends ListActivity{

       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);

           // список который сождержит информацию
           List<Map<String, Object>> resourceNames = new ArrayList<Map<String, Object>>();

           // Объект рядя
           Map<String, Object> data;

           // захардкодженые номеря взятые отсюда
           // http://code.google.com/android/reference/android/R.drawable.html
           for ( int idx = 17301504; idx <= 17301655; idx++ ){
               data = new HashMap<String, Object>();

               try {
                   String stg = Resources.getSystem().getResourceName(idx);
                   data.put("text", stg );
                   data.put("img", idx );
                   resourceNames.add(data);
               }

               catch (Resources.NotFoundException e) {
                   // игнорируем
               }
           }

           SimpleAdapter notes = new SimpleAdapter(
               this,
               resourceNames,
               R.layout.row,
               new String[] { "text", "img" },
               new int[] { R.id.text, R.id.img } );

           setListAdapter(notes);
       }
    }


    в результате получаем приложение которое отображает все картинки которые по умолчанию есть в эмуляторе


    this is android, have a fun :)
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 19 сентября 2010 г. 14:29, спустя 377 дней 2 часа 18 минут

    хочу научить программирвоанию под андроид, можно тут задавать вопросы? Поможете?
    Спустя 163 сек.
    там они на фо сайте, говорят что создание xml UI очень похажа на html . Но вот я человек, который привык получать данные из html форм. А как тут интерфейс взаимодуйствует с програмным кодом?
    Спустя 61 сек.
    можно подробней, что присходи тут?


      SimpleAdapter notes = new SimpleAdapter(
    this,
    resourceNames,
    R.layout.row,
    new String[] { "text", "img" },
    new int[] { R.id.text, R.id.img } );

    setListAdapter(notes);
    }
    Спустя 75 сек.
    это вы по иду обращаетесь к слою?

    <ImageView android:id="@+id/img"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
    Спустя 68 сек.
    String stg = Resources.getSystem().getResourceName(idx); 
    и что в данном случа содержит строка stg?
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 19 сентября 2010 г. 15:22, спустя 52 минуты 59 секунд

    Bundle это тип данных такой?
    Спустя 140 сек.
    и что вот это такое?

    // список который сождержит информацию
    List<Map<String, Object>> resourceNames = new ArrayList<Map<String, Object>>();

    // Объект рядя
    Map<String, Object> data;
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 19 сентября 2010 г. 15:46, спустя 23 минуты 36 секунд

    Nox, это Код: Java, хорош хернёй заниматься
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 19 сентября 2010 г. 15:49, спустя 2 минуты 43 секунды

    хочу научить программирвоанию под андроид, можно тут задавать вопросы? Поможете?

    кого научить? себя?
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 19 сентября 2010 г. 16:43, спустя 54 минуты 10 секунд

    для начала зачти ман

    можно подробней, что присходи тут?


     SimpleAdapter notes = new SimpleAdapter( // создаю новый список
               this, // в текущем активити
               resourceNames, // данные
               R.layout.row, // шаблон
               new String[] { "text", "img" }, // маппинг
               new int[] { R.id.text, R.id.img } ); //

           setListAdapter(notes);
       }

    подробнее тут

    это вы по иду обращаетесь к слою?

    да wrap_content это ID

    и что в данном случа содержит строка stg?

    android:drawable/{имя_картинки}

    Bundle это тип данных такой?

    это класс. в данном случае это сохранненые параметры приложения

    и что вот это такое?

    при с равнении этой структуры с пхп я бы сказал что это двухмерный ассоциативный массив


    А вообще это все слишком высокие технологии для твоего понимания. выучи сначала php потом за java берись
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 сентября 2010 г. 16:43, спустя 23 часа 59 минут 51 секунду

    А вообще это все слишком высокие технологии для твоего понимания. выучи сначала php потом за java берись

    как ты его красиво!)
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 19 сентября 2010 г. 16:44, спустя 1 минуту 25 секунд

    phpdude, я тебя умоляю. судя по карме я зря распинался.
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 19 сентября 2010 г. 17:16, спустя 32 минуты 19 секунд

    а что нельзя с java начать?
    Спустя 73 сек.
    есть ли возможность скачать проги с Маркета кроме как через гуглофон?
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 19 сентября 2010 г. 17:57, спустя 40 минут 45 секунд

    Чтобы начинать с Java . надо этого хотеть, учить и схватывать все, судя по твоим постам ты и php не доучишь
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 19 сентября 2010 г. 19:25, спустя 1 час 28 минут 18 секунд


    Чтобы начинать с Java . надо этого хотеть, учить и схватывать все, судя по твоим постам ты и php не доучишь
    может ты прав. Мне мативация нужно, наверное у меня подход не правильный
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 19 сентября 2010 г. 19:27, спустя 1 минуту 36 секунд

    Мне мативация нужно

    её не существует
    Спустя 8 сек.
    это правда.
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 19 сентября 2010 г. 20:55, спустя 1 час 28 минут 8 секунд

    мотивация конечно же существует.
    но нам всем в принципе похуй и на тебя и на твою мотивацию.
    каждый ищет свою мотивацию сам. некоторые в том что им скучно, некоторые в работе, некоторые хотят кому-то что-то доказать.
    а тут к костяке люди которые никому ничего не хотят доказывать и им глубоко похуй что хотят им доказать остальные.
    вот пришел Хай, и сразу видно что ему похуй и он тут свой и ему комфортно, на сколько я вижу смотря раз в день пару тем.
    А тебя тут все стебут и я тоже но мне похуй, а ты обижаешься.

    Тут как с кино, главное правильный подход. Ты же не идешь смотреть Терминатора с желание увидеть сюжет, ты идешь туда увидеть "бах-бах и оловянные солдатики весело маршируют по обгорелым трупам". Или на фильм Гая Ричи с желанием посмотреть изысканные манеры англичан - нет, потому что он снимает английский треш в чистом виде.

    // читать с расстановкой и большими паузами
    Так вот не жди чего-то от пыхи… тут такие уже были, толпами, и ушли, нахуй, так же - толпами…
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 19 сентября 2010 г. 20:57, спустя 1 минуту 57 секунд

    Если нет мотивации, то стоит задуматься "А оно мне надо?" , я например получаю удовольствие от программирования (не имею ввиду рутину и мне всегда интересно выучить что-то новое)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 сентября 2010 г. 20:57, спустя 17 секунд

    CTAPbIu_MABP, браво браво мой герой!!!! браво милый!!!! )))))))
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!