2013-03-08 4 views
0

В настоящее время у меня есть класс, который динамически рисует кучу квадратов на основе содержимого файла sqlite. Поскольку данные достаточно велики, рисунок во много раз больше экрана. Я прочитал много предлагаемых методов для этого и не уверен в лучшем подходе. Поскольку я не буду изменять изображение после его рендеринга (нужно только динамически отображать его при перезагрузке), первый ответ, указанный в списке here, кажется лучшим, но я не совсем понимаю, как это сделать.Как создать большое изображение, которое можно прокручивать

Если я правильно понимаю, что:

  1. создать растровое изображение,
  2. создать свой холст (который больше, чем разрешение экрана)
  3. захватить кешированный растровый и
  4. визуализации растрового изображения по сравнению с холст.

Но мне не хватает знаний, чтобы это произошло в моем существующем коде. Мой существующий код просто создает очень большой холст (я не определяю границы, я просто начинаю рисовать). Мой главный класс выглядит следующим образом:

package com.example.drawdemo; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 

public class DrawDemo extends Activity { 
    DrawView drawView; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    drawView = new DrawView(this); 
    drawView.setBackgroundColor(Color.WHITE); 
    setContentView(drawView); 
    } 
} 

А класс DrawView что-то вроде этого:

public class DrawView extends View { 

    public DrawView(Context context) { 
     super(context);    
    } 

    @Override 
    public void onDraw(Canvas canvas) { 

     //LOTS OF CODE HERE to figure out how to render rectangles through loops 
     // similar to lines like this 
     canvas.drawRect(xStart, rectYPointer, xEnd, rectYPointer+rectSize, paint); 
     // or this 
     canvas.drawText(String.valueOf(rectSize), 130, rectYPointer*2, paint); 

    } 

} 

Является ли подход, который я беру правильный подход, чтобы позволить мне прокручивать вниз и посмотреть большое изображение, больше, чем экран Android? Если да, то каким образом я могу перенести свой код, чтобы соответствовать подходу, указанному в ответе, который, по моему мнению, является правильным методом?

ответ

0

Ну, я боюсь, что вы не поняли тему. Это совсем другое, чем вы пытаетесь достичь.

В этом разделе речь идет о рисовании растрового изображения, которое будет использоваться позже.

У вас уже есть построенное растровое изображение? (Или, по крайней мере, вы можете загрузить его из ресурсов с помощью:

BitmapFactory.decode ... (ресурс или файл в соответствии с вашим входом, см documentation here)

Ваш холст не должен быть огромным, чтобы чтобы прокрутить его внутри экрана. Размер холста - это размер вашего вида (здесь размер экрана), но вы будете рисовать растровое изображение в соответствии с положением прокрутки, которое вы хотите применить.

см. canvas.drawBitmap() 's documentation и canvas.translate также могут помочь.

В основном вы хотите: получить ссылку на загрузочный битмап (с использованием bitmapdecode) в вашем представлении. , затем в onDraw нарисуйте растровое изображение на холсте вида, чтобы показать его на экране. , чтобы добавить эффект прокрутки, попробуйте изменить y перевод холста при его рисовании.

надеюсь, что это поможет.

Для получения дополнительной информации (и хороший примера) о нанесении на холсте, я предлагаю вам открыть API демо исходный код проекта:

API Demos -> Graphics -> TouchPaint 
Смежные вопросы