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

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

  • Trej Gun

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

    Spritz 7 сентября 2009 г. 1: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=&quot;1.0&quot; encoding=&quot;utf-8&quot;?>
    <manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; package=&quot;ua.kiev.mabp&quot;>
       <application android:icon=&quot;@drawable/icon&quot; android:label=&quot;tests&quot;>
           <activity android:name=&quot;MyActivity&quot; android:label=&quot;PBank&quot;>
               <intent-filter>
                   <action android:name=&quot;android.intent.action.MAIN&quot;/>
                   <category android:name=&quot;android.intent.category.LAUNCHER&quot;/>
               </intent-filter>
           </activity>
       </application>
       <uses-permission android:name=&quot;android.permission.INTERNET&quot;></uses-permission>
    </manifest>


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

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

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

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

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

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

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

    </LinearLayout>


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

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

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

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

       <ImageView android:id=&quot;@+id/img&quot;
           android:layout_width=&quot;wrap_content&quot;
           android:layout_height=&quot;wrap_content&quot;/>

       <LinearLayout
           android:layout_width=&quot;wrap_content&quot;
           android:layout_height=&quot;wrap_content&quot;
           android:orientation=&quot;vertical&quot;>

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

       </LinearLayout>

    </LinearLayout>


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

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

    пример файла

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


    строки доступны через объект ресурсов R.string.first или через слои android:text=&quot;@string/first&quot;
    чтобы преобразовать ресурс в локализированную строку делаем так 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(&quot;text&quot;, stg );
                   data.put(&quot;img&quot;, idx );
                   resourceNames.add(data);
               }

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

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

           setListAdapter(notes);
       }
    }


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


    this is android, have a fun :)
  • Nox

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

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

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


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

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

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

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

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

    Bundle это тип данных такой? {+++140+++} и что вот это такое?

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

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

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

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

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

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

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

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

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

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

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

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

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


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

           setListAdapter(notes);
       }

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

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

    да wrap_content это ID

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

    её не существует {+++8+++} это правда.
  • Trej Gun

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

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

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

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

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

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

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

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

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

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

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

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