解决思路
因为Android 的绘制Canvas 是从根层往下遍历,所以我们在dispatchDraw
方法块里面对Canvas 进行镜像旋转即可。
当时没有回答上来,其实大概知道思路,但是不知道怎么对Canvas 进行水平反转,就没有说这个方案。可惜了。
代码:
package com.example.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
/**
* =======================================================================================
* Author:caoxinyu
* createTime:2021_6/10/21_4:41 PM
* intent:
* revision history:
* =======================================================================================
*/
public class MirrorFrameLayout extends FrameLayout {
public MirrorFrameLayout(@NonNull Context context) {
super(context);
}
public MirrorFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MirrorFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void dispatchDraw(Canvas canvas) {
canvas.scale(-1, 1, getWidth() / 2, getHeight() / 2);
super.dispatchDraw(canvas);
}
}
参考:
https://blog.csdn.net/qq_21445563/article/details/76228714