国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 安卓開發(fā)中實(shí)用的例子

安卓開發(fā)中實(shí)用的例子 時(shí)間:2018-09-21      來源:未知

我們?cè)趯?shí)際開發(fā)中經(jīng)常會(huì)需要按鍵,但是如果像平時(shí)使用OnClickListener 來監(jiān)聽的話,其實(shí)是不能滿足我們的需求的,比如要做一個(gè)按鍵的秒表app,按下開始計(jì)時(shí),放開停止計(jì)時(shí),如果用上面的OnClickListener監(jiān)聽器來監(jiān)聽,只能監(jiān)聽到按鍵抬起時(shí)的動(dòng)作,那么按下抬起動(dòng)作分開監(jiān)聽的話如何實(shí)現(xiàn),這里作者自己實(shí)現(xiàn)的一個(gè)方法,大家可以參考。

Java Code

textView = (TextView) findViewById(R.id.textView1);

button = (Button) findViewById(R.id.button1);

ButtonListener b = new ButtonListener();

button.setOnClickListener(b);

button.setOnTouchListener(b);

handler = new Handler()

{

@Override

public void handleMessage(Message msg)

{

// TODO Auto-generated method stub

super.handleMessage(msg);

if(msg.what == 0x1234)

{

textView.setText("計(jì)時(shí):" + msg.obj + " 秒");

}

}

};

這里我們利用內(nèi)部類去從寫了兩個(gè)監(jiān)聽器里的方法,以便比較,一個(gè)是上面所講的OnClickListener,另一個(gè)是實(shí)現(xiàn)我們監(jiān)聽按下抬起兩個(gè)動(dòng)作的OnTouchListener,內(nèi)部類的代碼如下:

Java Code

class ButtonListener implements OnClickListener, OnTouchListener

{

public void onClick(View v)

{

if(v.getId() == R.id.button1)

{

Log.d("test", "cansal button ---> click");

Toast tst = Toast.makeText(MainActivity.this, "33333333",

Toast.LENGTH_SHORT);

tst.show();

}

}

public boolean onTouch(View v, MotionEvent event)

{

if(v.getId() == R.id.button1)

{

if(event.getAction() == MotionEvent.ACTION_DOWN) //判斷動(dòng)作,如果是按下的話,置位標(biāo)志位,開啟線程

{

state = true;

new MyThread().start();

}

if(event.getAction() == MotionEvent.ACTION_UP) //如果是抬起,則將標(biāo)志位復(fù)位,使線程退出

{

state = false;

}

}

return false;

}

}

因?yàn)檫@里我們要實(shí)現(xiàn)一個(gè)按下開始計(jì)時(shí),抬起停止計(jì)時(shí)功能,所以計(jì)時(shí)功能需要在一個(gè)線程里去實(shí)現(xiàn),這里使用handler-message實(shí)現(xiàn),方法如下:

Java Code

class MyThread extends Thread

{

@Override

public void run()

{

// TODO Auto-generated method stub

super.run();

while(state)

{

try

{

Thread.sleep(1000);

}

catch (InterruptedException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

Message message = new Message();

message.what = 0x1234;

message.obj = count++;

handler.sendMessage(message);

//handler.sendEmptyMessage(0x1234);

}

}

}

線程里1秒count加一次,并將count數(shù)字傳到handler中,去更新textview內(nèi)容,此方法穩(wěn)定可行,系統(tǒng)資源占用少,用在其他項(xiàng)目中有不錯(cuò)的效果。

運(yùn)行結(jié)果:

按下時(shí)

抬起時(shí)

上一篇:Logo

下一篇:智能手環(huán)客戶端詳細(xì)設(shè)計(jì)

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部