OvalShape()의 알파 값을 점차적으로 변경하려고합니다. 이 경우 무효화를 호출하여 자체 호출을 계속하고 증가 된 자체 렌더링을 수행해야합니다. 알파 값 .. drawable.invalidate를 설정하여 캔버스에 연속적으로 그리기
하지만 난 이것에 대해 많은 생각을 가지고 있겠지로 설정이 잘못입니다 ..public class xml_anim_testing_sub_class extends View {
private ShapeDrawable mDrawable;
int x = 10;
int y = 10;
int width = 300;
int height = 50;
int my_alpha = 255,add_to_my_alpha = 0;
public xml_anim_testing_sub_class(Context context) {
super(context);
}
protected void onDraw(Canvas canvas) {
x++;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setAlpha(my_alpha += add_to_my_alpha);
mDrawable.setBounds(x, y, x + width, y + height);
if (my_alpha == 0)
add_to_my_alpha = 1;
if (my_alpha == 255)
add_to_my_alpha = -1;
mDrawable.draw(canvas);
mDrawable.invalidateSelf();
}
}
좋아, 내가 솔루션, invalidate()
을 찾았지만, 다음 invalidate
과의 차이점은 무엇입니까 postInvalidate
? 둘 다 작동하고있어 ..
또한 무엇을 사용합니까?
mDrawable.invalidateSelf()(cb);
나는 믿을 수는 없지만 새로운 것을 시도해 보니 onDraw ...의 끝에서 무효화되었습니다. :) 효율적인 ... ni가 "new ShapeDrawable "생성자에서 .. :) thanks .. 많이 .. 그래서 무효와 postInvalidate의 차이점은 무엇입니까 ??? 둘 다 일하고있어. 또한 무엇입니까? mDrawable.invalidateSelf() (cb); – Mahesh
@Mahesh -'postInvalidate()'는 프레임 워크가 드로잉 중에 큐에 올 수있는 다른 이벤트를 처리 할 수있는 기회를줍니다. 필자는'invalidate() '대신에 샘플 코드의 일부를 사용하기 때문에 그렇게 제안했다. 'Drawable.invalidateSelf()'는 뷰의'invalidateDrawable()'메소드를 호출합니다.이 메소드는 드로어 블의 현재 경계 만 무효화합니다. 드로어 블을 움직이지 않으면'invalidate (mDrawable.getBounds()) '를 호출하는 것과 같은 효과를 갖습니다. 'mDrawable'을 움직이면 그리기가 필요한 부분을 놓칠 수 있습니다. –
hmm .. der는 버튼과 같지 않습니다.하지만 여전히 Jargon Ted에게 감사드립니다. – Mahesh