从屏幕底部动画部分视图

时间:2014-01-22 03:17:41

标签: java android

http://i.imgur.com/QSuWCtl.png

以上是相对布局,我希望能够仅使用箭头标记使其上升。

通常我会使用2D引擎来做这样的事情(来自制作游戏)。我不习惯观看,但它们似乎有点限制(就像setY在某些设备上不起作用......或者在屏幕上放置视图调整它们的大小)

无论如何,如果将这一半放在屏幕上然后让它进入视野?它很容易在iPhone上运行,在Android上看起来很麻烦(有些教程有很多代码,我只想要简单的东西......)

2 个答案:

答案 0 :(得分:0)

试试这个我的动画:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="100%p"
android:toYDelta="50%p" />

现在给出你的底部布局样式:

 android:layout_alignParentBottom="true"

现在使用以下方法提供您的布局动画:

private LinearLayout llShareApp;
llShareApp = (LinearLayout) findViewById(R.id.llShareApp);
    llShareApp.setAnimation(AnimationUtils.loadAnimation(this,
                R.anim.bottom_top));

答案 1 :(得分:0)

通过XML制作动画并不容易,因为Android拥有如此多的屏幕尺寸。首先,您需要计算相对布局部分的高度以及整个屏幕高度,然后您可以获得要将部件提升到屏幕并执行动画的实际高度。

以下是示例代码:

布局XML:

<LinearLayout 
    android:id="@+id/layout_order_types"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_below="@+id/layout_mask"
    android:visibility="invisible" >

    <ImageView 
        android:id="@+id/image_all_order"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        android:src="@drawable/all_order" />
    ..............         
    ..............
</LinearLayout>

活动代码:

// Whole screen height
int heightPixels = getApplicationContext().getResources().getDisplayMetrics().heightPixels;

View layoutOrderTypes = findViewById(R.id.layout_order_types);
layoutOrderTypes.setVisibility(View.VISIBLE);

// slide in from bottom animation
Animation inFromBottom = new TranslateAnimation(
        Animation.ABSOLUTE, 0.0f, 
        Animation.ABSOLUTE, 0.0f, 
        Animation.ABSOLUTE, heightPixels, 
        Animation.ABSOLUTE, (heightPixels - layoutOrderTypes.getHeight() 
                - DisplayUtil.getStatusBarHeight(this)));
inFromBottom.setDuration(300);

// start the animation
layoutOrderTypes.startAnimation(inFromBottom);

DisplayUtil.java

public static int getStatusBarHeight(Context context) { 
      int result = 0;
      int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
      if (resourceId > 0) {
          result = context.getResources().getDimensionPixelSize(resourceId);
      } 
      return result;
}