【发布时间】:2022-10-17 17:25:31
【问题描述】:
我正在尝试从现有视图创建一个虚拟视图。
原图:
需要像这样创建虚拟视图。
我试着用油漆和画布。
public class MyView extends View {
Paint paint;
Path path;
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init(){
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(10);
paint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawRect(30, 50, 200, 350, paint);
// canvas.drawRect(100, 100, 300, 400, paint);
//drawRect(left, top, right, bottom, paint)
}
}
但我不能这样画。因为有时图像会是圆形或椭圆形或任何形状。所以,我需要扣除现有视图并绘制相同的新视图。谁能帮我从现有视图创建一个虚拟视图?
我正在尝试仅针对微光动画执行此操作。对于 facebook 微光,我需要在微光框架布局内提供视图。但我的观点将是动态的。所以,我每次都需要以编程方式创建一个虚拟视图。对于 Facebook 微光:
<com.facebook.shimmer.ShimmerFrameLayout
android:id="@+id/shimmerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingConstraints">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--add several shimmer placeholder layout -->
<include layout="@layout/shimmer_placeholder_layout"></include>
<include layout="@layout/shimmer_placeholder_layout"></include>
<include layout="@layout/shimmer_placeholder_layout"></include>
</LinearLayout>
</com.facebook.shimmer.ShimmerFrameLayout>
这里shimmer_placeholder_layout 是静态视图。我需要创建动态视图。
【问题讨论】:
-
这回答了你的问题了吗? How to draw LinearLayout in canvas?
-
你试过facebook微光吗?
-
我修改了问题。请查阅。
-
@KiluSs .. 是的,我试过微光。其实我只需要这个给微光。在 facebook 微光中需要手动提供视图。我会修改问题。这样你可以更好地理解,你可以帮助我..