android– 如何镜像整个显示?

android– 如何镜像整个显示?,第1张

概述我希望能够镜像我的应用程序,以便可以在车辆的挡风玻璃上查看.我的XML有几个嵌套的LinearLayouts,TextViews和ImageViews.目前我正在改造每一个,虽然它是镜像的,但元素的结构却不是(顶部的内容现在位于底部).我一直在寻找几天,到目前为止已经尝试了几种失败的方法.使用矩阵在X轴

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

我的XML有几个嵌套的linearLayouts,TextVIEws和ImageVIEws.目前我正在改造每一个,虽然它是镜像的,但元素的结构却不是(顶部的内容现在位于底部).

我一直在寻找几天,到目前为止已经尝试了几种失败的方法.

使用矩阵在X轴上翻转的动画有效,除了它还原后还是保持不更新,这对于与应用程序交互没有好处.

我只是尝试创建一个自定义的linearLayout来扩展父类,希望我可以在它的onDraw()方法中应用一个矩阵,但这会给我一个空白的屏幕(我必须设置setwillNotDraw(false);来点击onDraw()) .

解决方法:

最终我找到了一个适合我的解决方案(到目前为止,它对用户没有任何问题).

我的解决方案是覆盖dispatchDraw以在我的自定义linearLayout中缩放画布.然后我只需要通过覆盖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 – 如何镜像整个显示?全部内容,希望文章能够帮你解决android – 如何镜像整个显示?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存