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(颜色);
}
}