Я, вероятно, пытаюсь спросить здесь слишком много сразу, но любой святой, терпеливый гуру Android, который может хоть немного помочь, вероятно, спасет мой проект от сбоев.
I 'я работаю над приложением "одевалка-кукла", где пользователь может перетаскивать предметы из представления "инвентарь одежды" в "куклу", в другом представлении.
Во-первых, я не могу понять, какиметь куклу и инвентарь в разных видах и при этом иметь возможность перетаскивать растровые изображения между ними.(рисование и перетаскивание растровых изображений само по себе не является проблемой).
Все, что мне удалось получить, - это использовать один расширенный SurfaceView, который я программно добавляю в свой макет, и использую нить для рисования на его Canvas.На одной стороне холста я рисую битпомы, из которых состоит кукла.С другой стороны, я рисую растровые изображения, которые составляют инвентарь.Это работает нормально, но мне нужно иметь возможность разделить его на два вида, так как: а) высота вида куклы должна быть больше высоты вида инвентаря, и б) я хочу использоватьдва вида в другом месте, самостоятельно, в разных видах деятельности.
Итак, наконец, мой вопрос: как я могу разделить растровые изображения между холстами двух видов поверхности?Или я могу иметь Canvas, который покрывает весь экран с другими видами (Кнопки TextView и т. Д.), Помещенными поверх него?Или есть какой-то другой, более логичный способ сделать то, что я пытаюсь, который прошел мимо меня?Если бы у меня было два SurfaceView, каждый с Canvas, управляемый потоком, как бы я справился с тем фактом, что перетаскиваемый растр может быть частично «внутри» обеих областей Canvases одновременно?(Я действительно просто хочу один холст размером с экран, не так ли?)
Прогрессивно добавленный SurfaceView, назовем его DollView, добавляется к в противном случае пустому вложенному RelativeLayout согласно XML-разметке ниже.Я продолжал постоянно выдумывать, добавляя кнопки к XML-разметке, которые, так или иначе, появляются на вершине DollView и не подвержены постоянному рисованию и перерисовыванию Canvas DollView.Когда я перетаскиваю растровое изображение предмета одежды или предмета куклы, оно проходит под этими кнопками ... и , если я перетаскиваю растровое изображение за пределы указанной ширины родительского объекта DollView RelativeLayout, я все еще могу "удерживать"и вернуть его в поле зрения, но он не отображается на экране.Абсолютно озадаченный этим, хотя сейчас это наименьшая из моих проблем.
Я могу показать любому, кто интересуется этим безумием, столько кода, сколько им хотелось бы видеть.Спасибо за терпение со мной.Я надеюсь, что чтение не повредит вашей голове так же сильно, как попытка объяснить, что это повредило мою!:)
Вот макет действия, который устанавливается как представление содержимого в OnCreate:
<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/header_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text="Header text..." />
<!-- The extended SufaceView (DollView) is programatically added to this RelativeLayout -->
<RelativeLayout android:id="@+id/doll_layout"
android:layout_width="350dip"
android:layout_height="wrap_content"
android:layout_below="@+id/header_text"
android:layout_alignParentLeft="true" />
<TextView android:id="@+id/stats"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_below="@+id/header_text"
android:layout_toRightOf="@+id/doll_layout"
android:layout_alignParentRight="true"
android:text="Stats text..." />
<TableLayout android="@+id/stats_table"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/stats"
android:layout_toRightOf="@+id/doll_layout"
android:layout_alignParentRight="true">
<TableRow>
<TextView android:id="@+id/stat_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="stat one..." />
<TextView android:id="@+id/stat_one_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="0" />
<TextView android:id="@+id/stat_one_mod"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text=" " />
</TableRow>
<TableRow>
<TextView android:id="@+id/stat_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="stat two..." />
<TextView android:id="@+id/stat_two_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="0" />
<TextView android:id="@+id/stat_two_mod"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text=" " />
</TableRow>
<TableRow>
<Button android:id="@+id/stats_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="stats" />
<Button android:id="@+id/info_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="info" />
<Button android:id="@+id/help_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="help" />
</TableRow>
</TableLayout>
<!-- A "dragged" bitmap from the DollView passes underneath this TextView. Why? -->
<TextView android:id="@+id/doll_name"
android:textSize="16sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/header_text"
android:layout_alignParentLeft="true"
android:text="" />
<!-- dragged bitmaps pass under all of these buttons too, apart from the last three
nav buttons, as they're outside the DollView's width.
How would I make the dragged bitmaps pass OVER these objects, instead? -->
<Button android:id="@+id/nav_btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/nav_btn2"
android:text="nav1" />
<Button android:id="@+id/next_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/nav_btn1"
android:layout_centerHorizontal="true"
android:text="Next" />
<Button android:id="@+id/prev_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/nav_btn1"
android:layout_toLeftOf="@+id/next_btn"
android:text="Previous" />
<Button android:id="@+id/nav_btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/nav_btn3"
android:text="nav2" />
<Button android:id="@+id/nav_btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/nav_btn4"
android:text="nav3" />
<Button android:id="@+id/nav_btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/nav_btn5"
android:text="nav4" />
<Button android:id="@+id/nav_btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/nav_btn6"
android:text="nav5" />
<Button android:id="@+id/nav_btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="nav6" />