Подтвердить что ты не робот

Разница между представлением и виджетами

Хорошо, это мой простой вопрос. В чем разница между представлением и виджетами?

Большое спасибо

4b9b3361

Ответ 1

Как элегантно указано в документах класса View:

Этот класс представляет базовый строительный блок для пользовательского интерфейса компоненты. Вид занимает прямоугольную область на экране и ответственный за рисование и обработку событий. View - базовый класс для виджеты, которые используются для создания компонентов интерактивного интерфейса (кнопки, текстовые поля и т.д.). Подкласс ViewGroup является базовым классом для макеты, которые являются невидимыми контейнерами, в которых хранятся другие представления (или другие ViewGroups) и определить их свойства макета.

Следовательно, представление является базовым классом для элементов IU, а Widget свободно определяется как любой готовый к использованию View. В частности, хотя:

Вид: Вид является базовым классом для всех элементов интерфейса. Поэтому он охватывает множество различных классов и понятий, включая Виджеты, ViewGroups и Layouts. Существует корневой вид, прикрепленный к экземпляру Window, который формирует основу иерархии View. В общем случае слово View обычно используется для описания элементов пользовательского интерфейса в целом или для ссылки на абстрактные или базовые классы пользовательского интерфейса, такие как ViewGroups.

Widget: Существуют различные определения для этого термина, но большинство относятся к "готовому к использованию" элементу пользовательского интерфейса, будь то Button, ImageView, EditText и т.д. Обратите внимание, что некоторые люди считают, что виджеты являются элементами пользовательского интерфейса, которые являются полными (а не абстрактными) и не являются контейнерами (такими как ViewGroups (Layouts/ListViews)). Также стоит отметить, что Widget - это имя пакета (android.widget), где в документах указано следующее:

Пакет виджета содержит (в основном визуальные) элементы пользовательского интерфейса для использования на вашем Экран приложения.

Поэтому разумно рассматривать не визуальные элементы пользовательского интерфейса также как Виджеты, а также любой класс, определенный в пакете виджета. См. Здесь полный список классов в пакете виджета: http://developer.android.com/reference/android/widget/package-summary.html

Виджет приложений: Чтобы не путать с виджетами элементов пользовательского интерфейса, App Widget - это иерархия удаленного представления, которая чаще всего отображается на главном экране пользователя. Как определено документами:

Виджеты приложений - это миниатюрные представления приложений, которые могут быть встроены в другие приложения (например, начальный экран) и получать периодические Обновления. Эти представления называются виджетами в пользовательском интерфейсе, и вы можете опубликовать его с помощью поставщика приложений. Приложение компонент, способный удерживать другие виджеты приложений, называется приложением Хост виджета.

ViewGroup: ViewGroup является подклассом View и предоставляет возможность родительским и позиционным представлениям для детей, например, в случае макетов.

Контейнеры Layout/View: Как и в случае с виджетами, базового класса Layout нет, поэтому он может быть свободно определен как любой класс, который расширяет ViewGroup и предоставляет возможность определять позиционирование дочерних представлений внутри него. Обычно только подклассы ViewGroup, которые добавляются вместе со словом Layout (как в LinearLayout, RelativeLayout), называются макетами, другие классы, расширяющие ViewGroup, обычно называются View Containers.

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

Для дальнейшего чтения: в чем разница между представлениями и виджетами разница между виджетами и виджетами

Ответ 2

Виджет - это вид. Макет - это ViewGroup. Чтобы создать виджет, вы расширяете представление.

Ответ 3

Виджет - это пакет на Android, который содержит все пользовательские интерфейсы, такие как кнопка, textView и макет и т.д. но представление представляет собой абстрактный класс, который включает в себя свойства, метод обработки фокуса и событий, рендеринг и т.д.

Но все виджеты расширяют представление для получения пользовательского интерфейса с таким поведением, как свойства, фокус и т.д. Таким образом, все виджеты являются примерами вида, но представление не совпадает с виджетами. Группа просмотра действует как контейнер, который содержит разные виды представлений, это макет-макет, относительный макет. Они расширяют группу представлений и имеют такую ​​же цель, как действие как контейнер, который добавляет конкретное поведение ко всем представлениям, которые он содержит.

Ответ 4

Я не верю, что любой из ранних ответов действительно правильный. Различные инструментальные средства пользовательского интерфейса используют разные термины для того, что часто по сути является одним и тем же, и верно, что Android View довольно похож на .NET Control или виджет Qt.

Но "виджет" также означает что-то очень специфическое в Android. Если вы долго нажимаете на главный экран, вы получаете диалоговое окно "Добавить на главный экран", в котором предлагается добавить Widgets (между прочим). Если вы коснетесь строки Widgets, вы получите меню виджетов, таких как Analog Clock с 1 по 4.

Согласно developer.android.com/guide/topics/appwidgets, это специальные объекты, которые позволяют вашему процессу отображать контент в другом представлении процесса. Как домашний экран. Существует специальный широковещательный протокол, который вы наследуете бесплатно, но вы также взаимодействуете с представлениями в developer.android.com/reference/android/widget/RemoteViews.html хостом через специальный протокол, который, как представляется, включает маршалинг. Я только начал задумываться о написании (так я нашел этот вопрос), но в документах говорят, что вы можете использовать только макеты FrameLayout, LinearLayout и RelativeLayout и что они могут содержать только AnalogClock, Button, Chronometer, ImageButton, ImageView, ProgressBar', Классы виджета TextView , and ViewFlipper` "-" Потомки этих классов не поддерживаются. "

Это немного ограничивает!

Ответ 5

Давайте рассмотрим четкие различия, без гигантского описания.

  • A view - это объект, который можно поместить в макет или на страницы. Это базовый строительный блок для компонентов пользовательского интерфейса (вы можете ссылаться эти компоненты как виджет).
  • Виджеты - это мелкомасштабные представления (например, представление кнопки, флажок и т.д.), которые могут быть встроены в другие виды (например, "Главный экран", экран входа в систему и т.д.).

Теперь вы можете думать, что вид - это контейнер или владелец места, а виджет - это независимые элементы управления, которые можно разместить в любом представлении.

Но имейте в виду, что они больше похожи на концепты дизайна, а не на хардкорные определения.

Наконец, это можно сделать так:

  • Независимое представление, готовое к использованию в любых других представлениях в качестве элементов пользовательского интерфейса, можно назвать виджетами.

Для получения более подробного описания ознакомьтесь с базовым кодом ниже:

<!doctype html>
   <head>
      <title>New jQuery UI Widget by souro</title>
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
      <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
      <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
      <script>
         $(function() {
            $.widget("iP.myButton", {
               _create: function() { 
                  this._button = $("<button>"); 
                  this._button.text("My first Widget Button");
                  this._button.width(this.options.width) 
                  this._button.css("background-color", this.options.color);    
                  this._button.css("position", "absolute");   
                  this._button.css("left", "100px");            
                  $(this.element).append(this._button);
               },
            });
            $("#button1").myButton();
         });
      </script>
   </head>
   <body>
      <div id="button1"></div>
   </body>
</html>

Ответ 7

Представления относятся к макетам, заполнителям.

Виджеты касаются данных, поведения пользовательского интерфейса (ex Sliders). Представления содержат виджеты.

Ответ 8

У меня была такая же путаница в этом, прежде всего для двух пакетов android.view и android.widget. В итоге я думал о виджетах как о "готовых к использованию" представлениях, а представления - как о простых элементах для создания виджетов. Если я создам собственное представление, которое будет непосредственно использоваться в макете, я бы подумал, что это виджет.

Ответ 9

view - суперкласс виджета, так что виджет является своего рода видом. В "pro android 4" автор воспринимает их как одно и то же.

"Просмотр, виджет, управление. Каждый из них представляет элемент пользовательского интерфейса. Примеры включают в себя кнопку, сетку, список, окно, диалоговое окно и т.д. Вид, виджет и элемент терминов используются взаимозаменяемо в этой главе."