Программируем на смартфоне » Страница 15

-

Программирование под Android



Zaterehniy


репутация: 704
на сайте с 2006 года
сообщений: 2504

Google Pixel 7a

Ставрополь

Возраст - 37

#141

Еще по поводу прокрутки. Если подходитсписок то его вполне можно использовать в качестве основного меню. Оформить можно приделав к нему иконки. Вот пример небольшой с обработкой нажатий.

function OnStart()
{
  lay = app.CreateLayout( "Linear", "VCenter,FillXY" );

  var data = "Новости пользователей:разные новости из мира IT и не только:null";
  data += ",Статьи:разный полезный материал за авторством наших пользователей:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  data += ",Блоги: о чем пишут пользователи сайта:null";
  lst = app.CreateList( data, 0.9, 0.9 );
  lst.SetOnTouch( lst_OnTouch );
  lay.AddChild( lst );

  app.AddLayout( lay );
}

function lst_OnTouch( item )
{
  if (item=="Новости пользователей")
      app.ShowPopup( "новости пользователей " );
  else if(item=="Статьи")
      app.ShowPopup( "статьи" );
  else if(item == "Блоги" )
      app.ShowPopup( "Блоги");
}

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#142

Жень, с прокруткой я разобрался, ты тогда подсказал что пример скроллa картинки надо посмотреть, он для всего подходит. А с упаковкой изображений у меня вот какая трабла вчера случилась, почему я не мог упаковать. Там в проекте у меня и так была папка img с иконкой. Видимо создается при упаковке. Я туда сую изображение- из дроид скрипта все работает, упаковываю- не работает. Оказалось что нельзя в эту папку было ложить, нужно другую создать или в саму папку проекта, ну и ты плюс подсказал как путь прописать правильно

Zaterehniy


репутация: 704
на сайте с 2006 года
сообщений: 2504

Google Pixel 7a

Ставрополь

Возраст - 37

#143

ну в хело ворлд она оттуда берется. Еще нельзя кирилицей писать название скрипта. при упаковке тоже работать не будет. Ну с картинками вопрос решен ?

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#144

Да, спасибо. Все упаковывается- картинки, текстовые файлы. Пока не пробовал, можно ли перезаписывать упакованные файлы, щас с другим разбираюсь. В документации увидел, что объект текст может поддерживать не только press down, но и press up, press long. Button не может. Но у текста нет аналога app.GetLastButton(), как у кнопки. Т.е. нет стандартной возможности узнать, какой именно объект нажали. Щас пытаюсь обойти это

-------------
добавлено в 22.18: Все, нашел решение. Оказыватся в эту функцию, которую мы передаем SetOnTouch, передается параметр-объект. С помощью for in я просмотрел его свойства, их куча, так вот сам объект-текст, который нажали, можно получить как argument.source. Пример:

function Test() {
    var lay = app.CreateLayout("linear", "FillXY");
    var items = ["Вася", "Петя", "Жора"]
    arr = []
    for(var i in items) {
        arr[i] = app.CreateText(items[i]);
        arr[i].SetTextSize(25);
        arr[i].SetOnTouchDown(txtOnTouch);
        lay.AddChild(arr[i]);
        }
    app.AddLayout(lay);
}

function txtOnTouch(obj) {
    var obj = obj.source;
    var index = arr.indexOf(obj);
    var text = obj.GetText();
    app.Alert(text+", index: "+index);
}
    

function OnStart() {Test()}



-------------
добавлено в 22.51: Ну и пример ScrollView, может кому пригодится

function Example() {
    layMain = app.CreateLayout("Linear", "FillXY");
    var ttl = app.CreateText("title")
    ttl.SetTextSize(15)
    layMain.AddChild(ttl)
    var scroll = app.CreateScroller(1.0, 0.95); 
    layMain.AddChild( scroll );
    var layScroll = app.CreateLayout("Linear", "Left"); 
    scroll.AddChild( layScroll ); 
    arr = [];
    list = app.ListFolder("/sdcard");
    for(var i in list) {
        var lt = app.CreateLayout("Linear", "Horizontal,FillXY");
        lt.SetMargins(0, 0.01, 0, 0);
        var txt = app.CreateText(list[i], 0.8, -1,"Multiline,FillY,Left");
        txt.SetTextSize(12);
        lt.AddChild(txt)
        arr[i] = app.CreateButton("ok", 0.2 , -1, "FillY");
        arr[i].SetOnTouch(btn_OnTouch); 
        lt.AddChild(arr[i])
        layScroll.AddChild(lt) }
    app.AddLayout(layMain)    
    
}

function btn_OnTouch() {
     var btn = app.GetLastButton();
     var indexTouch = arr.indexOf(btn)
     app.ShowPopup(list[indexTouch])


function OnStart() {
   Example() 
}

Zaterehniy


репутация: 704
на сайте с 2006 года
сообщений: 2504

Google Pixel 7a

Ставрополь

Возраст - 37

#145

надо бы собрать эти все полезности и оформить в шапку.

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#146

Нет возможности отличить файл от каталога. app..FolderExists и app.FileExists все время true возвращают. Проверять попыткой прочитать долго. Как быть?

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#147

Всех с Новым годом!
Ну шо, у меня еще один облом. app.CreateList по документации позволяет юзать свои иконки. Так оно и есть, но только из дроидскрипта. После упаковки они не отображаются. Более того, у меня по нажатии пункта иконка меняется с помощью метода SetItem, так вот после упаковки в программе при нажатии на пункт вылазит окошко что нет такого метода, хотя из дроид скрипта все работает. Придется отказаться от реализации на app.CreateList, а так все хорошо шло поначалу- быстро прорисовывается, поддерживает догий тап... эх:((
п.с. вот сам скрипт, кто хочет проверить, создайте проект с именем "Object" и извлеките из архива содержимое в папку /DroidScript.

Прикрепленный файл #1:

Внимание! У вас нет прав для просмотра скрытого текста.
(15,71 Kb)

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#148

Вот бы йота текст эдийшн умел из дроид скрипта запускать, как из сл4а...

Zaterehniy


репутация: 704
на сайте с 2006 года
сообщений: 2504

Google Pixel 7a

Ставрополь

Возраст - 37

#149

dimy44,
не понял что там не работать . запаковал , запускаю , карьинки на месте .

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#150

Как же так. У меня нету после упаковки картинок. Хз, тогда продолжу так делать, Жека, потом тебя попрошу запаковать в апк smile)
У меня вот что упаковывает

Дополнительный скрин #1 (47,18 Kb)


Яндекс.Метрика