博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
控件事件android中自定义控件
阅读量:5327 次
发布时间:2019-06-14

本文共 3113 字,大约阅读时间需要 10 分钟。

题记:写这篇博客要主是加深自己对控件事件的认识和总结现实算法时的一些验经和训教,如果有错误请指出,万分感谢。

    在android中可以利用android自身所带的控件按照自己的愿意停止组合、修改,到达意满果效。

    这个例子是个单简的自义定控件的例子,只是承继android自身的Button控件,定绑监听器并在得获核心时在外围用画笔画出外框。若想在Button中添加其他事件或添加其他果效,也可以此类推。

    首先是Mainactivity.java:

package com.example.mybutton;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity {	public MyButton mybutton;		@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);			mybutton = (MyButton)findViewById(R.id.mybutton);	}}

    在Mainactivity中只是单简的义定了一个自义定的MyButton控件。

    承继Button的MyButton:

package com.example.mybutton;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MyButton extends Button implements OnClickListener{	Paint paint;	boolean paintflag;	public MyButton(Context context, AttributeSet attrs) {		super(context, attrs);		// TODO Auto-generated constructor stub		paint = new Paint();		paint.setStyle(Style.STROKE);		paint.setStrokeWidth(2);        getPaint().setColor(110);			//用采rgb式形的整数置设颜色		setOnClickListener(this);			//定绑监听器事件				paintflag = false;	}		@Override	public void onClick(View v) {		// TODO Auto-generated method stub//		paintflag = true;//		invalidate();			//刷新绘画		System.out.println("===============click");			}	@Override	public boolean onTouchEvent(MotionEvent event) {		//触摸事件		// TODO Auto-generated method stub		System.out.println("===============touch");        switch (event.getAction()) {        case MotionEvent.ACTION_UP:            paintflag = false;            invalidate();            break;        case MotionEvent.ACTION_DOWN:        	paintflag = true;        case MotionEvent.ACTION_CANCEL:            invalidate();            break;    }		return super.onTouchEvent(event);	}		@Override	protected void onDraw(Canvas canvas) {		// TODO Auto-generated method stub		super.onDraw(canvas);				if(paintflag){			drawfocus(canvas);		}		else{			drawnofocus(canvas);		}	}		private void drawnofocus(Canvas canvas){		paint.setColor(0);		canvas.drawRect(1, 1, getWidth() - 1, getHeight() - 1, paint);	}		private void drawfocus(Canvas canvas){		int alpha = 255;		int color = 255 | (alpha << 24);	//此处色采值为FF0000FF,前俩表现透明度(0为透明,FF为不透明),前面的表现RGB颜色		paint.setColor(color);		canvas.drawRect(1, 1, getWidth() - 1, getHeight() - 1, paint);	}}
    每日一道理
曾经辉煌过,曾经凋零过,这可是你至死不渝的生活吗?我亲爱的母亲—大自然。多少次,我伏在地上,去聆听你沉重的脉搏声;多少次,我伫立在山前,去感受那松涛千年的浩瀚。你的豪壮,足以让中华民族腾飞;你的无私,谱写了一曲曲感人至深的千古壮曲。

    在这里只现实了俩功能:定绑Button的监听器和在onTouchEvent事件中利用画笔画出外框或擦去外框。

    最后是布局文件:

    在布局文件中可以应用自义定的MyButton控件。这里是包名com.example.mybutton和类名(即自义定的控件名)组合而成。

    

 

文章结束给大家分享下程序员的一些笑话语录: IBM和波音777

  波音777是有史以来第一架完全在电脑虚拟现实中设计制造的飞机,所用的设备完全由IBM公司所提供。试飞前,波音公司的总裁非常热情的邀请IBM的技术主管去参加试飞,可那位主管却说道:“啊,非常荣幸,可惜那天是我妻子的生日,So..”..
  波音公司的总载一听就生气了:“胆小鬼,我还没告诉你试飞的日期呢!”

转载于:https://www.cnblogs.com/jiangu66/archive/2013/04/28/3049896.html

你可能感兴趣的文章
个人作业
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
delphi 内嵌汇编例子
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
对闭包的理解
查看>>