当前位置: 首页 > 知识库问答 >
问题:

Android如何根据屏幕大小设置objectAnimator的valueFrom和valueTo?

华福
2023-03-14

我在替换片段时使用幻灯片动画

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager
            .beginTransaction();
    transaction.setCustomAnimations(
            R.anim.anim_from_left, R.anim.anim_to_right);
    transaction.replace(R.id.frame_drugstore, fragment).commit();

来自左侧的片段动画:

<?xml version="1.0" encoding="utf-8"?>
<set>

    <objectAnimator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="1000"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:propertyName="translationX"
        android:valueType="floatType"
        android:valueFrom="-720"
        android:valueTo="0" />

</set>

右侧片段的动画:

<?xml version="1.0" encoding="utf-8"?>
<set>

    <objectAnimator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="1000"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:propertyName="translationX"
        android:valueType="floatType"
        android:valueFrom="0"
        android:valueTo="720" />

</set>

在我的Galaxy Nexus(1280×720)上,这是根据需要工作的。我正在考虑没有720px宽度屏幕的设备。

如何根据屏幕大小设置objectAnimator的valueFrom和valueTo?

共有3个答案

袁桐
2023-03-14

我认为翻译动画更适合您的场合。您可以尝试以下翻译动画:

这是从左到右的动画:

<?xml version="1.0" encoding="utf-8"?>
<set>
  <translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="-100%"
   android:toXDelta="0"
   android:interpolator="@android:anim/accelerate_decelerate_interpolator"
   android:duration="1000"/>
</set>

这是从右到左的动画:

<?xml version="1.0" encoding="utf-8"?>
<set>
  <translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="0"
   android:toXDelta="100%"
   android:interpolator="@android:anim/accelerate_decelerate_interpolator"
   android:duration="1000"/>
</set>
司空赞
2023-03-14

由于您需要轻松更改ObjectAnimator中的值,我认为您最好使用以下内容以编程方式创建它:

ObjectAnimator oa=ObjectAnimator。卸载(menuFragmentContainer,“xFraction”,0,0.25f)

这条线是从这里借来的。

有很多方法可以获得设备的屏幕宽度,但最简单的方法在这里详细介绍

伊锦
2023-03-14

以编程方式获取屏幕尺寸

Display display = ((Activity) yourContext).getWindowManager ().getDefaultDisplay ();
            Point size = new Point ();
            display.getSize (size);
            int screenWidth = size.x;
            int screenHeight = size.y;
 类似资料:
  • 我想设计下面的UI。为了达到同样的效果,我试着使用拖拉。但问题是:在不同的屏幕尺寸上,可绘制图像的显示方式不同。屏幕尺寸为6.0时:可抽片呈椭圆形,下方为圆形。 用户界面设计尝试实现: 内容和布局: 线性布局可绘制: bg_布局: 主要的类别:

  • 问题内容: Bootstrap 3在响应实用程序中具有不错的CSS类,使我可以根据屏幕分辨率隐藏或显示一些块 我在CSS文件中有一些要根据屏幕分辨率应用或不应用的样式规则。 我该怎么做? 我打算将所有CSS文件最小化到生产部署中的一个,但是如果没有其他解决方案,而没有针对不同屏幕分辨率的单独CSS文件,则可以避免这种情况。 问题答案: 使用查询。他们服务于这个确切的目的。以下是它们如何工作的示例:

  • 问题内容: CSS nob在这里… 我正在研究一个响应式框架,并想象如何完成不同的任务。 根据屏幕的大小,它们具有添加到body标签的类,例如: .PhoneVisible,.DesktopVisible等… 他们也有将按钮链接到的类: .btn,小按钮,中按钮,大按钮 我对如何更改CSS感到困惑。IE浏览器类似: 您是否必须单独设置各种选项? 即.PhoneVisible .MyButtonOp

  • 我有一个可折叠的导航条构建与bootstrap 4。我使用了col-sm-2和navbar-expand-sm来使它以相同的屏幕尺寸折叠成一个汉堡包,它应该占据整个宽度。 问题是在sm屏幕尺寸以上,我希望它有h-100,所以它是一个侧栏,但作为sm/xs,我希望它只是占用拨动按钮所需的空间。 有没有办法用bootstrap来实现这一点,或者我被困在jquery中添加/删除h-100类?

  • 我正在制作一个网站,它显示一定数量的文本。例如: “Lorem ipsum dolor sit amet,concetetur adipiscing elit。Suspendisse imperdiet venenatis nulla,sed viverra arcu eget ornare。Morbi commodo,ullamcorper neque egestas,est est iacul

  • 我正在使用一个库从url获取图像并将其作为位图图像保存到缓存中。但是当我检索该图像时,它非常小。如何根据手机屏幕增加位图图像的高度和宽度?这是创建位图的类。