gpt4 book ai didi

android - 我怎样才能镜像整个显示器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:24 26 4
gpt4 key购买 nike

我希望能够镜像我的应用,以便可以在车辆的挡风玻璃上查看它。

我的 XML 有几个嵌套的 LinearLayoutTextViewImageView。目前我正在转换每一个,虽然它是镜像的,但元素的结构不是(顶部的现在是底部的)。

我已经找了好几天了,到目前为止已经尝试了几种失败的方法。

使用矩阵在 X 轴上翻转的动画效果不错,除了它要么返回,要么保持不更新,这不利于与应用交互。

我只是尝试创建一个自定义 LinearLayout 扩展父布局,希望我可以在其 onDraw() 方法中应用 Matrix 但这给了我一个空白屏幕(我必须设置 setWillNotDraw(false); 来触发 onDraw())。

最佳答案

好吧,最终我找到了一个适合我的解决方案(到目前为止,它没有给用户带来任何问题)。

我的解决方案是覆盖 dispatchDraw 以在我的自定义 LinearLayout 中缩放 Canvas 。然后我只需要通过覆盖 dispatchTouchEvent 来翻转触摸事件:

public class CustomContainer extends LinearLayout {

public CustomContainer(Context context) {
super(context);
this.setWillNotDraw(false);
}

public CustomContainer(Context context, AttributeSet attrs) {
super(context, attrs);
this.setWillNotDraw(false);
}

public CustomContainer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.setWillNotDraw(false);
}

@Override
protected void dispatchDraw(Canvas canvas) {
canvas.save(Canvas.MATRIX_SAVE_FLAG);
// Flip the view canvas
if (MyHUDActivity.mHUDMode) canvas.scale(1,-1, getWidth(), getHeight()/2f);
super.dispatchDraw(canvas);
canvas.restore();
}

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// If in HUD mode then flip the touch zones
if (MyHUDActivity.mHUDMode) event.setLocation(event.getX(), getHeight()-event.getY());
return super.dispatchTouchEvent(event);
}
}

关于android - 我怎样才能镜像整个显示器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com