這些方法都是View類的,所以像TextView這樣看似不是按鈕的組件也可以使用這些監聽。
public static interface View.OnClickListener { void onClick(View v);}public static interface View.OnLongClickListener { boolean onLongClick(View v);}public interface View.OnTouchListener { boolean onTouch(View v, MotionEvent event);}
由此我們可以知道,要實現監聽,就是要覆蓋這個接口的方法,實現多態。
我們在最上方設置一個TextView,用于顯示我們的操作。
練習一下TableLayout,設置4個按鍵,分別用Button和TextView,用多種方法加上監聽器。
對最上面的TextView加上觸摸監聽器,并顯示坐標。
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:andro xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.myapplication.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android: android:textSize="25dp"/> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/title"> <TableRow> <Button android:text="1" android:textSize="25dp" android:layout_weight="1" android:/> <Button android:text="2" android:textSize="25dp" android:layout_weight="1" android:onClick="onClick2" /> </TableRow> <TableRow> <TextView android: android:text="3" android:textSize="25dp" android:layout_weight="1" android:gravity="center"/> <TextView android:text="4" android:textSize="25dp" android:layout_weight="1" android:gravity="center" android:onClick="onClick4"/> </TableRow> </TableLayout></RelativeLayout>
package com.example.myapplication;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView title = (TextView) findViewById(R.id.title); //先為四個組件添加單擊監聽 Button B1 = (Button) findViewById(R.id.button1); TextView T3 = (TextView) findViewById(R.id.textView3); //方法一:定義內部接口類 class OnClick1 implements View.OnClickListener { public void onClick(View view) { title.setText("Button1被單擊");} } B1.setOnClickListener(new OnClick1()); //方法二:不定義類,用匿名內部類 T3.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ title.setText("TextView3被單擊");} }); //方法三在onCreate函數體外,為xml中注冊的函數定義 //為有id的兩個組件注冊長按監聽 B1.setOnLongClickListener(new View.OnLongClickListener(){ @Override public boolean onLongClick(View view){ title.setText("Button1被長按");return false;} }); T3.setOnLongClickListener(new View.OnLongClickListener(){ @Override public boolean onLongClick(View view){ title.setText("TextView3被長按");return true;} }); //為T3添加觸屏監聽 title.setOnTouchListener(new View.OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { title.setText("x坐標為"+event.getX()+"Y坐標為"+event.getY()); return true; } }); } //設置另外兩個單擊監聽 public void onClick2(View view) { TextView title = (TextView) findViewById(R.id.title); title.setText("Button2被單擊"); } public void onClick4(View view){ TextView title = (TextView) findViewById(R.id.title); title.setText("TextView4被單擊"); }}
可以試驗Button1和TextView3對于長按,一個Button1觸發單擊,TextView3不觸發。從最上方TextView滑動手指,可以時時顯示坐標。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。
195195.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
怎么隱藏qq上的,會員和超級qq圖標?1、點自己名字,打開個人資料夾,你選擇圖標管理。2、點要自動關閉的圖標,當圖標上有一個小紅圈,可以表示該圖標被自動關閉,操作一切就緒點確定。怎么才能隱藏qq空間黃鉆圖標和空間等級?不能不能隱藏地空間等級一:登陸后然后打開個人資料二:點個人資料里面的系統設置,好友和一起聊天里的在迷你資料卡上不顯示業務圖標把前面的勾可以去掉點應用,然后把在把勾打上,點應用。在小巧...
臺州動車站在哪里?臺州只有一個流動站,位于臺州市黃巖區北城街道王林村。臺州有五個流動站。除臺州站外,還有三門縣三門站、臨海市臨海站、溫嶺市溫嶺站。動臥站沒有臺州南站和臺州北站。只有一個名為 "臺州 "在臺州動車站在哪里?,它位于臺州市黃巖區北城街道王林村。臺州有五個流動站。除臺州站外,還有三門縣三門站、臨海市臨海站、溫嶺市溫嶺站。動臥站沒有臺州南站和臺州北站。此數據來自地圖,最終結果以地圖最新數據...
阿迪達斯麥迪籃球鞋一共有幾代?阿迪達斯麥迪已經五代了。麥迪5最突出的特點就是極具視覺沖擊力的阿迪達斯ForMotion?技術。這項技術讓玩家擁有非凡的控制力,可以自發地適應地面條件;在運動鞋的內大底上,也有五個ForMotion?技術單位,以確保最大限度地接觸地面。不管你跑得多快或轉彎多猛,對運動來說?能讓玩家安心。阿迪達斯麥迪籃球鞋一共有幾代?麥迪籃球鞋有6代簽名鞋:第一代2002年,阿迪達斯發...