Button控件的基本用法和TextView、EditText相似,最常用的是按钮单击事件。

案例一:按钮的焦点变化

1. 主要代码

 ......        private int value = 1; // 用于改变按钮的大小 ......        commonButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                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.getWidth() * 0.1) * value);            }        });        imageButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub            }        });        /*         * 表示当前触摸屏触摸的时候会回调该方法 MotionEvent表示移动的动作,有触摸笔,手势,滚动球等         * getAction():表示计算按下点与滑动后的点的之间的距离         */        imageButton.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if (event.getAction() == MotionEvent.ACTION_UP) {                    v.setBackgroundResource(R.drawable.button1);                } else if (event.getAction() == MotionEvent.ACTION_DOWN) {                    v.setBackgroundResource(R.drawable.button2);                }                return false;            }        });        // 表示当前这个控件的焦点发生变化的时候就触发它。        imageButton.setOnFocusChangeListener(new View.OnFocusChangeListener() {            @Override            public void onFocusChange(View v, boolean hasFocus) {                if (hasFocus) {                    imageButton.setBackgroundResource(R.drawable.button2);                } else {                    imageButton.setBackgroundResource(R.drawable.button1);                }                // TODO Auto-generated method stub            }        });        imageButton.setOnKeyListener(new View.OnKeyListener() {            @Override            public boolean onKey(View v, int keyCode, KeyEvent event) {                /*                 * KeyEvent表示按下的动作,getAction()表示获取用户的动作方法 查看android api 文档                 * ACTION_UP 于 ACTION_DOWN 表示上下键                 */                // TODO Auto-generated method stub                if (KeyEvent.ACTION_DOWN == event.getAction()) {                    v.setBackgroundResource(R.drawable.button3);                } else if (KeyEvent.ACTION_UP == event.getAction()) {                    v.setBackgroundResource(R.drawable.button2);                }                return false;            }        });

2. Demo执行结果


案例二:图文混排的按钮

1. 主要代码

        SpannableString spannableStringLeft = new SpannableString("Left");        Bitmap bitmapLeft = BitmapFactory.decodeResource(getResources(), R.drawable.image_left);        ImageSpan imageSpanLeft = new ImageSpan(bitmapLeft, DynamicDrawableSpan.ALIGN_BOTTOM);        //指定当前这个位图位于按钮的低端        //0-4 表示把图片放在从0到4这些字符上面。        spannableStringLeft.setSpan(imageSpanLeft, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);                SpannableString spannableStringRight = new SpannableString("Right");        Bitmap bitmapRight = BitmapFactory.decodeResource(getResources(), R.drawable.image_right);        ImageSpan imageSpanRight = new ImageSpan(bitmapRight);                spannableStringRight.setSpan(imageSpanRight, 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        button.append(spannableStringLeft);        button.append("我的按钮");        button.append(spannableStringRight);

    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="120dp"        android:orientation="horizontal" >        <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:drawableTop="@drawable/star"            android:text="按钮一" />        <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:drawablePadding="30dp"            android:drawableTop="@drawable/star"            android:text="按钮二" />        <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:drawableLeft="@drawable/star"            android:text="按钮三" />        <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:drawablePadding="30dp"            android:drawableRight="@drawable/star"            android:text="按钮四" />    </LinearLayout>    <Button        android:id="@+id/button"        android:layout_width="200dp"        android:layout_height="200dp"        android:layout_marginTop="10dp"/>

2. Demo效果









更多相关文章

  1. Android(安卓)播放 Gif 图片控件
  2. 自定义控件--带动画的CheckBox
  3. Android(安卓)常用控件自定义样式RadioButton、CheckBox、Progre
  4. Android(安卓)View 拖动&插入
  5. ScrollView只能有一个子控件
  6. Android(安卓)CoordinatorLayout 实战案例学习《二》
  7. android 布局之RelativeLayout(相对布局)
  8. android自定义title的方法
  9. android 设置控件的字体

随机推荐

  1. iOS开发周报:Swift 项目合并 Android(安卓
  2. Own your Android! Yet Another Universa
  3. 杂谈Android线程优先级
  4. 从0系统学Android--5.1 广播机制
  5. Android(安卓)开发热门资料免费下载 110
  6. [置顶] Android学习路线指南
  7. Android调用WebService系列之封装能力
  8. android优化 清除无效代码 UCDetector
  9. android中图片的三级cache策略(内存、文件
  10. 浅析Android防止内存溢出问题