package com.example.customview01.view; import com.example.customview01.R; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.support.v4.graphics.drawable.DrawableCompat; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; public class DigitalView extends LinearLayout { private ImageView imageView1, imageView2, imageView3, imageView4, imageView5, imageView6, imageView7; private int[] images = { R.drawable.zero217x324, R.drawable.one217x324, R.drawable.two217x324, R.drawable.three217x324, R.drawable.four217x324, R.drawable.five217x324, R.drawable.six217x324, R.drawable.seven217x324, R.drawable.eight217x324, R.drawable.nine217x324, R.drawable.blank217x324, R.drawable.minus217x324 }; private int six, five, four, three, two, one, numbers, textColor; private Drawable icon0, icon1, icon2, icon3, icon4, icon5, icon6, icon7, icon8, icon9, icon11; public DigitalView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public DigitalView(Context context) { this(context, null); } public DigitalView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.digitalView, defStyleAttr, 0); int n = a.getIndexCount(); for (int i = 0; i < n; i++) { int attr = a.getIndex(i); switch (attr) { case R.styleable.digitalView_textNumbers: numbers = a.getInt(attr, 1); break; case R.styleable.digitalView_textColor: textColor = a.getColor(attr, Color.BLACK); default: break; } } initView(context); } public void initView(Context context) { View view = View.inflate(getContext(), R.layout.digitalview, null); view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); addView(view); imageView1 = (ImageView) findViewById(R.id.imageView1); imageView2 = (ImageView) findViewById(R.id.imageView2); imageView3 = (ImageView) findViewById(R.id.imageView3); imageView4 = (ImageView) findViewById(R.id.imageView4); imageView5 = (ImageView) findViewById(R.id.imageView5); imageView6 = (ImageView) findViewById(R.id.imageView6); imageView7 = (ImageView) findViewById(R.id.imageView7); icon0 = context.getResources().getDrawable(images[0]); icon1 = context.getResources().getDrawable(images[1]); icon2 = context.getResources().getDrawable(images[2]); icon3 = context.getResources().getDrawable(images[3]); icon4 = context.getResources().getDrawable(images[4]); icon5 = context.getResources().getDrawable(images[5]); icon6 = context.getResources().getDrawable(images[6]); icon7 = context.getResources().getDrawable(images[7]); icon8 = context.getResources().getDrawable(images[8]); icon9 = context.getResources().getDrawable(images[9]); icon11 = context.getResources().getDrawable(images[11]); setNumbers(numbers); setColor(textColor); } /** * <br/> * ��������ɫ <br/> * * @param color */ public void setColor(int color) { icon0 = tintDrawable(icon0, ColorStateList.valueOf(color)); icon1 = tintDrawable(icon1, ColorStateList.valueOf(color)); icon2 = tintDrawable(icon2, ColorStateList.valueOf(color)); icon3 = tintDrawable(icon3, ColorStateList.valueOf(color)); icon4 = tintDrawable(icon4, ColorStateList.valueOf(color)); icon5 = tintDrawable(icon5, ColorStateList.valueOf(color)); icon6 = tintDrawable(icon6, ColorStateList.valueOf(color)); icon7 = tintDrawable(icon7, ColorStateList.valueOf(color)); icon8 = tintDrawable(icon8, ColorStateList.valueOf(color)); icon9 = tintDrawable(icon9, ColorStateList.valueOf(color)); icon11 = tintDrawable(icon11, ColorStateList.valueOf(color)); } /** * <br/> * ����������λ�� <br/> */ public void setNumbers(int numbers) { this.numbers = numbers; switch (numbers) { case 1: imageView1.setVisibility(View.VISIBLE); imageView2.setVisibility(View.GONE); imageView3.setVisibility(View.GONE); imageView4.setVisibility(View.GONE); imageView5.setVisibility(View.GONE); imageView6.setVisibility(View.GONE); break; case 2: imageView1.setVisibility(View.VISIBLE); imageView2.setVisibility(View.VISIBLE); imageView3.setVisibility(View.GONE); imageView4.setVisibility(View.GONE); imageView5.setVisibility(View.GONE); imageView6.setVisibility(View.GONE); break; case 3: imageView1.setVisibility(View.VISIBLE); imageView2.setVisibility(View.VISIBLE); imageView3.setVisibility(View.VISIBLE); imageView4.setVisibility(View.GONE); imageView5.setVisibility(View.GONE); imageView6.setVisibility(View.GONE); break; case 4: imageView1.setVisibility(View.VISIBLE); imageView2.setVisibility(View.VISIBLE); imageView3.setVisibility(View.VISIBLE); imageView4.setVisibility(View.VISIBLE); imageView5.setVisibility(View.GONE); imageView6.setVisibility(View.GONE); break; case 5: imageView1.setVisibility(View.VISIBLE); imageView2.setVisibility(View.VISIBLE); imageView3.setVisibility(View.VISIBLE); imageView4.setVisibility(View.VISIBLE); imageView5.setVisibility(View.VISIBLE); imageView6.setVisibility(View.GONE); break; case 6: imageView1.setVisibility(View.VISIBLE); imageView2.setVisibility(View.VISIBLE); imageView3.setVisibility(View.VISIBLE); imageView4.setVisibility(View.VISIBLE); imageView5.setVisibility(View.VISIBLE); imageView6.setVisibility(View.VISIBLE); break; default: break; } } /** * <br/> * ������������ֵ <br/> */ public void setValue(int value) { if (value < 0) { imageView7.setVisibility(View.VISIBLE); value = -value; } else { imageView7.setVisibility(View.GONE); } six = value % 1000000 / 100000; five = value % 100000 / 10000; four = value % 10000 / 1000; three = value % 1000 / 100; two = value % 100 / 10; one = value % 10; imageView1.setImageResource(images[one]); imageView2.setImageResource(images[two]); imageView3.setImageResource(images[three]); imageView4.setImageResource(images[four]); imageView5.setImageResource(images[five]); imageView6.setImageResource(images[six]); if (six == 0) { imageView6.setImageResource(images[10]); if (five == 0) { imageView5.setImageResource(images[10]); if (four == 0) { imageView4.setImageResource(images[10]); if (three == 0) { imageView3.setImageResource(images[10]); if (two == 0) { imageView2.setImageResource(images[10]); } } } } } imageView1.invalidate(); imageView2.invalidate(); imageView3.invalidate(); imageView4.invalidate(); imageView5.invalidate(); imageView6.invalidate(); imageView7.invalidate(); } /** * <br/> * ��������drawable��ɫ <br/> * * @param drawable * @param colors * @return */ public static Drawable tintDrawable(Drawable drawable, ColorStateList colors) { final Drawable wrappedDrawable = DrawableCompat.wrap(drawable); DrawableCompat.setTintList(wrappedDrawable, colors); return wrappedDrawable; } }