2016-02-08 3 views
0
private void init() 
    { 
     if (isInEditMode()) 
      return; 

     paint.setStyle(Paint.Style.FILL); 
     paint.setColor(getResources().getColor(R.color.control_highlight_color)); 
     paint.setAntiAlias(true); 

     setWillNotDraw(true); 
     setDrawingCacheEnabled(true); 
     setClickable(true); 
    } 

Я столкнулся с указанным выше кодом, пытаясь понять, как создается эффект пульсации.Что такое isInEditMode() и if (isInEditMode()) return;

1) Мой вопрос в том, что именно есть isInEditMode(). Я взглянул на сайт разработчика, и объяснение немного смущает меня.

2) Еще один код if(isInEditMode()) return;, который поражает меня как нечетное. Я думал, что проверка if if соответствует формату if(){return;}. Однако способ форматирования кода меня смущает, и я хотел бы знать, почему это так.

3) Плюс, если возвращаемое значение не является чем-то, почему не просто не указывает его в первую очередь?

ответ

1

Как нет ответов на # 2 и # 3, там:

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

Для return; этот метод возвращает void, поэтому вы не можете вернуть объект. Это, однако, позволяет вам выйти из метода, то есть когда у вас плохое/неожиданное значение, так как return немедленно завершает метод в момент его вызова. return; означает примерно то же, что и return void; (однако я не знаю, скомпилирует ли это).

4

Объяснение просто иметь взгляд на эту

A View, как правило, в режиме редактирования, когда отображается в средстве разработки (Android студии, Eclipse, ... и т.д.). Например, если этот вид рисуется визуальным конструктором пользовательского интерфейса, этот метод должен возвращать true.

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

так isInEditMode() только для графических целей (в Android студии ..etc)

Еще один является, если (isInEditMode)() возвращение; код, который поражает меня как нечетного

в качестве одной строки кода вы можете опустить {} скобки.

Плюс, если возвращаемое значение не является чем-то, почему бы не просто указать его в на первом месте?

Как метод тип возврата Void только возврат если есть. Причина, по которой нужно вернуть return, - это java, если режим просмотра находится в режиме редактирования, не хочет делать операции, характерные для устройства.

+0

О, эй, я получаю благодарность за ответ. Вы можете ответить на вопросы №2 и №3? – Wowzer

+0

@Wowzer обновляет мой ответ с дополнительной информацией –

1

Вы можете легко увидеть эффект линии if (isInEditMode()) return; в области экрана предварительного просмотра при написании xml-макета в eclipse или студии android. Эта строка сделает ваше пользовательское представление проигнорированным и не будет отображаться на экране предварительного просмотра. В противном случае вы можете увидеть сообщение об ошибке ниже, если рендеринг не увенчался успехом.

Обычно пользовательский вид должен быть создан первым, так как он может отображаться на экране предварительного просмотра. Некоторые из них не могут быть отображены и вызывают сообщения об ошибках в любое время. Чтобы это не раздражало при написании кода xml, поместите эту строку над другим кодом инициализации в своем пользовательском представлении.

0

isInEditMode() указывает, находится ли этот вид в настоящее время в режиме редактирования. Просмотр обычно находится в режиме редактирования, когда отображается в инструменте разработчика. Например, если этот вид рисуется визуальным конструктором пользовательского интерфейса, этот метод должен возвращать true. Подклассы должны проверять возвращаемое значение этого метода для обеспечения различного поведения, если их нормальное поведение может помешать среде хоста. Например: класс порождает поток в своем конструкторе, код чертежа зависит от особенностей устройства и т. Д. Этот метод обычно проверяется в коде чертежа пользовательских виджетов.

Смежные вопросы