神秘火星文特效

大家好,我是黎明。今天我做的是一个关于火星文的特效,供大家使用和欣赏。主要是结合了自定义控件的一些知识,希望大家能喜欢.附如下代码:

这是全屏火星文的代码:

public class HkText extends View {
	
	private char[] counts = new char[]{'A','B','C','D','E','F','G','H','J','K','L','M','N','O'};
	
	private Paint paint;
	
	private Context ctx;
	
	public HkText(Context context, AttributeSet attrs) {
		super(context, attrs);
		ctx = context;
		init();
	}

	/**
	 * 像素值
	 */
	private int textSize = 20;
	
	private void init() {
		paint = new Paint();
		paint.setAntiAlias(true);
		paint.setColor(Color.WHITE);
		paint.setTextSize(textSize);//PX值
		paint.setTextAlign(Align.LEFT);
		
		paint.setStyle(Style.FILL);
	}

//	private float sp2px(int sp){
//		TypedValue.applyDimension(
//				TypedValue.COMPLEX_UNIT_SP, sp, ctx.getResources().getDisplayMetrics());
//		
//		float px = sp *  ctx.getResources().getDisplayMetrics().scaledDensity;
//		return px;
//	}
//	
//	private float px2sp(int px){
//		float sp = px / ctx.getResources().getDisplayMetrics().scaledDensity;
//		return sp;
//	}
	
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
		Utils.logleo("getWidth()::"+getWidth());
		Utils.logleo("getHeight()::"+getHeight());
		
		textSize = getWidth()/10;
	}
	
	public float left = 150;
	public float left_bottom = 200;
	
	private Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
//			int flag = msg.what;// 0 -- 10 
			
//			paint.setColor(Color.BLUE);
			invalidate();
		};
	};
	
	private int seed = 0;
	
	private int stepCount = 11;

 以下是单列火星文的代码,可以先看这个,在结合这个看上面的。

public class HkText extends View {
	
	private char[] counts = new char[]{'A','B','C','D','E','F','G','H','J','K','L','M','N','O'};
	
	private Paint paint;
	
	private Context ctx;
	
	public HkText(Context context, AttributeSet attrs) {
		super(context, attrs);
		ctx = context;
		init();
	}

	/**
	 * 像素值
	 */
	private int textSize = 20;
	
	private void init() {
		paint = new Paint();
		paint.setAntiAlias(true);
		paint.setColor(Color.WHITE);
		paint.setTextSize(textSize);//PX值
		paint.setTextAlign(Align.LEFT);
		
		paint.setStyle(Style.FILL);
	}

//	private float sp2px(int sp){
//		TypedValue.applyDimension(
//				TypedValue.COMPLEX_UNIT_SP, sp, ctx.getResources().getDisplayMetrics());
//		
//		float px = sp *  ctx.getResources().getDisplayMetrics().scaledDensity;
//		return px;
//	}
//	
//	private float px2sp(int px){
//		float sp = px / ctx.getResources().getDisplayMetrics().scaledDensity;
//		return sp;
//	}
	
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
		Utils.logleo("getWidth()::"+getWidth());
		Utils.logleo("getHeight()::"+getHeight());
		
		textSize = getWidth()/10;
	}
	
	public float left = 150;
	public float left_bottom = 200;
	
	private Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
//			int flag = msg.what;// 0 -- 10 
			
//			paint.setColor(Color.BLUE);
			invalidate();
		};
	};
	
	private int seed = 0;
	
	private int stepCount = 11;
	
	
	@Override
	protected void onDraw(Canvas canvas) {

		left = 10;
		left_bottom = 400;
		for (int i = 0; i < 20; i++) {

			int seed_tem = seed;

			int alpha = 255 - (i + seed_tem) * 25;
			paint.setAlpha(alpha);// 0是没有

			canvas.drawText(counts, i % counts.length, 1, left, left_bottom,paint);

			left_bottom = (float) (left_bottom - textSize * 0.6);

		}
		seed = (seed + 1) % stepCount;
		handler.sendEmptyMessageDelayed(seed, 500);
	}

	
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值