0
저는 강조하고 싶은 ImageButton이 있습니다 - 예. 다운로드가 완료되면 깜박입니다.ImageButton의 배경에 대한 전환
나는 TransitionDrawable
에 배경을 설정하고 전환이 완료 될 때 다시 재설정하기 위해 노력하고있어,하지만 난 이상한 결과를 얻을 :
- 버튼의 패딩 사라 전환이 활성화되면 및 ISN 완료되면 원래 드로어 블을 복원 할 때 복원되지 않습니다.
- 전환은 버튼의 획 (테두리)에서만 발생하지만 배경 영역을 채우는 그라디언트에서는 발생하지 않습니다.
이 내가, 전환 활성화를 반대하고 원래 당김 배경 복원하는 데 사용하고있는 자바 코드 :
<ImageButton
android:id="@id/download_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/custom_button"
android:padding="14dp"
android:src="@drawable/download_icon" />
: 이것은 레이아웃 XML에있는 버튼을
downloadButton.setBackgroundResource(R.drawable.animate_background);
Drawable background = downloadButton.getBackground().getCurrent();
if (background instanceof TransitionDrawable) {
TransitionDrawable transition = (TransitionDrawable) background;
transition.startTransition(300);
downloadButton.postDelayed(new Runnable() {
@Override
public void run() {
// reverse the transition after it completes
Drawable background = downloadButton.getBackground().getCurrent();
if (background instanceof TransitionDrawable) {
TransitionDrawable transition = (TransitionDrawable) background;
transition.reverseTransition(200);
downloadButton.postDelayed(new Runnable() {
@Override
public void run() {
// restore original background
downloadButton.setBackgroundResource(R.drawable.custom_button);
}
}, 200); // after reverse transition
}
}
}, 300); // after transition
}
이다는
이것은 custom_button 드로어 블의 xml입니다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid android:color="#343434" />
<stroke android:width="1dp" android:color="#171737" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape>
<gradient android:startColor="#343434" android:endColor="#171737" android:angle="270" />
<stroke android:width="1dp" android:color="#171717" />
<corners android:radius="5dp" />
</shape>
</item>
전이 "animate_background"XML :
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/animate_start" />
<item android:drawable="@drawable/animate_end" />
</transition>
애니메이션
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient android:startColor="#34F434" android:endColor="#174717" android:angle="270" />
<stroke android:width="2dp" android:color="#17F717" />
<corners android:radius="5dp" />
</shape>