Я пробовал много вещей, чтобы справиться с моей проблемой, но на самом деле это не помогло, и google тоже не мог мне помочь. У меня есть ImageView, который содержит холст. Холст рисует часть графика. Поэтому, когда пользователь прокручивает (по горизонтали), холст должен рисовать еще одну часть графика. Например:Анализ и обработка жестов прокрутки в Imageview (с холстом) без ScrollView
Ширина холста 200px
Полотно рисует график от й = 0 до й = 200
пользователя прокручивает (по горизонтали), он перемещает его палец по 100px
холст должен теперь построить график от х = 100 х = 300
холст должен перерисовывать каждый пиксель пользователь прокручивает (для плавной прокрутки) Это решение не работали: Draw КН ole graph и поместите его в Scrollview. Это обеспечивает OutOfMemoryError, потому что холст/растровое изображение слишком велико.
Также мне нужно сделать некоторые другие вещи, поэтому мне нужно сделать это, как описано выше.
Вот код:
XML:
<de.touristenfahrerforum.Marcel.Fragments.SpeedGraph
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/graph"
android:background="@android:color/black"
android:name="de.touristenfahrerforum.MarcelMoiser.Fragments.SpeedGraph">
</de.touristenfahrerforum.Marcel.Fragments.SpeedGraph>
Java Класс:
public class SpeedGraph extends ImageView
{
...
public SpeedGraph(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public SpeedGraph(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SpeedGraph(Context context) {
super(context);
}
public void setup(ArrayList<Location> locations, ScrollViewListener scrollViewListener)
{
...
Bitmap bitmap = Bitmap.createBitmap(speedCanvasWidth,speedCanvasHeight,Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
this.setImageBitmap(bitmap);
...}
...
private void drawGraph(int start, int end, int color)
{
graphPaint.setColor(color);
long startTime = locations.get(start).getTime();
Path path = new Path();
path.moveTo((locations.get(start).getTime()-startTime)/10*V.LOGICAL_DENSITY, speedCanvasHeight-(int)(locations.get(start).getSpeed()*3.6*SIZE_FACTOR));
for(int it = start; it < end; it++)
{
Location location = locations.get(it);
path.lineTo((location.getTime()-startTime)/10*V.LOGICAL_DENSITY, speedCanvasHeight-(int)(location.getSpeed()*3.6*SIZE_FACTOR));
}
canvas.drawPath(path,graphPaint);
}
...
Так что я хотел бы осуществить то, что распознает горизонтальные жесты прокрутки и дает мне ряд пикселей, которые показывают мне пиксели, которые пользователь прокрутил.
Спасибо, ребята заранее