我有一个自定义视图,我使用转换.到目前为止好,功能一样setRotationY(),setScaleX(),setTranslationY()甚至getMatrix()按预期工作,我能够操纵我看来,它显示的罚款.我撞墙的地方是,之后有很多功能表现得很奇怪.例如函数getHitRect()返回完全奇怪的值!这对我的触摸事件没有帮助.
我试图重载该功能,但它仍然远没有工作,尤其是使用旋转或缩放(翻译工作正常).我认为这与矩阵以子坐标表示的事实有关,那么如何在父坐标中得到它呢?
@Override
public void getHitRect(Rect outRect){
RectF rect = new RectF();
rect.top = (float) this.getTop();
rect.bottom = (float) this.getBottom();
rect.left = (float) this.getLeft();
rect.right = (float) this.getRight();
this.getMatrix().mapRect(rect);
rect.round(outRect);
}
Run Code Online (Sandbox Code Playgroud)
我可以直接从某个函数获得更直接的值吗?像新的高度,宽度,顶部或底部.
我有一个简单的位图,我在画布中绘制并使用矩阵旋转.
我遇到的问题是,使用硬件加速时,边缘在旋转时不会消除锯齿(这与硬件加速关闭时完美配合).当然,像"setDrawFilter"这样的东西是无用的,因为在打开硬件加速时它们会被忽略!
canvas.setDrawFilter(new PaintFlagsDrawFilter(1, Paint.ANTI_ALIAS_FLAG));
Run Code Online (Sandbox Code Playgroud)
我错过了什么或只是硬件渲染方法的限制?还有其他选择吗?