Android柳叶刀之Button之UI交互
傳送門???輪子的專欄???轉載請注明???http://blog.csdn.net/leverage_1229
柳葉刀
? ? ? ? 穆念慈眼見勢危,從腰間拔出柳葉刀,刷刷兩刀,向他迎頭砍去。?
? ? ? ? 完顏萍年紀甚輕,但刀法狠辣,手中柳葉刀鋒利異常,連砍數刀,已將板凳的四只凳腳砍去。?
? ? ? ? 陸無雙的銀弧彎刀失去以后:敵對的兩女一個手持柳葉刀,另一個兵刃似是一管洞蕭,兩人身形婀娜,步法迅捷,武功也自不弱,但和李莫愁相抗總是不及。……陸無雙伸手拔出柳葉刀,轉過身來,見說話的正是郭芙。
? ? ? ? 今天我們觀察Android平臺“柳葉刀”Button焦點的變化情況,在點擊、觸摸、鍵盤按鍵等事件觸發時,按鈕都會隨之發生焦點的改變。下面給出該情景的案例:
1案例技術要點
(1)為Button所在Activity實現OnClickListener、OnTouchListener、OnFocusChangeListener、OnKeyListener四類事件監聽。
(2)為Button(帶圖片)設置分別設置OnClickListener、OnTouchListener、OnFocusChangeListener、OnKeyListener四類事件監聽。
(3)android.view.View.OnClickListener:點擊事件監聽
(4)android.view.View.OnFocusChangeListener:焦點變化事件監聽
(5)android.view.View.OnKeyListener:鍵盤按鍵事件監聽
KeyEvent.ACTION_DOWN:按鍵按下時觸發該事件
KeyEvent.ACTION_UP:按鍵彈起時觸發該事件
(6)android.view.View.OnTouchListener:觸摸事件監聽?
MotionEvent.ACTION_DOWN:觸摸時觸發該事件
MotionEvent.ACTION_UP:觸摸離開時觸發該事件
2案例代碼陳列
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.android.button"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="15" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><activityandroid:name=".ButtonMainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>strings.xml
<resources><string name="app_name">Button的焦點變化</string><string name="button1">按鈕一</string><string name="button2">按鈕二</string> </resources>main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/common_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button1" /><Buttonandroid:id="@+id/image_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/button1"android:gravity="center"android:text="@string/button2" /></LinearLayout>ButtonMainActivity.java
package com.android.button;import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.View.OnKeyListener; import android.view.View.OnTouchListener; import android.widget.Button;/*** Button案例一:按鈕的焦點變化* @author lynnli1229*/ public class ButtonMainActivity extends Activity implements OnClickListener,OnTouchListener, OnFocusChangeListener, OnKeyListener {//用于改變按鈕的大小private int value = 1;private Button commonButton;private Button imageButton;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);commonButton = (Button) findViewById(R.id.common_button);imageButton = (Button) findViewById(R.id.image_button);commonButton.setOnClickListener(this);imageButton.setOnClickListener(this);imageButton.setOnTouchListener(this);imageButton.setOnFocusChangeListener(this);imageButton.setOnKeyListener(this);}//當按鈕被按下或松開時回調該方法@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {if(KeyEvent.ACTION_DOWN == event.getAction()) {v.setBackgroundResource(R.drawable.button3);} else if(KeyEvent.ACTION_UP == event.getAction()) {v.setBackgroundResource(R.drawable.button2);}return false;}//當按鈕焦點發生改變時回調該方法@Overridepublic void onFocusChange(View v, boolean hasFocus) {if(hasFocus) {imageButton.setBackgroundResource(R.drawable.button2);} else {imageButton.setBackgroundResource(R.drawable.button1);}}//當按鈕被觸摸時回調該方法@Overridepublic boolean onTouch(View v, MotionEvent event) {if(event.getAction() == MotionEvent.ACTION_UP) {v.setBackgroundResource(R.drawable.button1);} else if(event.getAction() == MotionEvent.ACTION_DOWN) {v.setBackgroundResource(R.drawable.button2);}return false;}//當按鈕被點擊時回調該方法@Overridepublic void onClick(View v) {Button button = (Button) v;if (value == 1 && button.getWidth() == getWindowManager().getDefaultDisplay().getWidth()) {value = -1;} else if (value == -1 && button.getWidth() < 100) {value = 1;}button.setWidth(button.getWidth() + (int) (button.getWidth() * 0.1) * value);button.setHeight(button.getHeight() + (int) (button.getHeight() * 0.1) * value);}}? ? ? ? 友情提示:提供三張展示按鈕焦點變化的圖片存放于drawable-hdpi文件夾下。
3案例效果展示
?轉載于:https://www.cnblogs.com/innosight/archive/2013/05/28/3271237.html
總結
以上是生活随笔為你收集整理的Android柳叶刀之Button之UI交互的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重构机房VB.NET机房收费系统个人重构
- 下一篇: 阿里要未来,百度要利益?