转了按钮UI的文章,嗯,一直不注意UI的。

例子效果图

实现步骤

第一步:建Android 工程:ImageButtonDemo

第二步:编写Activity 的子类别:ImageButtonDemo,其程序代码如下:

package com.a3gs.imagebutton;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageButton;

import android.widget.TextView;

public class ImageButtonDemo extends Activity {

private TextView mTV;

private ImageButton imgBtn;

private Button btn;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mTV = (TextView) findViewById(R.id.tv);

imgBtn= (ImageButton) findViewById(R.id.imgBtn);

btn = (Button) findViewById(R.id.Btn);

// ImageButton的的onFous事件

imgBtn.setOnFocusChangeListener(new ImageButton.OnFocusChangeListener(){

@Override

public void onFocusChange(View v, boolean hasFocus) {

// TODO Auto-generated method stub

if(hasFocus == true) {

imgBtn.setImageResource(R.drawable.full);

mTV.setText("图片按钮状态为:获得焦点");

}else{

imgBtn.setImageResource(R.drawable.empty);

mTV.setText("图片按钮状态为:失去焦点");

}

}

});

// ImageButton的单击事件

imgBtn.setOnClickListener(new ImageButton.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

imgBtn.setImageResource(R.drawable.full);

mTV.setText("图片按钮状态为:单击");

}

});

// 普通按钮的单击事件

btn.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

imgBtn.setImageResource(R.drawable.empty);

mTV.setText("您按的是普通按钮!");

}

});

}

}

第三步:修改res/layout/main.xml,其代码如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:id="@+id/tv"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

<ImageButton

android:id="@+id/imgBtn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/empty"

/>

<Button

android:id="@+id/Btn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Button按钮"

/>

</LinearLayout>

扩展学习

除了在运行时用 onFocus() onClick() 事件来设置按钮背景图片外,Android MVC 设计理念,可以让程序运行之初就以xml 定义的方式来初始化ImageButton 的背景图,仅需先将图片导入res/drawable

设置方法为在 res/drawable 下自行定义一个xml,主要针对按钮的state_focusedstate_pressed drawable 属性作设置,如下所示:

drawable/imagebutton.xml

<?xml version="1.0" encoding="utf-8"?>

<selector

xmlns:android="http://schemas.android.com/apk/res/android">

<item

android:state_focused="true"

android:state_pressed="false"

android:drawable="@drawable/btnfocused" />

<item

android:state_focused="true"

android:state_pressed="true"

android:drawable="@drawable/btnfocusedpressed" />

<item

android:state_focused="false"

android:state_pressed="true"

android:drawable="@drawable/btnpressed" />

<item android:drawable="@drawable/btndefault" />

</selector>

然后,在main.xml 中将advancedbutton 赋值给Button 组件中background 的属性。

layout/main.xml

<Button

android:id="@+id/myButton1"

android:background="@drawable/ imagebutton "

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/str_button1"

/>

如此一来,即可达到如同本范例程序所展示的效果。有兴趣的朋友可以自己试一下!

更多相关文章

  1. Android(安卓)编程下 Touch 事件的分发和消费机制
  2. Android(安卓)中文 API (30) ―― CompoundButton.OnCheckedChange
  3. Android(安卓)ActionBar中的按钮添加旋转动画
  4. android中的Touch研究
  5. android 开发笔记
  6. 【Android】对话框 AlertDialog
  7. Android重写OnTouchListener实现双击事件的监听
  8. Android实现TextView部分文本监听单击事件
  9. Android实现微信右上角弹出的菜单

随机推荐

  1. Android上的一些小技巧
  2. Android监测前后台切换
  3. Android中对XML文件的解析
  4. Android之放大镜实现的两种方式
  5. Android 自定义Button形状
  6. Android Jenkins中配置gradle项目遇到的
  7. Android自定义底部显示对话框
  8. Android Jetpack组件学习 Room
  9. android实现拖动效果
  10. android跳转到另一个类再返回当前类和值