如何通过setOutlineProvider实现自定义形状

avatar
作者
猴君
阅读量:0

在Android中,你可以使用setOutlineProvider()方法为视图设置自定义形状

  1. 首先,创建一个新的类,继承自ViewOutlineProvider。然后重写getOutline()方法,在这个方法中定义你的自定义形状。例如,我们创建一个圆形的OutlineProvider:
import android.graphics.Outline; import android.view.View; import android.view.ViewOutlineProvider;  public class CircleOutlineProvider extends ViewOutlineProvider {     @Override     public void getOutline(View view, Outline outline) {         int width = view.getWidth();         int height = view.getHeight();         int radius = Math.min(width, height) / 2;         outline.setOval(0, 0, width, height);     } } 
  1. 接下来,在你的布局文件中添加一个视图,并为其设置一个背景颜色。例如,在activity_main.xml中添加一个FrameLayout
    android:id="@+id/custom_shape"     android:layout_width="200dp"     android:layout_height="200dp"     android:background="@android:color/holo_blue_dark"/> 
  1. 在你的Activity或Fragment中,使用setOutlineProvider()方法将自定义的OutlineProvider应用到视图上。例如,在MainActivity.java中:
import android.os.Bundle; import android.view.View;  import androidx.appcompat.app.AppCompatActivity;  public class MainActivity extends AppCompatActivity {      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          View customShape = findViewById(R.id.custom_shape);         customShape.setOutlineProvider(new CircleOutlineProvider());         customShape.setClipToOutline(true);     } } 

现在运行你的应用程序,你会看到一个圆形的蓝色背景。你可以根据需要修改CircleOutlineProvider类中的getOutline()方法,以实现不同的自定义形状。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!