美文网首页
文本按键

文本按键

作者: 一个爱上浪漫的人 | 来源:发表于2017-03-27 11:14 被阅读0次

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

    }

    }  

    文本按键

    相关文章

      网友评论

          本文标题:文本按键

          本文链接:https://www.haomeiwen.com/subject/ujzlottx.html