1.首先是范例代码,一个基本的ImageButton响应。

 package com.example.arlxsdemo;

 import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton; public class abc extends ActionBarActivity{
private ImageButton Btn_collect;//声明
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Btn_collect=(ImageButton)findViewById(R.id.collect);//与布局文件的ImageButton绑定 Btn_collect.setOnClickListener(Btn_collectOnClick);//监听点击事件
Btn_collect.setOnTouchListener(Btn_collectOnTouch);//监听触摸事件 }
/**
* 点击响应
*/
private ImageButton.OnClickListener Btn_collectOnClick=new ImageButton.OnClickListener(){
public void onClick(View v){ }
};
/**
* 触摸响应
*/
private ImageButton.OnTouchListener Btn_collectOnTouch=new ImageButton.OnTouchListener(){
public boolean onTouch(View v,MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_UP){ }
if(event.getAction() == MotionEvent.ACTION_DOWN){ }
return true;
}
};
}

基本响应范例

2.如果ImageButton如下图所示是不规则按钮,我们希望当点击到四个边角处的透明区域不响应时可以使用触摸事件监听。

修改如下。

 private ImageButton.OnTouchListener Btn_collectOnTouch=new ImageButton.OnTouchListener(){
public boolean onTouch(View v,MotionEvent event){
/**
* 判断点击区域是否为透明区域,如果是,则不进行响应
*/
Bitmap bitmap = ((BitmapDrawable)Btn_collect.getDrawable()).getBitmap();
if(bitmap.getPixel((int)(event.getX()),((int)event.getY()))==0)
return true; if(event.getAction() == MotionEvent.ACTION_UP){//抬起 }
if(event.getAction() == MotionEvent.ACTION_DOWN){//按下图片 }
return true;
}
};

不规则按钮忽略透明区域

3.更换ImageButton的图片。

Btn_collect.setImageDrawable(getResources().getDrawable(R.drawable.img2));  

4.src中动态改变控件的大小。由于动态转换安卓默认用的单位为px,而控件一般用的是dp,所以需要创建dp和px的转换类。

 public class NumberChange {
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素) ,dp=dip
*/
public static int diptopx(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
} /**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int pxtodip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}

然后来写控制控件大小的方法,注意这里的控件的父布局是什么就将RelativeLayout置换为相应的布局。

  public void SetControlSize(View v,int width,int height)
{
RelativeLayout.LayoutParams LayoutParams =(RelativeLayout.LayoutParams) v.getLayoutParams(); //取控件View当前的布局参数
LayoutParams.height =NumberChange.diptopx(context,height);// 控件的高强制设成xxxdp
LayoutParams.width = NumberChange.diptopx(context,width);// 控件的高强制设成xxxdp
v.setLayoutParams(LayoutParams); //使设置好的布局参数应用到控件
}

Android ImageButton的使用。的更多相关文章

  1. Android ImageButton Example 图片按钮

    Android ImageButton Example 图片按钮 使用“android.widget.ImageButton” 展现一个具有背景图片的按钮 本教程将展现一个具有名字为 c.png背景图 ...

  2. Android ImageButton图像灰色边框

    灰色边框,是imageButton空间自带的. 第一种解决方案: android:scaleType="fitXY"//这个代码是:拉伸图片(不按比例)以填充的长宽.所以图像最后最 ...

  3. android imageButton 点击按钮前中后,按钮颜色的变化

    我们在开发的过程中,往往为了美化界面的需要,会修改按钮的默认外观,而因为Android中的按钮有三种状态—默认,被点击,被选中.所以,如果要改变按钮的外观,需要对这三种情况都做出修改,也许在以往,我们 ...

  4. Android ImageButton | Button | TextView 点击和触摸效果

    ImageButton------------------------------------------------> 一.Java  代码: 在drawable目录下添加新的xml文件 bu ...

  5. android imageButton 透明图片

    在Android有许多不规则button.例如: 这个时候,我们假设想做成不规则button的话.第一步就是搞一张边缘透明的png图片,然后用src指定到他.这个时候我们会发现,还没有达到要的效果.还 ...

  6. Android ImageButton单击切换按钮图片效果

    正常状态的效果: 按钮按下的效果图片: 一.在java中为图片按钮增加触摸监听的函数来实现图片切换,代码如下: ImageButton btn = (ImageButton)findViewById( ...

  7. Android ImageButton android:scaleType

    ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType). android:scaleType是控制图片如 ...

  8. Android ImageButton的背景(图片)大小

    使用ImageButton的background属性,而不用src属性. 然后使用width和height进行调整.

  9. 收藏的技术文章链接(ubuntu,python,android等)

    我的收藏 他山之石,可以攻玉 转载请注明出处:https://ahangchen.gitbooks.io/windy-afternoon/content/ 开发过程中收藏在Chrome书签栏里的技术文 ...

随机推荐

  1. easyui text-box multiline

    //多行文本输入框 <input id="payDescribe" class="easyui-textbox" data-options="m ...

  2. Ubuntu14.04进行配置符号链接arm-2009q3.tar.bz2

    进入系统终端:cd /usr/local/ 创建文件夹arm:并进去arm,将winshare共享文件夹里面的文件/arm-2009q3复制到arm文件夹中; tar -jxvf  arm-2009q ...

  3. .net开发常用的第三方开发组件

    转自:http://www.cnblogs.com/damsoft/p/6100323.html .net开发常用的第三方组件: 1.RSS.NET.dll: RSS.NET是一款操作RSS feed ...

  4. ISP基础一

    1.专业术语 [ColorTemp] 色温 所谓色温,简而言之,就是定量地以开尔文温度(K)来表示色彩.英国著名物理学家开尔文认为,假定某一黑体物质,能够将落在其上的所有热量吸收,而没有损失,同时又能 ...

  5. ElasticSearch 安装中文分词器

    1.安装中文分词器IK 下载地址:https://github.com/medcl/elasticsearch-analysis-ik 在线下载安装: elasticsearch-plugin.bat ...

  6. 转: Java 应用一般架构

    http://mp.weixin.qq.com/s?__biz=MzAwMzI3Njc1MA==&mid=2650192186&idx=1&sn=bd08fd3a89f9089 ...

  7. Microsoft Sync Framework 2.1 可再发行程序包 Microsoft Sync Framework 1.0 SP1 - 中文(简体)

    Sync Framework 2.1 引入了新功能,这些功能支持您计算机上的 SQL Server 或 SQL Server Compact 数据库与 SQL Azure 数据库进行同步.此发行版还引 ...

  8. Weblogic OutOfMemory exception的误解 -- thread limitation

    不是全部的OutofMemory exception都是内存问题... 前几天有个客户的site报了下面错误: [ERROR][thread ] Could not start thread Time ...

  9. iptables firewall-cmd

    iptables -F iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A IN ...

  10. vscode - 安装离线插件

    打开网站(示例): https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow 下载扩展 vscode 安装离 ...