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. C# html的Table导出到Excel中

    C#中导出Excel分为两大类.一类是Winform的,一类是Web.今天说的这一种是Web中的一种,把页面上的Table部分导出到Excel中. Table导出Excel,简单点说,分为以下几步: ...

  2. 手把手教你使用FineUI+动软代码生成器开发一个b/s结构的取送货管理信息系统(附源码)之开篇

    一 本系列随笔概览及产生的背景 近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座, ...

  3. mapbox 接入高德矢量地图实战

    Mapbox 作为现如今比较流行的地图框架为我们提供了漂亮的个性化地图,在平常的使用过程中可以方便的接入高德/谷歌等矢量切片地图.由于Mapbox地图数据来源于Open Street Map等国外厂商 ...

  4. Mysql_SQL_常用知识点&实践

    1.Mysql中类似于nvl()函数的ifnull()函数 ) FROM Table 2.添加某个字段(指定字段column的位置) ----------添加字段zoneId ) NOT NULL A ...

  5. Exception thrown in catch and finally clause

    Based on reading your answer and seeing how you likely came up with it, I believe you think an " ...

  6. python调用jieba(结巴)分词 加入自定义词典和去停用词功能

    把语料从数据库提取出来以后就要进行分词啦,我是在linux环境下做的,先把jieba安装好,然后找到内容是build jieba PKG-INFO setup.py test的那个文件夹(我这边是ji ...

  7. NeatBean下ssh 私钥格式问题

    1. SecureCRT 生成的private key 的格式是其私有的格式, 2. 标准格式为 openssl 格式

  8. 配置 FIS 来适配 go revel 框架以优化前端缓存策略

    对于前端工程师来说,浏览器缓存优化是个永远的话题.前几天看了知乎上的一个问答:<大公司里怎样开发和部署前端代码?>,深以为然,所以决心使用 FIS 来优化自身的前端文件. 我们的项目使用了 ...

  9. PS 不能使用移动工具 因为目标图层被隐藏怎么办

    photoshop任何图层都无法移动或者修改,提示目标通道被隐藏. 在ps任何图层都无法移动并且无法使用橡皮擦等修改工具,提示目标通道被隐藏.我看了下通道里面多了一个快速蒙版层(并且是被隐藏的),我打 ...

  10. WAMP集成开发环境

    集成开发环境WampServer能够摆脱环境配置的烦恼,对初学者来说,能够快速编写代码,现把安装过程介绍一下. W:Windows A:Apache M:MySql P:PHP 是一套整合在一起的PH ...