/*
* Copyright (C) 2012 www.amsoft.cn
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ab.view.app;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.graphics.Typeface;
import android.os.SystemClock;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.View;
import com.ab.util.AbGraphicUtil;
import com.ab.util.AbViewUtil;
// TODO: Auto-generated Javadoc
/**
* © 2012 amsoft.cn
* 名称:AbMonitorView.java
* 描述:阻塞测试View(显示页面停留时间,测试主界面阻塞情况).
*
* @author 还如一梦中
* @version v1.0
* @date:2013-8-23 下午2:03:29
*/
public class AbMonitorView extends View {
/** The m start time. */
private long mStartTime = -1;
/** The m counter. */
private int mCounter;
/** The m fps. */
private int mFps;
/** The m paint. */
private final Paint mPaint;
/**
* 构造阻塞测试View.
*
* @param context the context
*/
public AbMonitorView(Context context) {
this(context, null);
}
/**
* 构造阻塞测试View.
*
* @param context the context
* @param attributeset the attributeset
*/
public AbMonitorView(Context context, AttributeSet attributeset) {
super(context);
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
mPaint.setAntiAlias(true);
mPaint.setTypeface(Typeface.DEFAULT);
mPaint.setTextSize(16);
}
/**
* 绘制
*/
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.argb(80, 0, 0, 0));
if (mStartTime == -1) {
mStartTime = SystemClock.elapsedRealtime();
mCounter = 0;
}
long now = SystemClock.elapsedRealtime();
long delay = now - mStartTime;
if(delay!=0){
// 计算帧速率
mFps = (int)(mCounter * 1000 / delay);
}
String text = mFps + " fps";
//获取值的文本的高度
TextPaint mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
mTextPaint.setTypeface(Typeface.DEFAULT);
AbViewUtil.setTextSize(this.getContext(),mTextPaint, 30);
AbViewUtil.setTextSize(this.getContext(), mPaint, 30);
FontMetrics fm = mTextPaint.getFontMetrics();
//得到行高
int textHeight = (int)Math.ceil(fm.descent - fm.ascent)+2;
int textWidth = (int)AbGraphicUtil.getStringWidth(text,mTextPaint);
canvas.drawText(text,(this.getWidth()-textWidth)/2, textHeight, mPaint);
if (delay > 1000L) {
mStartTime = now;
mFps = mCounter;
mCounter = 0;
}
mCounter++;
super.onDraw(canvas);
}
}