Java 如何将相对线旋转180度?
我正在尝试制作一个应用程序,它是为两个人设计的,两个人都能看到一半,所以我需要垂直翻转一半。我使用的是一个Java 如何将相对线旋转180度?,java,android,android-relativelayout,Java,Android,Android Relativelayout,我正在尝试制作一个应用程序,它是为两个人设计的,两个人都能看到一半,所以我需要垂直翻转一半。我使用的是一个LinearLayout,里面有两个RelativeLayouts,其中有layout\u weight=“1” 问题是,我不知道怎么做这个翻转。显然,android:rotate仅在版本11+(3.0+)中可用,但我希望它至少支持2.2 在阅读了其他相关的问题之后,我尝试了各种各样的方法,但似乎都不管用。我试图扩展RelativeLayout并重写onDraw函数,但它似乎没有任何作用。这
LinearLayout
,里面有两个RelativeLayout
s,其中有layout\u weight=“1”
问题是,我不知道怎么做这个翻转。显然,android:rotate
仅在版本11+(3.0+)中可用,但我希望它至少支持2.2
在阅读了其他相关的问题之后,我尝试了各种各样的方法,但似乎都不管用。我试图扩展RelativeLayout并重写onDraw
函数,但它似乎没有任何作用。这是我的密码:
public class FlippedRelativeLayout extends RelativeLayout
{
public FlippedRelativeLayout(Context context)
{
super(context);
}
public FlippedRelativeLayout(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public FlippedRelativeLayout(Context context, AttributeSet attrs,
int defStyle)
{
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.save();
canvas.rotate(180);
super.onDraw(canvas);
canvas.restore();
}
}
我很高兴能得到任何帮助,谢谢 非常有趣的问题 您可以尝试创建两个部分透明的
活动
-s,显示它们自己的同一布局xml副本,然后根据轮到谁移动,切换活动的“z顺序”
Activity
A将是“您自己的”活动,它的上半部分透明,下半部分为RelativeLayout
。它也会有一个正常的屏幕方向,比如:setRequestedOrientation(ActivityInfo.screen\u orientation\u crative)
活动
B将是“你的对手活动”。它还有一个透明的上半部和一个与底部相同的RelativeLayout
。但是,它会有一个反转的屏幕方向,比如:setRequestedOrientation(ActivityInfo.screen\u orientation\u REVERSE\u cartive)
。这意味着活动
B的透明部分将与活动
A的相对部分重叠,而活动
A的透明部分将与活动
B的相对部分重叠
你也可以输入相应的或其他合适的值,这样你就不会在“再次启动”时创建你的活动的新实例,即将“make-a-move-ticket”传递给对手
不幸的是,(Android 2.3.something)和您明确地请求API级别8
这种方法的巧妙之处在于,由于一次只能有一个活动具有焦点(因此,接受输入),因此您将自动获得一个状态机用于用户输入:在您移动之前,对手将无法与他/她的棋盘交互,反之亦然
希望这至少能给你一些想法
干杯 试试这个:
public class MyRelativeLayout extends RelativeLayout {
public MyRelativeLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyRelativeLayout(Context context) {
super(context);
init();
}
private void init() {
setStaticTransformationsEnabled(true);
}
@Override
protected boolean getChildStaticTransformation(View child, Transformation t) {
t.setTransformationType(Transformation.TYPE_MATRIX);
Matrix m = t.getMatrix();
m.reset();
m.postRotate(180, child.getWidth() / 2.0f, child.getHeight() / 2.0f);
return true;
}
}
结果是:
RelativeLayout作为其父类ViewGroup,默认情况下不调用onDraw()。我正在寻找一个解决方案。嗯,我对安卓非常陌生,也许使用RelativeLayout不适合这些东西?我只是觉得它给了我在屏幕上放置元素时最大的灵活性,在这种情况下的“优势”也是劣势。。。这两个人不轮流,他们只是在适当的时候点击他们的角色>>,但这是一个有趣的解决方案,我从来没有想过直接在手机上“翻转”一个角色它可以工作!但子视图上的单击区域保持在与未旋转相同的位置。我怎么解决这个问题?