1. 程式人生 > >學習Button按鈕控制元件(一)

學習Button按鈕控制元件(一)

Button控制元件的基本用法和TextView、EditText相似,最常用的是按鈕單擊事件。

實現功能:按鈕的焦點變化

效果展示:(動圖還蠻有趣的)


java程式碼:

package com.exale.hello;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
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;

public class MainActivity extends ActionBarActivity implements 
OnClickListener,OnTouchListener,OnFocusChangeListener,OnKeyListener{
private int value=1;//用於改變按鈕的大小
private Button commonButton;
private Button imageButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        commonButton = (Button)this.findViewById(R.id.commonbutton);
        imageButton = (Button)this.findViewById(R.id.imagebutton);
        commonButton.setOnClickListener(this);
        imageButton.setOnClickListener(this);
        imageButton.setOnTouchListener(this);
        imageButton.setOnFocusChangeListener(this);
        imageButton.setOnKeyListener(this);       
    }
    
    @Override
public void onClick(View v) {
// TODO Auto-generated method stub
    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));

}
    
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(KeyEvent.ACTION_DOWN==event.getAction())
{
v.setBackgroundResource(R.drawable.medimum);
}else if(KeyEvent.ACTION_UP == event.getAction())
{
v.setBackgroundResource(R.drawable.right);
}

return false;
}
    
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(hasFocus)
{
imageButton.setBackgroundResource(R.drawable.right);
}else
{
imageButton.setBackgroundResource(R.drawable.left);
}

}


@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_UP)
{
v.setBackgroundResource(R.drawable.left);
}else if(event.getAction()==MotionEvent.ACTION_DOWN)
{
v.setBackgroundResource(R.drawable.right);
}
return false;
}
}

XML中的Button設定:

<Button
    android:id="@+id/commonbutton"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="我的按鈕一" />


<Button
    android:id="@+id/imagebutton"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center"
    android:background="@drawable/left"
    android:text="按鈕" />

雖然很簡單,但還是學習到了一些方法的呼叫與實現和Button控制元件的使用。

相關推薦

學習Button按鈕控制元件

Button控制元件的基本用法和TextView、EditText相似,最常用的是按鈕單擊事件。 實現功能:按鈕的焦點變化 效果展示:(動圖還蠻有趣的) java程式碼: package com.exale.hello; import android.os.Bundle

Android自定義View--翻書控制元件

0.前言 最近重看了一遍封神演義,感覺QQ閱讀那個翻書的效果挺好的,準備做一個。上週五下午用了兩個小時只寫了一部分功能,以後有時間再完善 1.分析 先看效果圖 這個空間,說簡單也簡單,說難也難,簡單就在於這個效果主要就是依賴canvas的clippath才見到部分canvas,難就難在裁

WPF自定義控制元件控制元件分類

原文: WPF自定義控制元件(一)の控制元件分類 一、什麼是控制元件(Controls)         控制元件是指對資料和方法的封裝。控制元件可以有自己的屬性和方法,其中屬性是控制元件資料的簡單訪問者,方法則是控制元件的一些簡單而可見的功能、控制元件建

Python學習手冊之控制結構

布林比較布林Python 有許多種資料型別,其中一種型別叫布林,英文表示為 Boolean。它包含兩個值:True 和 False。有兩種方式可以宣告資料型別是布林型。一種是直接宣告,另外一種是通過值比較產生,比如等於運算子==。 >>> boolean = True >>

用WPF做報表控制元件

DataGrid是WPF自帶的報表控制元件,但其功能簡單,很多時候無法滿足我們的需求。第三方庫(如DevExpress)報表功能強大,但一方面資源消耗比較多,另一方面效能也較差,在一些比較差的電腦上執行很吃力。我之前就嘗試過在工控機上使用DevExpress,每次啟動都需要等幾秒甚至十幾秒半分鐘,體

熟悉一些Xamarin前端控制元件

C#使用Xamarin開發可移植移動應用目錄 原始碼地址:https://github.com/l2999019/DemoApp 可以Star一下,隨意 - - 說點什麼.. .NET core2.0 釋出了,刺激,大致看了一下,很不錯,打算後期學習.(不出意外,應該也會寫個小系列)

Flutter Widget之佈局類控制元件

前面的部落格中我們介紹了一些常用的Flutter控制元件例如 文字控制元件,按鈕控制元件,圖片控制元件等並且單獨的用了用、 但是,在開發過程中,我們的這些基本控制元件一般都是要放到佈局中按照一定的順序及距離進行排列以達到我們想要的效果。 類似於Android中的LinearLayout、

Android自定義控制元件 下拉重新整理,上拉分頁載入更多(支援ListView, GridView, ScrollView)

        首先說明,這幾篇文章是對一些前輩的成果進行學習後的心得總結。也借這種方式對他們表示謝意。         最近專案中好幾個模組都用到listview和gridview的下拉重新整理,上拉載入更多等功能,而且涉及到圖片的批量下載。水平有限,首先是想到找一些比較

小程式即時通訊聊天控制元件

小程式即時通訊(一)輸入元件及使用WebSocket通訊 最新更新日誌 2018-09-18 優化:現在app.js中的有關IM的所有業務統一交由app-im-delegate管理 優化:現在im-factory以單例模式提供唯一的IMHandler例項 IM

編寫Qt Designer自定義控制元件——如何建立並使用Qt自定義控制元件

    http://blog.csdn.net/giselite/article/details/12622429   在使用Qt Designer設計窗體介面時,我們可以使用Widget Box裡的窗體控制元件非常方便的繪製介面,比如拖進去一個按鈕,一個文字編輯器等。雖然Qt Designer裡的控制元

ListView點選事件失效item裡面有button按鈕控制元件解決方法

ListView點選事件失效解決方法: 一般出現這個情況,就是你的item裡面有按鈕的點選事件,你的item裡面有button控制元件,button控制元件是搶佔焦點的,只要在你的item佈局裡面這樣子寫就可以了: &l

Qt按鈕控制元件Button

Qt 有6種按鈕,它們的類名和說明如下:類名 說明 QPushButton 這是我們最常見的普通按鈕,滑鼠移入或點選時都會改變顏色。 QRadioButton 單選按鈕。一組名字相同的單選按鈕是互斥的

WPF 曲線圖表控制元件自制

原文: WPF 曲線圖表控制元件(自制)(一) 由於公司需要所以自寫了一個簡單的曲線圖表控制元件,在此分享。 先上一張效果圖 1.介面xaml X軸和Y軸用 2個line物件寫死在xaml上 外部用一個Grid包裹起來,然後X軸的寬度,和Y

Flutter學習:基礎元件

1.Text 用於顯示單個樣式的文字控制元件,字串可以顯示一行或者多行,具體取決於佈局約束。 text的屬性值: const Text(this.data, { Key key, this.style, this.textAlign, this.

WPF -- 自定義控制元件 概述

CustomControl, 其開發出來的控制元件才真正具有WPF風格,其對模板樣式有著很好的支援,這是因為打造CustomControl時做到了邏輯程式碼與外觀相分離,即使換上一套完全不同的視覺樹其同樣能很好的工作,就像WPF內建的控制元件一樣.在使用Visual Studio打造控制元件時,UserCon

QT的學習之路 1佈局控制元件Layout

一.佈局控件(Layout) 垂直佈局( vertically ),相關類: QVBoxLayout水平佈局( horizontally )相關類: QHBoxLayout網格佈局( grid)  

android學習筆記——GridView控制元件九宮格佈局

GridView跟ListView都是比較常用的多控制元件佈局,而GridView更是實現九宮圖的首選! 先來介紹一下要做的工作,有一個完整的思路 1.在activity_main.xml中加一個G

方便大家學習的Node.js教程:理解Node.js

圖形 -1 iter pri attribute set run 相對 mage 理解Node.js 為了理解Node.js是如何工作的,首先你需要理解一些使得Javascript適用於服務器端開發的關鍵特性。Javascript是一門簡單而又靈活的語言,這種靈

學習Opencv 2.4.9 ---Opencv + vs2012環境配置

-a class targe 貝爾 waitkey ron ini win font 作者:咕唧咕唧liukun321來自:http://blog.csdn.net/liukun321首先獲得最新的Opencv 2.4.9源代碼:opencv源代碼下載一、Opencv環

JavaSE 學習筆記之Java概述

environ 電子 6.0 run javase 有一點 架構 spa form 一、Java的三種技術架構: JAVAEE:Java Platform Enterprise Edition,開發企業環境下的應用程序,主要針對web程序開發; JAVASE:Java P