나는 움직이기를 원하는 ActionBar
아이콘 (왼쪽에있는 하나의 액션 아이템)이 있습니다.ActionBar의 아이콘으로 애니메이션하기
나는이처럼 내 Activity
내 ActionBar
의 아이콘을 설정하고 있습니다 :
getSupportActionBar().setIcon(icon)
곳 icon
비트 맵에 사용자 정의 XML 뷰를 변환하는 라이브러리에 의해 생성되는 Drawable
이다. 이 XML보기는 배경 이미지가 있고 TextView
이 맨 위에있는 RelativeLayout
입니다.
오늘 TextView
을 업데이트해야 할 때 나는 icon
을 다시 생성하고 setIcon
으로 다시 전화합니다. 그 대신, TextView
을 잡고 그 중 일부를 페이드 아웃 한 다음 업데이트 한 후 (예 : setIcon
을 호출 할 필요없이 동일한 효과를 다시 사용) 애니메이션 효과를 적용하고 싶습니다.
잘 모르시는가요? 누군가가 접근법을 추천 할 수 있습니까?
편집 :이 방법을 시도 :
MyActivity
에서 :
Drawable myDrawable = new MyDrawable();
supportActionBar.setIcon(myDrawable);
과 :
public class MyDrawable extends Drawable {
private Paint paint;
private RectF rect;
public MyDrawable() {
this.paint = new Paint();
this.rect = new RectF();
}
@Override
public void draw(Canvas canvas) {
paint.setARGB(255, 0, 255, 0);
paint.setStrokeWidth(2);
paint.setStyle(Paint.Style.FILL);
rect.right = 20f;
rect.bottom = 20f;
canvas.drawRoundRect(rect, 0.5f, 0.5f, paint);
}
@Override
public void setAlpha(int alpha) {
paint.setAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
paint.setColorFilter(cf);
}
@Override
public int getOpacity() {
return PixelFormat.OPAQUE;
}
}
아무것도까지 보여줍니다. onDraw
이 호출됨을 확인했습니다. 나에게 의심스러운 뭔가가 XML 레이아웃을 잊고 정의 Drawable
을 생성하는 것입니다 위해 canvas
1.
감사합니다. 나는이 접근법을 시도하고 있지만 지금까지 그릴 것이 아무것도 없다. 내 사용자 정의 drawable의 onDraw 메소드는 (0,0) - (20,20) RectF에 대해 drawRoundRect를 호출하는 높이와 너비 '1'의 캔바스를받습니다. 어떤 포인터? – siger
는'getIntrinsicWidth'와'getIntrinsicHeight'를 오버라이드하고 어떤 값을 반환합니다. 또한'setBounds'를 오버라이드하고 거기에 필요한 크기를 초기화하십시오. – Budius
감사합니다. 기본 비트 맵 + 텍스트가 작동 중입니다. 난 임의의 본질적인 & 바운드 값을 제공하고 더 알고 싶습니다. 또한 애니 메이팅을 위해 onDraw에서 invalidateSelf를 호출하고 상태 시스템을 유지해야하는지 궁금합니다. 어떤 포인터라도 도움이 될 것입니다. – siger