我正在开发一款带有主屏幕的应用.此主屏幕应该像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) 我正在关注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)
我看到的只是第一帧而没有其他图像.
我正在使用奇妙的框架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)
但它不起作用,枢轴停留在视图的中心.
你能帮我吗?
谢谢 ;)
我正在尝试使用动画来使布局显示在屏幕上.我们的想法是布局将从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) 好吧,我有一个15秒的倒数计时器,完全正常,我想为该计时器制作一个自定义循环进度条.
我想创建一个完整的圆圈,当计时器停止时,取出"切片(圆圈)"直到不再有圆圈.
我宁愿自己制作形状而不是使用预制图像,因为我希望任何手机的质量都很好.我该怎么做?谢谢!
我想要做的是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
我是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 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
我需要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,而不是光滑如我想.我在代码上做错了什么?
我试图实现变形效果,当用户点击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)
这会将箭头变为复选标记,如何反转过程?