안드로이드에 캔버스로 그래프를 그린다. 왼쪽이나 오른쪽으로 이동하고 싶다. 나는 그것을 스크롤하고 싶지 않다, 나는 단지 당신이 그래프가 활발하게 움직이는 것을 볼 수있는 한 페이지에서 그것을 이동하고 싶다. 어떤 시체라도 나를 도와 주시면 감사하겠습니다.안드로이드의 캔버스 이동 그래프
답변
이 질문에 대한 답변을 찾고 있습니다. 솔루션이 있지만 속도가 느려지고 많은 CPU 시간이 사용됩니다. 200 픽셀 너비의 두 그래프 그리기 및 값을 배열에 저장되어 있습니다. 난 그냥 배열의 값을 이동하고 경로로 이동합니다. 캔버스가 왼쪽으로 1 픽셀 씩 이동하고 200 번째 열이 새 값으로 그려지는 해결책을 얻는 것이 좋을 것입니다. 두 경로 모두 비어있는 경우 경로를 그리려면 약 2ms (Droid Incredible)가 필요합니다. 2 개의 경로가 채워지면 40ms 이상 걸릴 수 있습니다. 이것은 여전히 25fps를 줄 것이지만 동시에 다른 스레드를 실행하고 CPU 시간을 낭비하고 싶지는 않습니다. 여기에 소스가 있습니다.
public class OSCI extends View
{ Integer[] codebuffer = new Integer[200]; Integer[] codebuffer1 = new Integer[200]; private static final String TAG = "MyActivity"; long start; int code=0;
// private static final String TAG = "MyActivity"; public OSCI(Context context) { super(context); Arrays.fill(codebuffer, 1); Arrays.fill(codebuffer1, 1); } public OSCI(Context context, AttributeSet attrs) { super(context, attrs);; Arrays.fill(codebuffer, 1); Arrays.fill(codebuffer1, 1); } @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(2); paint.setColor(Color.YELLOW); Path path = new Path(); path.moveTo(0, 70); Paint paint1 = new Paint(Paint.ANTI_ALIAS_FLAG); paint1.setStyle(Paint.Style.STROKE); paint1.setStrokeWidth(2); paint1.setColor(Color.GREEN); Path path1 = new Path(); path1.moveTo(0, 70); int max = Collections.max(Arrays.asList(codebuffer)); if(max==0)max=1; for (int a = 0; a < codebuffer.length; a++) { if (codebuffer[a] < 0)code=0; code = 70 * codebuffer[a]/max; path.lineTo(a * 2 + 2, 70 - code); path1.lineTo(a * 2+ 2, 70 - (codebuffer1[a])); } start=(SystemClock.elapsedRealtime()); canvas.drawPath(path1, paint); canvas.drawPath(path, paint1); Log.v(TAG, " "+(SystemClock.elapsedRealtime()-start)); } public void newValue(int value, int valuew) { System.arraycopy(codebuffer, 1, codebuffer, 0, 199); codebuffer[199] = value; System.arraycopy(codebuffer1, 1, codebuffer1, 0, 199); codebuffer1[199] = valuew; invalidate(); }
}
해결책 주셔서 대단히 감사합니다. newValue (int value, int valuew) 메소드를 어디에 호출하는지 알려 주실 수 있습니까? – ScorpionGroup
좋은 답변 주셔서 감사합니다.하지만 두 가지 질문이 있습니다. 처음으로 코드에서 newValue (int value, int valuew) 메서드를 호출 할 때. 둘째, 교대 이동을 보려면 스레드 또는 시간을 사용하고 어떻게 사용하는지. – ScorpionGroup
- 1. Box2dweb, 캔버스 이동 중입니까?
- 2. 자바 스크립트로 HTML 캔버스 이동
- 3. 그래프 이동 Vs 트리 탐색
- 4. 코어 플롯 그래프 이동 방법
- 5. 페이스 북 탭에서 캔버스 페이지로 이동
- 6. JavaScript 또는 플래시를 사용하는 연속 이동 그래프
- 7. 새 그래프 API를 사용하는 Facebook 캔버스 응용 프로그램의 인증
- 8. 안드로이드의 해치 브러시 스타일
- 9. 안드로이드의 화면과 뷰 좌표
- 10. 하드 버튼 기능 이동 (홈, 뒤로, 검색 <메뉴)을 안드로이드의 소프트 버튼으로 이동
- 11. 추상 캔버스 그리기
- 12. jQuery를 - 사용 캔버스 div의
- 13. 안드로이드의 글로벌 리스너
- 14. 실시간 실시간 그래프 라이브러리
- 15. 그래프 북용 그래프 라이브러리
- 16. RRDtool 그래프 : 빈 그래프
- 17. :: 그래프
- 18. 안드로이드의 이미지 오버레이
- 19. 안드로이드의 연락처
- 20. 안드로이드의 레이아웃
- 21. 안드로이드의 카운터
- 22. 안드로이드의 사각형
- 23. 안드로이드의 탭
- 24. 안드로이드의 OnFlashlight
- 25. 안드로이드의 GZIP
- 26. 안드로이드의 javax.management
- 27. 안드로이드의 MapView
- 28. 안드로이드의 Json
- 29. 안드로이드의 Httpost
- 30. 안드로이드의 Coverflow?
"는 그래프가 활발 이동하고 볼 수있는 하나의 페이지를 이동"그 문은 몇 가지 작업이 필요합니다, 당신이 말하려고하는지 모르겠어요. 일부 소스 코드도 도움이 될 수 있습니다. – Ralphleon