Android fragment退出view时怎么设置退出动画?求救... android动画fragment退出动画animetion 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * 切换Fragment * @param fragment * @param isFirst */ protected void change(Fragment fragment, boolean isFirst) { FragmentTransaction t = this.fragmentManager.beginTransaction(); setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out, t); t.replace(R.id.container, fragment); if (!isFirst) { t.addToBackStack(null); } t.commit(); }R.anim.push_left_in:<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="800" /></set>上面是我写的,用法就是这样,具体的你再斟酌一下! 你那不是替换吗!我要的是退出动画呀。getFragmentManager().popBackStack();//退出 但是我这个并不是两个fragment同时滑动,也就是说一进一出,所以图2进入动画有,但退出动画就没有了,怎么设置? 简单的动画就可以实现了啊。针对你的问题粗略的写了个,你自己优化下。public class MainActivity extends Activity { private ObjectAnimator outAnimator, inAnimator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //你的两个布局 View viewOut = LayoutInflater.from(this).inflate( R.layout.activity_main, null); View viewIn = LayoutInflater.from(this).inflate(R.layout.XXX, null); // 初始化动画 outAnimator(viewOut); inAnimator(viewIn); //监听动画过程 viewOut.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { outAnimator.start(); outAnimator.addListener(new AnimatorListener() { // 如果要2个动画一起动,那么实现这个方法 public void onAnimationStart(Animator animation) { // TODO Auto-generated method stub inAnimator.start(); } @Override public void onAnimationRepeat(Animator animation) { // TODO Auto-generated method stub } // 如果要先让出动画完成后,再实现进动画;那么用这个方法 @Override public void onAnimationEnd(Animator animation) { // TODO Auto-generated method stub // inAnimator.start(); } @Override public void onAnimationCancel(Animator animation) { // TODO Auto-generated method stub } }); } }); } // 出动画.注意v.getWidth()是你布局的宽度,也可以说是你手机的屏幕宽度. public void outAnimator(View v) { outAnimator = ObjectAnimator.ofFloat(v, "translationX", 0.0f, v.getWidth()); outAnimator.setInterpolator(new LinearInterpolator()); outAnimator.setDuration(500); } private void inAnimator(View v) { inAnimator = ObjectAnimator.ofFloat(v, "translationX", -v.getWidth(), 0.0f); inAnimator.setInterpolator(new LinearInterpolator()); inAnimator.setDuration(500); }} 晕,表情是怎么上去的。对了,上面的动画监听里面还可以添加渐变等等效果,也就是集成动画,不过有点取巧,呵呵,可以用AnimatorSet这个类去搞,里面有个animatorSet.playTogether(items);这个方法可以把你想要的动画全部加载进去。顺便问句,你的项目是 本地,在线 双用的吗? 你的效果就是类似Gallery的效果是吧? 目前还没有做在线的,效果跟viewpage差不多吧!但是左图里面本身就有一个了,现在实现的只有右图的进入动画,左图的一点效果都没有。fragManage = MainActivity.this.getSupportFragmentManager(); FragmentTransaction transion = fragManage.beginTransaction(); FragmentInfoContent infocon = new FragmentInfoContent( MainActivity.this, play, musicName, main_top, scroll, cursor_layout, pager,transion); main_top.setVisibility(View.GONE); scroll.setVisibility(View.GONE); cursor_layout.setVisibility(View.GONE); pager.setVisibility(View.GONE); transion.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out); transion.replace(R.id.activity_lin_title, infocon); transion.addToBackStack(null); //transion.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);// 设置动画效果 transion.commit();代码里的隐藏部分,是因为无论哪个界面都要看到背景图,所以两个view的背景都是透明的,这样一来左图的内容就先隐藏了,不然右图替换过来,还会看到左图的内容。 // 如果要2个动画一起动,那么实现这个方法public void onAnimationStart(Animator animation) {// TODO Auto-generated method stubinAnimator.start();}// 初始化动画outAnimator(viewOut);inAnimator(viewIn);左图的初始化了没,监听器里面做,顺便说下,动画可以做成res目录下面的.xml文件。你可以先新建一个新文件来测试下,应该是没有问题的,如果还需要反向动画的话,那么在动画里面的参数改下就OK了。outAnimator.addListener(new AnimatorListener() 可以放在public void outAnimator(View v) 方法里面。 你好,要不这样,我发给你一个我开始做的时候,写的一个类似的小demo,你帮我看看怎么实现好么? 要做成,xml文件的话,需要在res 目录下新建文件夹animator,注意不是anim,关于这个你可以去找找资料。这里说太浪费时间了。呵呵。等过年放假的时候,我准备写几篇总结的博客,届时希望捧个场。 兄弟,你新建一个APP然后做两个布局,然后试验我给的代码,这个很简单啊。就是一个TranslationX而已。当然,里面还可以加上渐变效果,我现在也在做项目,呵呵,偷空上来看看的。加油! 你的代码都不是fragment的呀!直接两个view跳转的,我的是fragment的 fragment 的布局文件 R.layout.XXX 至于底部那个东西,可以做个popupWindow来实现。View viewIn = LayoutInflater.from(this).inflate(R.layout.XXX, null); //this指的是Context//R.layout.XXX 由你掌控,一般是子布局,适配器里面经常用到的啊。当然也有addView的时候。android里面貌似除了4大组件 + Intent,像控件,布局这些都是View或ViewGroup.你项目里的布局文件.xml就是View.这个动画很简单了,你先把思路捋清楚吧。 JNI如何才可以读data/app目录下自身APK文件的大小? 在android使用glTexSubImage2D()的疑问 Android在VM下如何联网 MediaPlayer 问题 求解释 怎样在activity中响应view类中的触屏事件? 请教:Android如何实现微秒级的定时 超级菜鸟求解 播放网络视频时MediaPlayer.prepare()异常,求助 为啥我的模拟器和书上的截图不一样 能否通过shell命令操作传感器? fastJson怎么统一处理泛型数据 android Socket请求网络一次返回多条数据怎么解析
* 切换Fragment
* @param fragment
* @param isFirst
*/
protected void change(Fragment fragment, boolean isFirst) {
FragmentTransaction t = this.fragmentManager.beginTransaction();
setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out, t);
t.replace(R.id.container, fragment);
if (!isFirst) {
t.addToBackStack(null);
}
t.commit();
}R.anim.push_left_in:<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="800" /></set>
上面是我写的,用法就是这样,具体的你再斟酌一下!
getFragmentManager().popBackStack();//退出
但是我这个并不是两个fragment同时滑动,也就是说一进一出,所以图2进入动画有,但退出动画就没有了,怎么设置?
public class MainActivity extends Activity { private ObjectAnimator outAnimator, inAnimator; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //你的两个布局
View viewOut = LayoutInflater.from(this).inflate(
R.layout.activity_main, null);
View viewIn = LayoutInflater.from(this).inflate(R.layout.XXX, null);
// 初始化动画
outAnimator(viewOut);
inAnimator(viewIn);
//监听动画过程
viewOut.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
outAnimator.start();
outAnimator.addListener(new AnimatorListener() { // 如果要2个动画一起动,那么实现这个方法
public void onAnimationStart(Animator animation) {
// TODO Auto-generated method stub
inAnimator.start();
} @Override
public void onAnimationRepeat(Animator animation) {
// TODO Auto-generated method stub } // 如果要先让出动画完成后,再实现进动画;那么用这个方法
@Override
public void onAnimationEnd(Animator animation) {
// TODO Auto-generated method stub
// inAnimator.start();
} @Override
public void onAnimationCancel(Animator animation) {
// TODO Auto-generated method stub }
});
}
});
} // 出动画.注意v.getWidth()是你布局的宽度,也可以说是你手机的屏幕宽度.
public void outAnimator(View v) {
outAnimator = ObjectAnimator.ofFloat(v, "translationX", 0.0f,
v.getWidth());
outAnimator.setInterpolator(new LinearInterpolator());
outAnimator.setDuration(500);
} private void inAnimator(View v) {
inAnimator = ObjectAnimator.ofFloat(v, "translationX", -v.getWidth(),
0.0f);
inAnimator.setInterpolator(new LinearInterpolator());
inAnimator.setDuration(500);
}
}
顺便问句,你的项目是 本地,在线 双用的吗?
目前还没有做在线的,效果跟viewpage差不多吧!但是左图里面本身就有一个了,现在实现的只有右图的进入动画,左图的一点效果都没有。fragManage = MainActivity.this.getSupportFragmentManager();
FragmentTransaction transion = fragManage.beginTransaction();
FragmentInfoContent infocon = new FragmentInfoContent(
MainActivity.this, play, musicName, main_top, scroll,
cursor_layout, pager,transion); main_top.setVisibility(View.GONE);
scroll.setVisibility(View.GONE);
cursor_layout.setVisibility(View.GONE);
pager.setVisibility(View.GONE); transion.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out);
transion.replace(R.id.activity_lin_title, infocon);
transion.addToBackStack(null);
//transion.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);// 设置动画效果
transion.commit();代码里的隐藏部分,是因为无论哪个界面都要看到背景图,所以两个view的背景都是透明的,这样一来左图的内容就先隐藏了,不然右图替换过来,还会看到左图的内容。
public void onAnimationStart(Animator animation) {
// TODO Auto-generated method stub
inAnimator.start();
}// 初始化动画
outAnimator(viewOut);
inAnimator(viewIn);左图的初始化了没,监听器里面做,顺便说下,动画可以做成res目录下面的.xml文件。你可以先新建一个新文件来测试下,应该是没有问题的,如果还需要反向动画的话,那么在动画里面的参数改下就OK了。outAnimator.addListener(new AnimatorListener() 可以放在public void outAnimator(View v) 方法里面。
你好,要不这样,我发给你一个我开始做的时候,写的一个类似的小demo,你帮我看看怎么实现好么?
你的代码都不是fragment的呀!直接两个view跳转的,我的是fragment的
View viewIn = LayoutInflater.from(this).inflate(R.layout.XXX, null);
//this指的是Context
//R.layout.XXX 由你掌控,一般是子布局,适配器里面经常用到的啊。当然也有addView的时候。android里面貌似除了4大组件 + Intent,像控件,布局这些都是View或ViewGroup.你项目里的布局文件.xml就是View.这个动画很简单了,你先把思路捋清楚吧。