文本按键

import android.graphics.*;

import android.view.*;

public class 文本按键 extends 对象{

public int 样式=0;//0为正常1为渐变

public Paint p=null;

public int 背景颜色=Color.rgb(0,0,0);

public int 按下颜色=Color.rgb(100,100,100);

public int 文字颜色=Color.rgb(255,255,255);

int 按下计时=0;

int 文字X=10,文字Y=30;

boolean 文字超限=false;

String 剪切文字="";

public Paint 边框=null;

public 文本按键(int x,int y,int 宽,int 高,String 文字){

super(x,y,宽,高);

this.名字=文字;

this.类名="文本按键";

p=new Paint();

p.setTextSize((int)(高/1.5));

this.类名="文本按键";

int w=(int)(文本处理.计算字符宽度(文字)*p.getTextSize());

if(w<宽){

if(w<宽)文字X=(宽-w)/2;

}else{

文字超限=true;

final int ww=(宽-20)/(int)p.getTextSize();

Thread t=new Thread(){

int i=0;

int w=ww;

String s=名字+"     ";

public void run(){

while(true){

try{

if(i>0)

剪切文字=s.substring(i,s.length())+s.substring(0,i);

if(i==s.length())i=0;

i++;

sleep(500);

}catch(Exception e){}

}

}

};

t.start();

}

文字Y=(int)p.getTextSize()+(高-(int)p.getTextSize())/3;

}

public 文本按键(int x,int y,int 高,String 文字){

this.x=x;

this.y=y;

this.高=高;

p=new Paint();

p.setTextSize((int)(高/1.5));

宽=(int)(文本处理.计算字符宽度(文字)*p.getTextSize())+20;

this.名字=文字;

this.类名="文本按键";

this.类名="文本按键";

文字Y=(int)p.getTextSize()+(高-(int)p.getTextSize())/3;

}

public void 行为(Canvas canvas){

canvas.drawRoundRect(new RectF(x,y,x+宽,y+高),10,10,设置背景颜色());

if(边框!=null)图形.画矩形(x,y,宽-1,高-1,canvas,边框);

p.setColor(文字颜色);

if(!文字超限)canvas.drawText(名字,x+文字X,y+文字Y,p);

else canvas.drawText(剪切文字,x+文字X,y+文字Y,p);

if(按下){

按下计时++;

if(按下计时==20){

长按事件(this);

按下计时=1000;

}

}

}

public void 行为(MotionEvent e){

if(e.getAction()==MotionEvent.ACTION_DOWN){

if(计算.如果在某个矩形范围(this,e)){

按下=true;

}

}

if(e.getAction()==MotionEvent.ACTION_MOVE){

if(按下){

按下=计算.如果在某个矩形范围(this,e);

if(!按下){

按下计时=0;

}

}

}

if(e.getAction()==MotionEvent.ACTION_UP){

if(按下){

if(按下计时<100){

if(父对象!=null){

if(父对象.类名.equals("对象容器")){

if(!父对象.移动)功能(e);

}else 功能(e);

}else{

功能(e);

}

}

}

按下计时=0;

按下=false;

}

}

public void 功能(MotionEvent e){}

public void 事件(MotionEvent e){

if(事件)行为(e);

}

public void 长按事件(对象 dx){}

public Paint 设置背景颜色(){

Paint p=new Paint();

if(!按下){

if(样式==0){

p.setColor(背景颜色);

}

if(样式==1){

int aa=Color.rgb(Color.red(背景颜色)-100,Color.green(背景颜色)-100,Color.blue(背景颜色)-100);

int b=背景颜色;

if(aa>b){

int z=aa;

aa=b;

b=z;

}

//Shader mShader= new LinearGradient((x+宽)/2,y,(x+宽)/2,y+高,new int[] {背景颜色,Color.rgb(Color.red(背景颜色)-100,Color.green(背景颜色)-100,Color.blue(背景颜色)-100),背景颜色},null,Shader.TileMode.REPEAT);

Shader mShader= new LinearGradient((x+宽)/2,y,(x+宽)/2,y+高,new int[] {aa,b,aa},null,Shader.TileMode.REPEAT);

p.setShader(mShader);

}

}

else{

p.setColor(按下颜色);

}

return p;

}

public void 设置边框(int 宽度,int 颜色){

边框=new Paint();

边框.setStyle(Paint.Style.STROKE);

边框.setTextSize(宽度);

边框.setColor(颜色);

}

}  

图片发自简书App
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容