标签: android-animation

开发Android主屏幕

我正在开发一款带有主屏幕的应用.此主屏幕应该像Android主屏幕一样,您可以通过在触摸屏上投掷手指在多个视图之间切换.

解决方案很简单.我有3个视图实例,,当前视图.我从之前初始化的viewflipper中获取了这个实例.由于我有一个HTC G1,我的屏幕宽320像素,高480像素.

想象一下,当您触摸屏幕时,您会捕捉动作下移动作事件的下降值.然后移动手指,屏幕应该以完全相同的方式移动,因此您必须重新计算视图的位置.到目前为止,它对我有用,但我面临一个奇怪的问题.当您触摸右视图而不移动手指但将其保持在屏幕上不到一秒时,视图将消失并显示左视图.

这是我的代码:

public class MainActivity extends Activity implements OnTouchListener{

    private ViewFlipper vf;
    private float downXValue;
    private View view1, view2, view3;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        this.vf = (ViewFlipper) findViewById(R.id.flipper);

        if(this.vf != null){
             this.view1 = vf.getChildAt(0);
             this.view2 = vf.getChildAt(1);  
             this.view3 = vf.getChildAt(2);
             vf.setDisplayedChild(0);
         }      

         LinearLayout layMain = (LinearLayout) findViewById(R.id.layout_main);
         layMain.setOnTouchListener((OnTouchListener) this);
    }

    public boolean onTouch(View v, MotionEvent arg1) {

         final View currentView = …
Run Code Online (Sandbox Code Playgroud)

android viewflipper android-animation

15
推荐指数
1
解决办法
1万
查看次数

如何在onCreate之后立即启动动画?

我正在关注http://developer.android.com/guide/topics/graphics/view-animation.html#frame-animation并进行细微更改.我决定制作动画循环并希望它从一开始就开始.

我的动画是drawable/listening.xml:

<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
    android:drawable="@drawable/l_01"
    android:duration="200" />
<item
    android:drawable="@drawable/l_02"
    android:duration="200" />
<item
    android:drawable="@drawable/l_03"
    android:duration="200" />
</animation-list>
Run Code Online (Sandbox Code Playgroud)

和我的初始代码:

 @Override public void onWindowFocusChanged(boolean hasFocus)  { 
      super.onWindowFocusChanged(hasFocus); 
      animImg = (ImageView)findViewById(R.id.listen_anim);
      animImg.setBackgroundResource(R.drawable.listening);
      anim = (AnimationDrawable) animImg.getBackground(); 
      anim.start();
 };
Run Code Online (Sandbox Code Playgroud)

我看到的只是第一帧而没有其他图像.

android android-animation

15
推荐指数
4
解决办法
3万
查看次数

NineOldAndroids:设置视图枢轴

我正在使用奇妙的框架NineOldAndroids,但我找不到任何东西来设置我的动画视图的轴心.具体来说,我试图做一个scaleX+ scaleY动画与左上边缘的支点,所以pivotX= 0和pivotY= 0的Honeycomb和超越,我只想设置myView.setPivotX(0)myView.setPivotY(0),但如何做到这一点与NineOldAndroids预蜂窝设备?我尝试了以下方法:

AnimatorSet set = new AnimatorSet();
set.playTogether(
    ObjectAnimator.ofFloat(myView, "pivotX", -(myView.getWidth() / 2), -(myView.getWidth() / 2)),
    ObjectAnimator.ofFloat(myView, "pivotY", -(myView.getHeight() / 2), -(myView.getHeight() / 2)),
    ObjectAnimator.ofFloat(myView, "scaleX", 0, 1),
    ObjectAnimator.ofFloat(myView, "scaleY", 0, 1),
    ObjectAnimator.ofFloat(myView, "alpha", 0, 1)
);
set.setDuration(1000).start();
Run Code Online (Sandbox Code Playgroud)

但它不起作用,枢轴停留在视图的中心.

你能帮我吗?

谢谢 ;)

android android-animation

15
推荐指数
2
解决办法
6895
查看次数

Android使用动画增长LinearLayout

我正在尝试使用动画来使布局显示在屏幕上.我们的想法是布局将从0开始,并增长到100%.

我真的遇到了麻烦,需要一些帮助.由于某种原因,不执行动画.

这是我的动画XML文件

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

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="0.0"
        android:toXScale="1"
        android:fromYScale="1.0"
        android:toYScale="1.0"
        android:fillAfter="false"
         />

</set>
Run Code Online (Sandbox Code Playgroud)

布局文件非常基本,设计如下

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

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
        android:id="@+id/dialog"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:orientation="vertical"
        android:layout_centerVertical="true"
        android:background="@drawable/border">
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Phone"
            android:id="@+id/textView"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Address"
            android:id="@+id/textView1"/>
    <Button android:id="@+id/btn1"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="Action 1"
            />
    <Button android:id="@+id/btn2"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="Action 2"
            />
</LinearLayout>
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Animate"
        android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
        android:onClick="animate"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我的活动代码也非常基础

public class MyActivity extends Activity implements Animation.AnimationListener{

@Override
public void …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-layout

15
推荐指数
2
解决办法
4万
查看次数

循环进度条(用于倒数计时器)

好吧,我有一个15秒的倒数计时器,完全正常,我想为该计时器制作一个自定义循环进度条.

我想创建一个完整的圆圈,当计时器停止时,取出"切片(圆圈)"直到不再有圆圈.

我宁愿自己制作形状而不是使用预制图像,因为我希望任何手机的质量都很好.我该怎么做?谢谢!

xml android android-animation countdowntimer

15
推荐指数
2
解决办法
3万
查看次数

如何将ActionBar与NavigationDrawer一起滑动

我想要做的是ActionBar随着NavigationDrawer抽屉打开时滑动.我目前没有使用任何第三方库,如果可能的话,我想保持这种方式.我只需要一个方法的实现,如:getActionBarView.slide(dp);

这是我目前用来创建的代码NavigationDrawer:

mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {

    public void onDrawerClosed(View view) {
        invalidateOptionsMenu();

        // calling onPrepareOptionsMenu() to hide action bar icons
    }

    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {
        if (getDeviceType(getApplicationContext()) == DEVICE_TYPE_PHONE) {
            drawerLayout.setScrimColor(Color.parseColor("#00FFFFFF"));
            float moveFactor = (listView.getWidth() * slideOffset);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                all_menu_container_parent.setTranslationX(moveFactor);
            } else {
                TranslateAnimation anim = new TranslateAnimation(lastTranslate, moveFactor, 0.0f, 0.0f);
                anim.setDuration(0);
                anim.setFillAfter(true);
                all_menu_container_parent.startAnimation(anim);

                lastTranslate = moveFactor;
            }
        }
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java android android-animation android-actionbar navigation-drawer

15
推荐指数
1
解决办法
1万
查看次数

android-简单淡出淡出动画为viewflipper

我是android新手,我不太了解android动画.我有一个viewflipper,我想在它内部的图像之间进行动画处理.这是代码:

 runnable = new Runnable() {
           public void run() {
            handler.postDelayed(runnable, 3000);
            imageViewFlipper.setInAnimation(fadeIn);
            imageViewFlipper.setOutAnimation(fadeOut);
            imageViewFlipper.showNext();
           }
          };
          handler = new Handler();
          handler.postDelayed(runnable, 500);
    }
Run Code Online (Sandbox Code Playgroud)

2动画文件不好,它们的动画非常糟糕.我只需要一个代码淡出前面的图像并淡入下一个图像,并对其中的所有图像执行相同的操作.

任何人都可以帮我吗?

谢谢

android android-animation android-viewflipper

15
推荐指数
2
解决办法
1万
查看次数

android棒棒糖动画故障

在运行Android 5(Lollipop)的设备中,我对默​​认布局动画有一种奇怪的行为.我正在使用具有多个Fragments的活动,这些活动在运行时使用默认的片段管理器进行替换.当替换旧片段时,我想使用动画来实现流畅的ui流.在pre-lollipop设备上,动画的工作方式与预期的一样,但在运行最新操作系统的设备上,片段故障之间的动画:

小故障屏幕截图

我尝试使用默认动画xml标记

android:animateLayoutChanges="true"
Run Code Online (Sandbox Code Playgroud)

因为它不起作用,我使用此代码更改它没有任何效果

mTransaction = mManager.beginTransaction();
        mTransaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
        mTransaction.remove(mFragment);
        mTransaction.add(R.id.container, mFragment, "fragment");
        mTransaction.commit();
Run Code Online (Sandbox Code Playgroud)

我已经在不同的设备和Android模拟器中测试了代码.奇怪的是,它在运行pre-lollipop的设备运行最新操作系统(5.0.1)的android模拟器的预期效果.但它不适用于运行Android 5.0的Nexus 4和Nexus 5等设备

有什么建议?任何帮助?

提前致谢

编辑:

它似乎是一个错误取决于使用的设备.我已经在不同设备(三星Galaxy S4,HTC(One mini2,One M8,Desire S),Nexus 4和5)上测试了代码,它只出现在谷歌nexus设备上.

编辑

解决动画问题的一种解决方法是通过以下方法禁用硬件加速

<application android:hardwareAccelerated="false">

应用Manifest中的标签.但使用这个使应用程序非常慢.

解决此问题的解决方案是为活动设置背景图像/颜色/可绘制.看到

android android-animation android-layout android-fragments android-5.0-lollipop

15
推荐指数
1
解决办法
2750
查看次数

如何在Android中顺畅地从左向右滑动ImageView?

我需要ImageView使用平滑的动画从屏幕的左侧到右侧制作幻灯片(我想ImageView在转换过程中看到它)我尝试使用以下代码:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;

camion.animate()
    .translationX(width)
    .setDuration(2000)
    .setInterpolator(new LinearInterpolator())
    .setListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            //camion.setVisibility(View.GONE);
        }
    });
Run Code Online (Sandbox Code Playgroud)

ImageView移动,但在动画laggy,而不是光滑如我想.我在代码上做错了什么?

java android android-animation

15
推荐指数
3
解决办法
3万
查看次数

将变形动画从箭头反转为复选标记

我试图实现变形效果,当用户点击myButton时,ImageView内的图像应该从箭头变为复选标记.当他再次点击它时,该过程应该反转:复选标记应变为箭头.

这就是我所做的:

animated_vector.xml:

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/vector_upvote">

    <target
        android:name="rotationGroup"
        android:animation="@anim/rotate_a_to_b" />

    <target
        android:name="upvote"
        android:animation="@animator/animator_upvote_to_checkmark" />
</animated-vector>
Run Code Online (Sandbox Code Playgroud)

animator_upvote_to_checkmark.xml:

<objectAnimator
    android:duration="250"
    android:propertyName="pathData"
    android:valueFrom="@string/svg_upvote"
    android:valueTo="@string/svg_checkmark"
    android:valueType="pathType"
    android:repeatMode="reverse" />
Run Code Online (Sandbox Code Playgroud)

这就是我播放动画的方式:

            Drawable drawable = upVote.getDrawable();
            if (drawable instanceof Animatable) {

                ((Animatable) drawable).start();
            }
Run Code Online (Sandbox Code Playgroud)

这会将箭头变为复选标记,如何反转过程?

android android-animation android-vectordrawable

15
推荐指数
2
解决办法
7341
查看次数