I am adding myCustomView in a linear layout multiple times, it is working fine for first instance of customView, but unable to add it multiple times.
Here is the Custom View class:
public class MultiTouchView extends View {
private float x, y;
Bitmap image;
public MultiTouchView(Context context, Bitmap image) {
super(context);
this.image = image;
// TODO Auto-generated constructor stub
}
public MultiTouchView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MultiTouchView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawBitmap(image, x, y, null);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
MeasureSpec.getSize(heightMeasureSpec));
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_MOVE:
x = event.getX();
y = event.getY();
break;
case MotionEvent.ACTION_DOWN:
x = event.getX();
y = event.getY();
break;
case MotionEvent.ACTION_UP:
break;
}
invalidate();
return true;
}
}
This is the class where i am adding custom view:
public class AndroidTouch extends Activity {
LinearLayout linear;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linear = (LinearLayout)findViewById(R.id.linear);
Bitmap backgroundCard = BitmapFactory.decodeResource(
getResources(), R.drawable.ic_launcher);
MultiTouchView mt1 = new MultiTouchView(this, backgroundCard);
linear.addView(mt1);
Bitmap backgroundCard2 = BitmapFactory.decodeResource(
getResources(), R.drawable.icon);
MultiTouchView mt2 = new MultiTouchView(this, backgroundCard2);
linear.addView(mt2);
}
}
If you set a background color to the MultiTouchView views, then you will find that the color of the entire screen is same as the color of the 2nd view which was added.
I specified layout params for the child views and i was able to get the views to draw on screen. the modified code:
But i believe you will face another problem after this. From the code it is evident that you are trying to draw the views at the touched positions. I would suggest using one single custom view and adding multiple images to the same view. Only in this case you have to determine which view needs to be drawn in a different co-ordinate and which view remains same.
Hope this helps