Android: рисование растрового изображения в определенном месте, отказ от рисования - PullRequest
4 голосов
/ 29 января 2012

Позвольте мне начать с того, что я в основном новичок в написании Java, поэтому я хотел бы получить полное объяснение. Не просто поток кода, но что-то, что дает некоторое представление о том, почему и где это должно быть

В настоящее время я пытаюсь написать приложение, однако когда-нибудь у меня возникают проблемы с Canvas и отрисовкой нужного мне растрового изображения. Это мой код для рисования изображения:

Canvas canvas = null;
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.image);
canvas.drawBitmap(image, 10, 800, null);

Этот метод (ожидаемо) генерирует исключение нулевого указателя. Тем не менее, определение «холст» как ноль является единственной возможностью, которую дает мне Eclipse. При попытке определить его как

Canvas canvas = new Canvas();

Android просто отказывается рисовать растровое изображение. Я уверен, что мое изображение находится в res / drawable / image Если это помогает, изображение сохраняется как «image.png»

Как заставить Android отображать / отображать мое изображение / растровое изображение в определенном месте Я попросил его нарисовать изображение (10x800)?

1 Ответ

4 голосов
/ 29 января 2012

Запись бессмыслицы, которая решает ошибку компилятора, не меняет того факта, что это ерунда!:)

Вы должны получить ссылку на объект Canvas другим способом.Возможно, вы захотите быть более точным в том, что именно вы пытаетесь сделать, чтобы мы могли подсказать, как вам следует поступить.(Например, вы пытаетесь просто отобразить изображение вместе с некоторыми другими представлениями? Вы пытаетесь создать пользовательский вид? Возможно, вы просто захотите использовать ImageView)

Редактировать:

Вы должны прочитать об архитектуре Android на developer.android.com.Если вы просто пытаетесь показать изображение, возможно, нет причин использовать холст напрямую.Тем не менее, вы можете рисовать в пользовательском представлении, расширяя класс View

class myView extends View{

    Bitmap bm;

    loadBitmap()
    {
        bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
    }

    @Override
    public void draw(Canvas c)
    {
       c.drawBitmap(bm, XCORD, YCORD, null);
    }
}

, если вам не нужно настраиваемое представление, просто используйте класс ImageView

class MyActivty extends Activity{
   @Override
   public void onCreate(Bundle b)
   {
       super.onCreate(b);
       ImageView iv = new ImageView(this);
       iv.setImageResource(R.drawable.pic);
       setContentView(iv);
   }
}

Внимание: Iзаписал эти вызовы методов в верхней части моей головы, они могут быть слегка отключены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...