Я пытаюсь создать маску трансперенсиантности. Я создал скользящий экран, который расширяет ViewGroup
. в конструкторе я добавить:Добавить view to ViewGroup в dispatchDraw
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
LinearLayout roadMap = new LinearLayout(context);
roadMap.setLayoutParams(params);
this.addView(roadMap);
Я тогда переопределить метод onDispatchDraw()
:
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
Log.d("touchy touch", "dispatch draw called");
canvas.drawColor(getResources().getColor(R.color.LIGHT_BLUE));
/* recreate the blue rectangle on the canvas */
path = new Path();
path.moveTo(0.0f, 0.0f); // Top Left
path.lineTo(0.0f, 800.0f); // Bottom Left
path.lineTo(0.0f, 800.0f); // Bottom Right
path.lineTo(this.x, 0.0f); // Top Right
path.close();
canvas.drawPath(path,paint);
}
В результате у меня прозрачная маска, которая равна путь создания. Это не проблема. Unfortunatley roadMap никогда не отображается. Я попытался переопределить:
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int count = this.getChildCount();
Log.d("children please", "count: "+count);
for (int i = 0; i < count; i++) {
View child = this.getChildAt(i);
child.layout(0, 0, child.getMeasuredWidth(), child.getMeasuredHeight());
child.invalidate();
child.bringToFront();
}
}
Однако до сих пор LinearLayout я пытаюсь прикрепить не появляется.
Почему вы добавляете View в dispatchDraw ??? это худшее место для этого ... – pskink
Где бы вы порекомендовали? Я пытаюсь создать макет, который является частично прозрачным. это должно произойти в ответ на событие касания. – JY2k
1000 вызван тем, что я добавляю представление каждый ondraw. – JY2k