真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

android的點擊事件,android的點擊事件分發(fā)

Android源碼追蹤—android:onClick

之前對源碼的閱讀,總是用時一通亂七八糟的跳轉,以學會使用為目的;過了一段時間,就忘記了,因此打算將一些源碼的閱讀經歷記錄下來,也通過敲一遍的過程,加深理解。

在綏中等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都做網站、成都網站制作、成都外貿網站建設 網站設計制作按需求定制網站,公司網站建設,企業(yè)網站建設,成都品牌網站建設,全網整合營銷推廣,外貿網站制作,綏中網站建設費用合理。

最開始,用一個比較簡單的例子來小試牛刀吧

對于View(Button、TextView等)的點擊事件,常用的寫法是通過 findViewById 獲取View的實例,然后通過 setOnClickListener 設置監(jiān)聽事件,比如我們有如下Button控件。

設置點擊事件(假設在Activity中)

但是還有一種寫法是在xml布局中通過android:onClick屬性直接指定點擊執(zhí)行的函數(shù)。

【思考】

首先我們知道諸如 android:xxx 之類的屬性是會在某個attrs文件中定義的,此處的 android:onClick 是View的屬性,定義在如下文件中。

在View的構造函數(shù)中,會解析出此屬性的值。

看這里, 如果變量handlerName不為空,就會為此View設置點擊事件了 ,這個handlerName就是onClick屬性的值doSubmit,但這個點擊事件,并不是我們所熟悉的OnClickListener。

進一步看看這個 DeclaredOnClickListener 類

DeclaredOnClickListener 實現(xiàn)了 OnClickListener ,其中重點是參數(shù) mResolvedMethod 和 mResolvedContext 。

在onClick事件中最終通過反射 mResolvedMethod.invoke(mResolvedContext, v); 執(zhí)行了doSubmit方法。

doSubmit的訪問權限是否可以設置為private呢?

答案:不可以,因為源碼中沒有調用 mMethod.setAccessible(true); 注入所有修飾符。

其實在onClick屬性的注釋中就已經說明了。

如何綁定android點擊事件

綁定android點擊事件需要在該空間添加android:onClick="click"屬性(click是為事件的方法),具體操作步驟如下:

1、使用Android studio創(chuàng)建一個Android項目,如下圖:

2、打開其XML布局文件,如下圖:

3、添加一個Button并給android:onClick="click"屬性和寬高屬性,如下圖:

4、在綁定了該XML布局的類中實現(xiàn)該方法,這個方法命名必須和click,這個方法就是該控件的點擊事件,如下圖:

android 點擊事件怎么寫

按鈕監(jiān)聽的3種方式

使用setOnClickListener (View.OnClickListener l)方法

loginBtn.setOnClickListener(new?View.OnClickListener()?{

@Override

public?void?onClick(View?view)?{

Toast.makeText(ButtonActivity.this,?"點擊了登錄按鈕"?,?Toast.LENGTH_SHORT).show();

}

});

實現(xiàn)接口的方式

public?class?ButtonActivity?extends?Activity?implements?View.OnClickListener?{

private?Button?loginBtn;

@Override

protected?void?onCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

setContentView(R.layout.button_activity);

loginBtn?=?(Button)?findViewById(R.id.login_btn);

}

@Override

public?void?onClick(View?view)?{

switch?(view.getId()){

case?R.id.login_btn:

Toast.makeText(ButtonActivity.this,?"點擊了登錄按鈕"?,?Toast.LENGTH_SHORT).show();

break;

default:

break;

}

}

}

在布局文件中加使用android:onClick屬性

//1、先在布局文件中聲明android:onClick="clickLoginBtn"

Button

android:id="@+id/login_btn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="登錄"

android:onClick="clickLoginBtn"/

//2、然后在代碼總實現(xiàn)該同名方法,注意方法的訪問權限必須為public

public?void?clickLoginBtn(View?view){

Toast.makeText(ButtonActivity.this,?"點擊了登錄按鈕"?,?Toast.LENGTH_SHORT).show();

}

Android中點擊事件功能實現(xiàn)示例

第一種點擊事件

在xml中設置onclick屬性

android:onClick="myOnclick"

第二種;獲取Button然后一個一個單獨綁定點擊事件

"

xmlns:tools=" "

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"?

android:id="@+id/btn_imgBtn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="myOnclick"

android:text="imageButton"

/

android:id="@+id/btn_imgView"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="myOnclick"

android:text="imageView"

/

public class MainActivity extends ActionBarActivity {

private Button btnImageBtn;

private Button btnImageView;

@Override

protected void onCreate(Bundle savedInstanceState) {

? ? super.onCreate(savedInstanceState);

? ? setContentView(R.layout.activity_main);

? ? btnImageBtn = (Button) findViewById(R.id.btn_imgBtn);

? ? btnImageView = ?(Button) findViewById(R.id.btn_imgView);

btnImageBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "點擊ImageButton", Toast.LENGTH_SHORT).show();

}

});

? ? btnImageView.setOnClickListener(new MyListener());

}

第三種:寫一個類(MyListener)實現(xiàn)OnClickListener接口,然后Button在設置onclickListener的時候new一個MyListener

btnImageView.setOnClickListener(new MyListener());

class MyListener implements OnClickListener{

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.btn_imgBtn:

Toast.makeText(MainActivity.this, "點擊ImageButton", Toast.LENGTH_SHORT).show();

break;

? ? ?case R.id.btn_imgView:

? ? ? Toast.makeText(MainActivity.this, "點擊imageView", Toast.LENGTH_SHORT).show();

break;

}?

第四種:整個類(MianActivity)實現(xiàn)onclickListener的接口

跳轉界面

Intent:意圖,用于訪問android中的組件

用Intent跳轉界面(activity)

第一步:new一個Intent()

Intent intent1 = new Intent(MainActivity.this,ImageButtonActivity.class);

startActivity(intent1);

public void myOnclick(View view){

?switch (view.getId()) {

case R.id.btn_imgBtn:

Intent intent1 = new Intent(MainActivity.this,ImageButtonActivity.class);

startActivity(intent1);

break;

? ? case R.id.btn_imgView:

? ? ?Intent intent2 = new Intent(MainActivity.this,ImageViewActivity.class);

startActivity(intent2);

break;

Intent intent = new Intent(當前的activity,跳轉到的acticvity.class);

startActivity(intent);

3.ImageView

展示方式:scaleType:

4.ImageButton:

觸摸事件:當控件或者屏幕唄觸摸的時候,產生的反應

public boolean onTouchEvent(MotionEvent event) {

imageButton:現(xiàn)在已經唄button代替,用于展示圖片的按鈕。不能顯示文字。

imageView

scaleType:圖片展示的方式

fitStart:展示在控件的上方

fitCenter:展示在控件的中間

fitEnd;展示在控件的下方

fitXY:不按照比例拉伸

matrix:矩陣模式

matrix可以設置圖片旋轉,縮放。移動

獲取圖片的高度和寬度

int h = imgView.getDrawable().getIntrinsicHeight();

int w = imgView.getDrawable().getIntrinsicWidth();

Matrix m = new Matrix();

m.postRotate(45);

m.postRotate(45, w/2, h/2);

imgView.setImageMatrix(m);

移動事件:

按下:MotionEvent.ACTION_DOWN

抬起:MotionEvent.ACTION_UP

移動:MotionEvent.ACTION_MOVE

獲取當前的移動事件,

event.getAction()

"

xmlns:tools=" "

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/img_01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/ss"

android:scaleType="fitXY"/

android:id="@+id/img_02"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/gl"

android:visibility="gone"

android:scaleType="fitXY"/

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/bird"

android:layout_gravity="center"

/

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="20sp"

android:textColor="#ff0000"

android:gravity="center"

android:text="小鳥飛"/

public class MainActivity extends Activity {

private ImageView img01;

private ImageView img02;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

img01 = (ImageView) findViewById(R.id.img_01);

img02 = (ImageView) findViewById(R.id.img_02);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

//System.out.println("被摸了");

if(event.getAction()==MotionEvent.ACTION_UP){

Log.v("TAG", "被抬起來");

if(img01.getVisibility()==View.VISIBLE){

img01.setVisibility(View.GONE);

img02.setVisibility(View.VISIBLE);

}else{

img01.setVisibility(View.VISIBLE);

img02.setVisibility(View.GONE);

}

}else if(event.getAction()==MotionEvent.ACTION_DOWN){

Log.v("TAG", "被按下了");

}else if(event.getAction()==MotionEvent.ACTION_MOVE){

Log.v("TAG", "移動了");

}

return super.onTouchEvent(event);

}


本文名稱:android的點擊事件,android的點擊事件分發(fā)
分享網址:http://weahome.cn/article/dsdddeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部