snifer

【原创】基于Android的具有背景图的图片按钮的创建方法

0
阅读(3556)

感觉在Android的路上越走路越长,一路上充满乐趣,今天实现了一个小技术,不敢独自开心,与大家一起分享。

核心思想就是ImageButton 的焦点及事件处理。

下面我还是老方法,按步骤介绍吧。

① 新建工程
② 准备png 图片资源clickimage.png、lostfocusimage.png、onfocusimage.png

③ 在string.xml 中添加字符串
④ 修改main.xml 布局,添加布局元素
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">EX_Ctrl_2</string>
<string name="unknown">图片按钮状态:未知</string>
<string name="onfocus">图片按钮状态:Got Focus</string>
<string name="lostfocus">图片按钮状态:Lost Focus</string>
<string name="onclick">图片按钮状态:Got Click</string>
<string name="normalbutton">一般按钮</string>
</resources>
<?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"
android:background="#EE559611">
<TextView
android:id="@+id/show_TextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/unknown"
/>
<ImageButton
android:id="@+id/image_Button"
⑤ 修改mainActivity.java
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/normal_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/normalbutton"
/>
</LinearLayout>
package zyf.EX_Ctrl_2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
public class EX_Ctrl_2 extends Activity {
/** Called when the activity is first created. */
/* 声明三个对象变量(图片按钮,按钮,与TextView) */
private ImageButton mImageButton1;
private Button mButton1;
private TextView mTextView1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* 通过findViewById 构造三个对象*/
mImageButton1 = (ImageButton) findViewById(R.id.image_Button );
mButton1 = (Button) findViewById(R.id.normal_Button );
mTextView1 = (TextView) findViewById(R.id.show_TextView);
/* 通过OnFocusChangeListener 来响应ImageButton 的onFous 事件*/
mImageButton1.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View arg0, boolean isFocused) {
// TODO Auto-generated method stub
/*若ImageButton 状态为onFocus 改变ImageButton 的图片
并改变textView 的文字*/
if (isFocused == true) {
mTextView1.setText(R.string.onfocus);
mImageButton1.setImageResource(R.drawable.onfocusimage);

} /*若
ImageButton 状


offFocus 改

ImageButton 的


并改变textView 的文字*/
else {
mTextView1.setText(R.string.lostfocus );
mImageButton1.setImageResource(R.drawable.lostfocusimage);
}
}
});
/* 通过onClickListener 来响应ImageButton 的onClick 事件*/
mImageButton1.setOnClickListener(new OnClickListener() {
public void onClick(View v){
// TODO Auto-generated method stub
/*若ImageButton 状态为onClick 改变ImageButton 的图片
并改变textView 的文字*/
mTextView1.setText(R.string.onclick);
mImageButton1.setImageResource(R.drawable.clickimage);
}
});
/*通过onClickListener 来响应Button 的onClick 事件*/
mButton1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*若Button 状态为onClick 改变ImageButton 的图片
* 并改变textView 的文字*/
mTextView1.setText(R.string.lostfocus);
mImageButton1.setImageResource(R.drawable.lostfocusimage);
}
});
}
}
⑥ 结果

实现了感觉很有感觉,大家拍砖啊!