Android でキャンバスに描画された項目をスクロールする基本を理解する助けが必要です。0 の時間がビジュアライゼーションの一番上にあり、時間の経過とともにタイムラインが前のポイントよりも下にレンダリングされ続けるタイムラインを作成するとします。これを Android でレンダリングしたい場合は、onDraw() をオーバーライドすることで、キャンバス上に一連のアイテムを簡単に作成できることがわかっています。ただし、ビジュアライゼーションが画面の許容範囲を超えているとします。
たとえば、下の最初の図では、レンダリングしたキャンバス全体が大きな黒いボックスに含まれています。縦に上下に走る青い線と、黄色、緑、青の長方形をいくつか作成します。赤いボックスは、視覚化をレンダリングしている Android の画面を表しています。最初に開くと、すべてのアイテムが描画されますが、赤いボックス内に含まれるアイテムのみが画面に表示されます。
ユーザーが下にスクロールすると、2 番目の図に示すように、最初に赤いボックスの下に表示されていたアイテムが表示され、赤いボックスの範囲外に出たアイテムは表示されなくなります。
スクロール可能を使用する必要があると思いますが、その方法がまったくわかりません。このページhttp://developer.android.com/training/custom-views/custom-drawing.htmlを読み 、独自の顧客画像を作成する方法を説明し、このページhttp://developer.android.com/trainingを読みました/custom-views/making-interactive.htmlで UI をインタラクティブにする方法を説明していますが、何か足りないと思います。
この問題を説明するサンプル コードは次のとおりです (これは基本的なものであり、ボックス/ラインの移動先などを指示するロジックがあると仮定します)。
package com.example.scrolltest;
import com.example.scrolltest.Draw;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
public class MainActivity extends Activity {
Draw draw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
draw = new Draw(this);
draw.setBackgroundColor(Color.WHITE);
setContentView(draw);
}
}
と
package com.example.scrolltest;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class Draw extends View {
Paint paint = new Paint();
public Draw(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.GREEN);
canvas.drawRect(30, 30, 90, 200, paint);
paint.setColor(Color.BLUE);
canvas.drawLine(100, 20, 100, 1900, paint);
paint.setColor(Color.GREEN);
canvas.drawRect(200, 2000, 400, 3000, paint);
}
}
私が理解できないのは、スクロール可能なものを使用して、画面の外にある長方形までスクロールする方法です。また、これを正しく開始したのか、代わりにドローアブルを使用する必要があるのか もわかりません...