我为淡入淡出图片制作了自定义ImageView类。在我测试的情况下,它适用于Android 5.0及更高版本。但是当我尝试在API级别18(Jelly was 4.3)中运行时,我得到了一个Inflating布局错误。 我不知道为什么会收到这个错误。
Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class global.buss.logics.FadeImageView
这是我的班级:
public class FadeImageView extends AppCompatImageView{
private FadeSide mFadeSide;
private Context c;
public enum FadeSide {
RIGHT_SIDE, LEFT_SIDE, TOP_SIDE, BOTTOM_SIDE
}
public FadeImageView(Context c, AttributeSet attrs, int defStyle) {
super(c, attrs, defStyle);
this.c = c;
init();
}
public FadeImageView(Context c, AttributeSet attrs) {
super(c, attrs);
this.c = c;
init();
}
public FadeImageView(Context c) {
super(c);
this.c = c;
init();
}
private void init() {
// Enable horizontal/vertical fading
this.setHorizontalFadingEdgeEnabled(true);
this.setVerticalFadingEdgeEnabled(true);
// Apply default fading length
this.setEdgeLength(14);
// Apply default side
this.setFadeDirection(FadeSide.TOP_SIDE);
}
public void setFadeDirection(FadeSide side) {
this.mFadeSide = side;
}
public void setEdgeLength(int length) {
this.setFadingEdgeLength(getPixels(length));
}
@Override
protected float getTopFadingEdgeStrength() {
return mFadeSide.equals(FadeSide.TOP_SIDE) ? 1.0f : 0.0f;
}
@Override
protected float getBottomFadingEdgeStrength() {
return mFadeSide.equals(FadeSide.BOTTOM_SIDE) ? 1.0f : 0.0f;
}
@Override
protected float getLeftFadingEdgeStrength() {
return mFadeSide.equals(FadeSide.LEFT_SIDE) ? 1.0f : 0.0f;
}
@Override
protected float getRightFadingEdgeStrength() {
return mFadeSide.equals(FadeSide.RIGHT_SIDE) ? 1.0f : 0.0f;
}
@Override
public boolean hasOverlappingRendering() {
return true;
}
@Override
public boolean onSetAlpha(int alpha) {
return false;
}
private int getPixels(int dipValue) {
Resources r = c.getResources();
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, r.getDisplayMetrics());
}}
以及我的实施方式。
<global.buss.logics.FadeImageView
android:id="@+id/bottom_bg_image"
android:layout_width="match_parent"
android:layout_height="250dp"
android:scaleType="fitXY"
android:src="@drawable/mgnrega_vill"
android:layout_alignParentBottom="true"/>
我有这样的包结构。
任何帮助将不胜感激。提前致谢