我正在创建一个我想要的相对布局,应该从上面滑到布局,所以这里是我所做的
但是
当视图被创建时,布局在其正确的位置,显示任何来自屏幕顶部的滑动效果
public class OverlayActivity extends Activity implements View.OnClickListener {
RelativeLayout question_box;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overlay);
// Slide Up the INVISIBLE layout so that I can call it by animation back to its original position
question_box = findViewById(R.id.question_box);
question_box.animate().translationY(-question_box.getHeight());
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
public void animateInObjects() {
question_box.setVisibility(View.VISIBLE);
question_box.animate().setDuration(1000).translationY(0);
}
@Override
public void onClick(View v) {
//Some Code
}
@Override
protected void onStop() {
super.onStop();
finish();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
animateInObjects();
super.onWindowFocusChanged(hasFocus);
}
}
布局
<RelativeLayout
android:id="@+id/question_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_marginTop="5dp"
android:layout_below="@+id/ad_view_container"
android:visibility="invisible">
<TextView
android:id="@+id/question"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/questiontext"
android:paddingStart="20dp"
android:paddingTop="7dp"
android:paddingEnd="20dp"
android:paddingBottom="20dp"
android:text="@string/sample_question"
android:textAlignment="center"
android:textColor="@color/text_quest"
android:textSize="23sp" />
<View
android:id="@+id/center_vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_centerVertical="true" />
<LinearLayout
android:id="@+id/cover_opt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/question"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:background="@drawable/main_layout">
<Button
android:id="@+id/opt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="1dp"
android:layout_marginHorizontal="2dp"
android:background="@android:color/transparent"
android:text="@string/sample_number"
android:textAlignment="center"
android:textColor="@color/text_quest"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/cover_opt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/question"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@drawable/main_layout">
<Button
android:id="@+id/opt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="1dp"
android:layout_marginHorizontal="2dp"
android:background="@android:color/transparent"
android:text="@string/sample_number"
android:textAlignment="center"
android:textColor="@color/text_quest"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/cover_opt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/question"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:layout_marginEnd="15dp"
android:background="@drawable/main_layout">
<Button
android:id="@+id/opt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="1dp"
android:layout_marginHorizontal="2dp"
android:background="@android:color/transparent"
android:text="@string/sample_number"
android:textAlignment="center"
android:textColor="@color/text_quest"
android:textSize="18sp" />
</LinearLayout>
</RelativeLayout>
这是activity的主题
<style name="Theme.Lockscreen" parent="Theme.AppCompat.NoActionBar">
<item name="android:background">#33000000</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>
您可以尝试在onCreate方法中动画视图。首先,视图尚未绘制,您得到的是getheight=0
。因此,在使用view.GetViewTreeObserver().AddongLoballayoutListener
绘制视图时,您必须等待才能对其进行动画
您需要在onCreate()中添加以下内容:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
// Slide Up the INVISIBLE layout so that I can call it by animation back to its original position
question_box = findViewById(R.id.question_box);
question_box.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (question_box.getHeight() != 0)
question_box.animate().translationY(-question_box.getHeight());
}
});
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
本文向大家介绍Android RelativeLayout 相对布局,包括了Android RelativeLayout 相对布局的使用技巧和注意事项,需要的朋友参考一下 示例 RelativeLayout是一个ViewGroup以相对位置显示子视图的。默认情况下,所有子视图都绘制在布局的左上角,因此您必须使用中提供的各种布局属性来定义每个视图的位置RelativeLayout.LayoutPar
在上一节中我们讲到了 LinearLayout,这也是大家学到的第一个布局方式。它支持将多个 View 通过线性的方式(水平或垂直)组合起来,其中最实用的就是 weight 属性,用好 weight 可以让你的线性布局更灵活美观。 然而,在上一节的例子中我们发现,如果需要在多个方向上进行布局,就要嵌套多个 LinearLayout,可以想象如果我们的 UI 足够复杂,那么从工作量和性能上都将是一场
另外一个使用相对布局的方式是对节点使用origin和offset属性来指定相对另外一个节点的位置。 [ Left ] -> [ Right ] { origin: Left; offset: 2,1; } +------+ | Left | +------+ | | +-------+ +------------> | Right |
![我已经以线性布局(下面给出的代码)对其进行了编码,但想知道如何使用相对布局进行相同的操作,或者这只是一个考虑到布局的坏主意? 线性布局 - ][1] 使用相对布局时,我的ImageView不会显示在屏幕上:
本文向大家介绍相对布局和绝对布局,position:relative和obsolute。相关面试题,主要包含被问及相对布局和绝对布局,position:relative和obsolute。时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 相对定位relative: 如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
我一直使用两个布局文件使用constraintlayout动画 然而,在布局中,我只更改了两个约束。我决定尝试以编程方式这样做,并且这样做了,这起作用了。 然而,这不是动画。我试着像之前在第一个中那样进行动画(这次只使用了一个布局文件),结果是这样的 这与第二个一样工作,但没有显示动画,新的约束立即跳入适当的位置。有没有什么方法可以让动画工作不使用两个layoyuts?还是我做错了什么?多谢了。