2016-09-28 2 views
0

У меня есть изображение предварительного изображения i.e Одно базовое изображение и несколько прозрачных слоев базового изображения. Я пытаюсь добавить изображение слоя поверх базового изображения, чтобы выбрать слой и применить к нему другой цвет.Сенсорное событие на изображении смешанного слоя Android

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

  1. ImageView - Я перекрываю изображение с прозрачным слоем. Он показывает смешанное изображение, но сенсорное событие всегда обнаруживает идентификатор изображения с перекрытием. Поскольку я рисую изображение с заполняющим родителем, все изображение слоя тоже одинаково.

  2. Layer Drawable - Он может разрешать только рисование изображений, но мой вариант использования - загрузить предварительную версию из галереи или другого ресурса. Даже я не могу выбрать слой на ощупь.

  3. GPUImage library - Изображение не отображает полное изображение.

С уважением Sathiya

ответ

0

Продлить View класс, сделать функцию OnDraw() нарисовать то, что вы хотите сделать. Функция onTouchEvent() реализует события касания. То, что вы пытаетесь сделать, не включено в любое представление, которое уже сделано, но довольно легко сделать вид. Просто нарисуйте растровые изображения на холсте в правильном порядке с правильными красками с правильной прозрачностью.

@Override 
     protected void onDraw(Canvas canvas) { 
int numLayers = mLayers.size(); 
     for (int i = 0; i < numLayers; i++) { 
      canvas.save(); 
      canvas.concat(matrix); 
      //or 
      canvas.translate(rect.left,rect.top); 
      Bitmap b = mLayers.get(i); 
      canvas.drawBitmap(b, paint); 
      canvas.restore(); 
     }} 

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

+0

Можете ли вы поделиться примером кода. Я попробовал LayeredImageView, но я не смог получить динамический идентификатор изображения. – user2508399

+0

Это просто код для рисования растрового изображения, применяемого несколько раз. Вы можете его закодировать или просто применить определенное количество из них. Просто примените этот материал к холсту. canvas.drawBitmap (растровое изображение, краска) и сделать это для каждого из соответствующих растровых изображений в соответствующих местах. – Tatarize

+0

@Override защищенная пустота onDraw (холст холста) { super.onDraw (холст); Матричная матрица = getImageMatrix(); if (matrix! = Null) { int numLayers = mLayers.size(); for (int i = 0; i user2508399

Смежные вопросы