自定义Button
来源:互联网 发布:人人视频 mac客户端 编辑:程序博客网 时间:2024/04/30 00:19
//实现效果
//Main
package com.bw.viewbutton;import android.os.Bundle;import android.app.Activity;public class MainActivity extends Activity {private MyButton bt;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bt = (MyButton) findViewById(R.id.button);bt.setBackgroundDrawableResource(R.drawable.switch_background);bt.setForegroundDrawableResource(R.drawable.slide_button_background);bt.setCheckdsate(true);}}
//自定义view
package com.bw.viewbutton;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;public class MyButton extends View {private boolean state = false;private Bitmap backResource;private Bitmap foreResource;private int eventx;private boolean isstate;public MyButton(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public MyButton(Context context, AttributeSet attrs) {super(context, attrs);}public MyButton(Context context) {super(context);}public void setBackgroundDrawableResource(int switchBackground) {backResource = BitmapFactory.decodeResource(getResources(),switchBackground);}public void setForegroundDrawableResource(int slideButtonBackground) {foreResource = BitmapFactory.decodeResource(getResources(),slideButtonBackground);}public void setCheckdsate(boolean b) {this.state = b;}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubsuper.onMeasure(widthMeasureSpec, heightMeasureSpec);setMeasuredDimension(backResource.getWidth(), backResource.getHeight());}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawBitmap(backResource, 0, 0, null);if (isstate) {int left = eventx - foreResource.getWidth() / 2;if (left < 0) {left = 0;} else if (left > backResource.getWidth() - foreResource.getWidth()) {left = backResource.getWidth() - foreResource.getWidth();}canvas.drawBitmap(foreResource, left, 0, null);} else {if (state) {canvas.drawBitmap(foreResource, backResource.getWidth() - foreResource.getWidth(), 0, null);} else {canvas.drawBitmap(foreResource, 0, 0, null);}}}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubswitch (event.getAction()) {case MotionEvent.ACTION_DOWN:isstate = true;eventx = (int) event.getX();break;case MotionEvent.ACTION_MOVE:eventx = (int) event.getX();break;case MotionEvent.ACTION_UP:isstate = false;eventx = (int) event.getX();state = eventx > backResource.getWidth()/2;break;default:break;}invalidate();return true;}}
0 0
- 自定义button
- 自定义BUTTON!
- 自定义button
- 自定义Button
- 自定义button
- 自定义button
- 自定义Button
- 自定义Button
- 自定义Button
- 自定义button
- 自定义checkbox,自定义button
- Button控件+自定义Button控件
- button自定义事件
- 自定义外观的Button
- 自定义的button
- Android自定义Button组件
- 自定义Button样式
- 自定义Button组件
- 云计算:openstack neutron(tap、qvb、qvo、qbr详解)
- LA 2038 Strategic game(二分图最小顶点覆盖 /树形DP)
- JAVA 异常
- 循序渐进学用MAT排查Android Activity内存泄露
- Java中wait()和sleep()的区别
- 自定义Button
- redis cluster 集群 安装 配置 详解
- 使用select函数循环读取键盘输入
- JAVA 集合
- 解决docker中/etc/default/docker配置DOCKER_OPTS 失效问题
- 硬币趣味题
- 第二周项目1--C/C++语言中函数参数传递的三种方式
- Leetcode3:Longest Substring Without Repeating Characters
- 模拟消息队列