《Android系统源代码情景分析》章节试读

当前位置:首页 > 计算机网络 > 程序设计 > Android系统源代码情景分析章节试读

出版社:电子工业出版社
出版日期:2012-10
ISBN:9787121181085
作者:罗升阳
页数:830页

《Android系统源代码情景分析》的笔记-第160页 - Android绘图机制与处理技巧

这块画正旋曲线的逻辑完全是错误的啊。正确的代码如下:
package com.lczh.wzy.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* Created by wzy on 16-1-20.
*/
public class ClockSurfaceView extends SurfaceView implements SurfaceHolder.Callback, Runnable {
private SurfaceHolder mSurfaceHolder;
private Canvas mCanvas;
private volatile boolean mIsDrawing;
private Path mPath;
private Paint mPaint;
private Paint mTextPaint;
private int scaleX = 20;
private int scaleY = 50;
private double ox = 10;
private double oy = 240;
private double x = 0;
private double y = 0;
private double t = 0;
private boolean flag = true;
public ClockSurfaceView(Context context) {
this(context, null);
}
public ClockSurfaceView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ClockSurfaceView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mSurfaceHolder = getHolder();
mSurfaceHolder.addCallback(this);
setFocusable(true);
setFocusableInTouchMode(true);
setKeepScreenOn(true);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(10);
mTextPaint = new Paint();
mTextPaint.setAntiAlias(true);
mTextPaint.setStyle(Paint.Style.FILL);
mTextPaint.setStrokeWidth(20);
mTextPaint.setColor(Color.YELLOW);
mPath = new Path();
}
@Override
public void run() {
while (mIsDrawing) {
draw();
}
}
private void draw() {
try {
mCanvas = mSurfaceHolder.lockCanvas();
mCanvas.drawColor(Color.RED);
// 绘制原点
mPaint.setColor(Color.WHITE);
mCanvas.drawText("0", 30, 190, mTextPaint);
// 画Y轴和X轴
mPaint.setColor(Color.BLACK);
mCanvas.drawLine(20, 10, 20, 480, mPaint);
mCanvas.drawText("Y", 30, 20, mTextPaint);
mCanvas.drawLine(20, 220, 480, 220, mPaint);
mCanvas.drawText("X", 480, 190, mTextPaint);
// 画曲线
mPaint.setColor(Color.BLUE);
t += 0.1;
x = t * scaleX;
y = Math.sin(t) * scaleY + 240;
mCanvas.drawLine(10 + (int)ox, (int)oy, 10 + (int)x, (int)y, mPaint);
ox = x;
oy = y;
if (t > 15) {
mIsDrawing = false;
}
} catch (Exception e) {
} finally {
if (mCanvas != null) {
mSurfaceHolder.unlockCanvasAndPost(mCanvas);
}
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mIsDrawing = true;
new Thread(this).start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mIsDrawing = false;
}
}


 Android系统源代码情景分析下载 更多精彩书评


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024