setOutlineProvider
是 Android API 21 (Lollipop) 引入的一個方法,用于設置視圖輪廓提供者
以下是如何在 Android 項目中實現 setOutlineProvider
的兼容性處理:
ImageView
)。import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewOutlineProvider;
import androidx.appcompat.widget.AppCompatImageView;
public class CustomImageView extends AppCompatImageView {
public CustomImageView(Context context) {
super(context);
init();
}
public CustomImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
// 設置輪廓形狀和大小
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 15);
}
});
setClipToOutline(true);
}
}
}
<your.package.name.CustomImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/your_image" />
這樣,當運行在 Lollipop 及更高版本的 Android 設備上時,視圖將使用 setOutlineProvider
設置輪廓提供者。在較早版本的 Android 設備上,setOutlineProvider
將被忽略,不會影響視圖的顯示。