Android自定义View画笔颜色改变问题(画笔颜色改变了,但是实际上ABCD这些字母的颜色没变) -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Android自定义View画笔颜色改变问题(画笔颜色改变了,但是实际上ABCD这些字母的颜色没变)

2016-03-10 13:31:58 3377 1
package com.eage.tbw.view;

import com.eage.tbw.R;
 import com.eage.tbw.R.color;

import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
 import android.widget.TextView;

/**
A-Z字母的View

lxm
 */
 public class LetterView extends View {
 private static final String[] LETTER=new String[]{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","#"};

private Paint paint;
 private int textSize;
 private int choice;

private TextView outerTV;

private LetterOnTouchCallBack letterOnTouchCallBack;

public void setTextView(TextView textView){
 outerTV=textView;

 }

public LetterView(Context context) {
 this(context, null);
 }

public LetterView(Context context, AttributeSet attrs) {
 this(context, attrs, 0);

}

public LetterView(Context context, AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
 TypedArray typedArray=context.getTheme().obtainStyledAttributes(attrs, R.styleable.LetterView, defStyleAttr, 0);
textSize=typedArray.getInt(R.styleable.LetterView_text, 27);

typedArray.recycle();
initView();


}

private void initView() {
 paint=new Paint();
paint.setTextSize(textSize);
paint.setColor(color.custom_yellow);
paint.setAntiAlias(true);

choice=-1;


}

@Override
 protected void onDraw(Canvas canvas) {
 super.onDraw(canvas);
int height=getHeight();
int width=getWidth();

int length=LETTER.length;
int itemHeigth=height/length;

for(int i=0;i<length;i++){
    if(i==choice-1){
        paint.setColor(color.custom_yellow);
        paint.setTextSize(32);
    }else{
        paint.setColor(color.custom_yellow);
        paint.setTextSize(textSize);

    }

    float y=(i+1)*itemHeigth; 
    float x=(width-paint.measureText(LETTER[i]))/2;
    canvas.drawText(LETTER[i], x, y, paint);
}


}

//重写触摸事件
 @Override
 public boolean dispatchTouchEvent(MotionEvent event) {
final LetterOnTouchCallBack callBack = letterOnTouchCallBack;

float  y=event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
    choice=-1;
    if(outerTV!=null){
        outerTV.setVisibility(View.GONE);
    }
    setBackgroundColor(Color.WHITE);
    invalidate();
    break;

default:
    int length=LETTER.length;
    int position= (int) (y/getHeight()*LETTER.length);
    setBackgroundColor(Color.parseColor("#E5E5E5"));
    if(1<=position&&position<=length){
        //将选中的字母传回到MainActivity中
        if(callBack!=null){
            callBack.onTouchingLetterChanged(LETTER[position-1]);
        }
        if(outerTV!=null){
            outerTV.setText(LETTER[position-1]);
            outerTV.setVisibility(View.VISIBLE);
        }
        choice=position;
        invalidate();
    }
    break;
}

return true;


}

// 设置监听
public void setOnLetterCallBack(LetterOnTouchCallBack letterOnTouchCallBack) {
    this.letterOnTouchCallBack = letterOnTouchCallBack;
}

//接口
public interface LetterOnTouchCallBack {

    public void onTouchingLetterChanged(String s);

}



}
取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:57:27

    你就设置过一次颜色,都是
    paint.setColor(color.custom_yellow);

    肯定都一样啊

    0 0
相关问答

19

回答

【分享】如何提高网站的打开速度?

enj0y 2012-11-17 14:35:22 57019浏览量 回答数 19

323

回答

云伴侣数据导入问题汇总(Android系统)

os_admin 2011-07-26 17:52:15 63139浏览量 回答数 323

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147296浏览量 回答数 22

43

回答

什么是云主机,云服务器与vps有什么区别?

zhuangdengyun 2011-11-01 04:21:50 49913浏览量 回答数 43

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146096浏览量 回答数 31

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 305736浏览量 回答数 249

13

回答

【云服务器分享】如何节省网站流量

dreamdoo 2012-10-15 10:36:09 80509浏览量 回答数 13

8

回答

mail.aliyun.com邮箱android手机客户端设置方法

jack_yang 2013-04-24 09:01:34 122616浏览量 回答数 8

46

回答

H5技术百问——不懂H5你就OUT啦

yq传送门 2017-09-09 11:03:04 47463浏览量 回答数 46

3

回答

Nginx—owncloud安装记事

寒喵 2014-06-07 23:24:41 48763浏览量 回答数 3
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载