La cuestión de la dinámica de su ayuda

Voy a usar el androide surfaceview androide sin mostrar de forma dinámica, pero no a la integridad de los datos dentro de la matriz, muestra la siguiente:
Estática de dibujo: el llamado método SimpleDraw (100, 940); mostrar el artículo 100 a 940 puntos, puede mostrar correctamente.

El llamado método dinámico de dibujo: class MyTimerTask extends TimerTask {
@Override
public void run() {
SimpleDraw(currentX + 1, currentX + Y_axis.length / 5);//Por qué aquí a Y_axis.length / 5 a Y_axis.length puede mostrar completamente?
currentX++;// Adelante
ClearDraw();
if (currentX == 4 * Y_axis.length / 5) {// Si al final, la pantalla de nuevo.
ClearDraw();
currentX = 0;
}
}
}

Mostrar sólo los puntos antes de Y_axis.length / 5


Realmente de ayuda.
package huitu.XYF;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;

public class HuituActivity extends Activity {
Button btnSimpleDraw, btnTimerDraw;
SurfaceView sfv;
SurfaceHolder sfh;
private Timer mTimer;
private MyTimerTask mTimerTask;
int Y_axis[],// Conservación de onda senoidal puntos en el eje y
centerY;// El Centro de la línea
static int currentX;

/** Called when the activity is first created. */

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btnSimpleDraw = (Button) this.findViewById(R.id.Button1);
btnTimerDraw = (Button) this.findViewById(R.id.Button2);
btnSimpleDraw.setOnClickListener(new ClickEvent());
btnTimerDraw.setOnClickListener(new ClickEvent());
sfv = (SurfaceView) this.findViewById(R.id.SurfaceView01);
sfh = sfv.getHolder();
// El temporizador de dinámica de dibujo de onda
mTimer = new Timer();
// mTimerTask = new MyTimerTask();
// Los datos de la inicialización del eje y
centerY = (getWindowManager().getDefaultDisplay().getHeight() - sfv
.getTop()) / 2;

Y_axis = new int[5 * getWindowManager().getDefaultDisplay().getWidth()];

for (int i = 1; i <Y_axis.length / 5; i++) {// El cálculo de la onda senoidal
Y_axis[i - 1] = centerY
- (int) (100 * Math.sin(i * 2 * Math.PI / 180));
}

for (int i = 1; i <Y_axis.length / 5; i++) {// El cálculo de la onda senoidal
Y_axis[i - 1 + Y_axis.length / 5] = centerY
- (int) (50 * Math.cos(i * 2 * Math.PI / 180));
}
for (int i = 1; i <Y_axis.length / 5; i++) {// El cálculo de la onda senoidal
Y_axis[i - 1 + 2 * Y_axis.length / 5] = centerY
- (int) (100 * Math.sin(i * 2 * Math.PI / 180));
}
for (int i = 1; i <Y_axis.length / 5; i++) {// El cálculo de la onda senoidal
Y_axis[i - 1 + 3 * Y_axis.length / 5] = centerY
- (int) (50 * Math.cos(i * 2 * Math.PI / 180));
}
for (int i = 1; i <Y_axis.length / 5; i++) {// El cálculo de la onda senoidal
Y_axis[i - 1 + 4 * Y_axis.length / 5] = centerY
- (int) (100 * Math.sin(i * 2 * Math.PI / 180));
}
}

class ClickEvent implements View.OnClickListener {

@Override
public void onClick(View v) {

if (v == btnSimpleDraw) {
SimpleDraw(300, 1300);
System.out.println(Y_axis.length);
} else if (v == btnTimerDraw) {

mTimerTask = new MyTimerTask();
mTimer.schedule(mTimerTask, 0, 1);
}
}
}

class MyTimerTask extends TimerTask {
@Override
public void run() {
SimpleDraw(currentX + 1, currentX + Y_axis.length / 4);
currentX++;// Adelante
ClearDraw();
if (currentX == 4 * Y_axis.length / 5) {// Si al final, la pantalla de nuevo.
ClearDraw();
currentX = 0;
}
}
}

/*
* Dibuja el área
*/
void SimpleDraw(int str, int stp) {
Canvas canvas = sfh.lockCanvas(new Rect(0, 0, stp - str,
getWindowManager().getDefaultDisplay().getHeight()));
// La clave para obtener el tamaño de los lienzos y establecer el lienzo

Paint mPaint = new Paint();
mPaint.setColor(Color.GREEN);// Pincel de verde
mPaint.setStrokeWidth(2);// Preferencias de tamaño del pincel
int y;
for (int i = str; i <stp - str; i++) {// La pintura de onda
y = Y_axis[i - 1] - 10;
canvas.drawPoint(i - str + 1, y, mPaint);
}
sfh.unlockCanvasAndPost(canvas);// Desbloquear la lona, presentar la imagen buena pintura
}

void ClearDraw() {
Canvas canvas = sfh.lockCanvas(null);
canvas.drawColor(Color.BLACK);// Eliminar el lienzo
sfh.unlockCanvasAndPost(canvas);
}

} Más Compartir

por Ernesto en 11 de Mayo 2017 08:40 PM

Descargar el Código: http://pan.baidu.com/s/1i3GBHuH

por Ernesto en 11 de Mayo 2017 08:40 PM