1 page.title= 2 parent.title= 3 parent.link=index.html 4 @jd:body 5 6 <div id="qv-wrapper"> 7 <div id="qv"> 8 <h2> </h2> 9 <ol> 10 <li><a href="#EventListeners"> </a></li> 11 <li><a href="#EventHandlers"> </a></li> 12 <li><a href="#TouchMode"> </a></li> 13 <li><a href="#HandlingFocus"> </a></li> 14 </ol> 15 16 </div> 17 </div> 18 19 <p> Android . 20 , , 21 , . (View) , .</p> 22 23 <p> View, , , 24 . Android, 25 . , (), 26 <code>onTouchEvent()</code> . 27 . 28 . View 29 , . , 30 <a href="#EventListeners"> </a>, .</p> 31 32 <p> , , 33 , View, . 34 , {@link android.widget.Button}, 35 . 36 <a href="#EventHandlers"> </a> .</p> 37 38 39 <h2 id="EventListeners"> </h2> 40 41 <p> {@link android.view.View}, 42 . Android, 43 View, .</p> 44 45 <p>, , :</p> 46 47 <dl> 48 <dt><code>onClick()</code></dt> 49 <dd> {@link android.view.View.OnClickListener}. 50 , 51 ( ), 52 .</dd> 53 <dt><code>onLongClick()</code></dt> 54 <dd> {@link android.view.View.OnLongClickListener}. 55 , ( ), 56 57 ( ).</dd> 58 <dt><code>onFocusChange()</code></dt> 59 <dd> {@link android.view.View.OnFocusChangeListener}. 60 , .</dd> 61 <dt><code>onKey()</code></dt> 62 <dd> {@link android.view.View.OnKeyListener}. 63 , .</dd> 64 <dt><code>onTouch()</code></dt> 65 <dd> {@link android.view.View.OnTouchListener}. 66 , , , , , 67 ( ).</dd> 68 <dt><code>onCreateContextMenu()</code></dt> 69 <dd> {@link android.view.View.OnCreateContextMenuListener}. 70 , ( ). . 71 72 <a href="{@docRoot}guide/topics/ui/menus.html#context-menu"></a>.</dd> 73 </dl> 74 75 <p> . 76 , , . 77 78 <code>View.set...Listener()</code>. (, 79 <code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> 80 {@link android.view.View.OnClickListener OnClickListener}.)</p> 81 82 <p> , (on-click) . </p> 83 84 <pre> 85 // Create an anonymous implementation of OnClickListener 86 private OnClickListener mCorkyListener = new OnClickListener() { 87 public void onClick(View v) { 88 // do something when the button is clicked 89 } 90 }; 91 92 protected void onCreate(Bundle savedValues) { 93 ... 94 // Capture our button from layout 95 Button button = (Button)findViewById(R.id.corky); 96 // Register the onClick listener with the implementation above 97 button.setOnClickListener(mCorkyListener); 98 ... 99 } 100 </pre> 101 102 <p>, OnClickListener . 103 . :</p> 104 <pre> 105 public class ExampleActivity extends Activity implements OnClickListener { 106 protected void onCreate(Bundle savedValues) { 107 ... 108 Button button = (Button)findViewById(R.id.corky); 109 button.setOnClickListener(this); 110 } 111 112 // Implement the OnClickListener callback 113 public void onClick(View v) { 114 // do something when the button is clicked 115 } 116 ... 117 } 118 </pre> 119 120 <p> , <code>onClick()</code> 121 , . 122 . , , :</p> 123 <ul> 124 <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> 125 , , . 126 , <em>true</em>, , ; 127 <em>false</em>, / 128 on-click.</li> 129 <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> 130 , , . 131 , <em>true</em>, , ; 132 <em>false</em>, / 133 on-click.</li> 134 <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> 135 , , . , 136 , . , <em></em> 137 , , 138 . , 139 , .</li> 140 </ul> 141 142 <p>, View, . , 143 , , . ( ) 144 , , <code>{@link android.view.View#dispatchKeyEvent(KeyEvent) 145 dispatchKeyEvent()}</code>. View 146 <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> 147 <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p> 148 149 <p> , , , 150 . . , .. 151 , , <strong></strong> 152 <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>. 153 , , , 154 . , , 155 . , {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}, 156 , , . 157 .</p> 158 159 <p class="note"><strong>.</strong> Android , 160 . <em></em> 161 , 162 . , , <em>true</em>.</p> 163 164 165 <h2 id="EventHandlers"> </h2> 166 167 <p> , , 168 . 169 <a href="{@docRoot}guide/topics/ui/custom-components.html"> 170 </a> , , 171 :</p> 172 <ul> 173 <li><code>{@link android.view.View#onKeyDown}</code> .</li> 174 <li><code>{@link android.view.View#onKeyUp}</code> .</li> 175 <li><code>{@link android.view.View#onTrackballEvent}</code> .</li> 176 <li><code>{@link android.view.View#onTouchEvent}</code> .</li> 177 <li><code>{@link android.view.View#onFocusChanged}</code> , .</li> 178 </ul> 179 <p> , View, 180 . , 181 , :</p> 182 <ul> 183 <li><code>{@link android.app.Activity#dispatchTouchEvent(MotionEvent) 184 Activity.dispatchTouchEvent(MotionEvent)}</code> {@link 185 android.app.Activity} .</li> 186 <li><code>{@link android.view.ViewGroup#onInterceptTouchEvent(MotionEvent) 187 ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> {@link 188 android.view.ViewGroup} .</li> 189 <li><code>{@link android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean) 190 ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> 191 , , <code>{@link 192 android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li> 193 </ul> 194 195 <h2 id="TouchMode"> </h2> 196 <p> 197 , 198 ( ), , 199 . , , 200 , , 201 . , 202 , . 203 </p> 204 <p> 205 , , , 206 . , , 207 {@link android.view.View#isFocusableInTouchMode} true, . 208 , , , , . 209 on-click. 210 </p> 211 <p> 212 , , 213 , . 214 . 215 </p> 216 <p> 217 ( ). 218 , 219 {@link android.view.View#isInTouchMode} , . 220 </p> 221 222 223 <h2 id="HandlingFocus"> </h2> 224 225 <p> . 226 , , 227 . 228 <code>{@link android.view.View#isFocusable()}</code>. View 229 , <code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>. 230 View <code>{@link android.view.View#isFocusableInTouchMode()}</code>. 231 <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code>. 232 </p> 233 234 <p> , 235 . 236 , . 237 XML : 238 <var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var> 239 <var>nextFocusUp</var>. View, <em></em> 240 . View, 241 <em></em> . :</p> 242 <pre> 243 <LinearLayout 244 android:orientation="vertical" 245 ... > 246 <Button android:id="@+id/top" 247 android:nextFocusUp="@+id/bottom" 248 ... /> 249 <Button android:id="@+id/bottom" 250 android:nextFocusDown="@+id/top" 251 ... /> 252 </LinearLayout> 253 </pre> 254 255 <p> , 256 . , 257 <var>nextFocusUp</var> ( ), 258 .</p> 259 260 <p> , ( ), 261 XML- <code>android:focusable</code> View . 262 <var>true</var>. View, 263 <code>android:focusableInTouchMode</code>.</p> 264 <p> , <code>{@link android.view.View#requestFocus()}</code>.</p> 265 <p> ( , ), 266 <code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>, 267 <a href="#EventListeners"> </a> .</p> 268 269 270 271 <!-- 272 <h2 is="EventCycle">Event Cycle</h2> 273 <p>The basic cycle of a View is as follows:</p> 274 <ol> 275 <li>An event comes in and is dispatched to the appropriate View. The View 276 handles the event and notifies any listeners.</li> 277 <li>If, in the course of processing the event, the View's bounds may need 278 to be changed, the View will call {@link android.view.View#requestLayout()}.</li> 279 <li>Similarly, if in the course of processing the event the View's appearance 280 may need to be changed, the View will call {@link android.view.View#invalidate()}.</li> 281 <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called, 282 the framework will take care of measuring, laying out, and drawing the tree 283 as appropriate.</li> 284 </ol> 285 286 <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on 287 the UI thread when calling any method on any View. 288 If you are doing work on other threads and want to update the state of a View 289 from that thread, you should use a {@link android.os.Handler}. 290 </p> 291 --> 292