2012-12-25 94 views
6

我有一个LinearLayout, I am dynamically adding TextView, ImageView to that LinearLayout,现在我已经将OnClickListener添加到这些TextViews和ImageViews。滑入和滑出动画的布局

我有一个arraylist其中有10个项目,使用for循环我得到每个值和显示,因为它的测验应用程序我有下一个和上一个按钮,当我点击,我逐一显示项目来自arraylist。 Now I need slide In and slide Out animation to apply to this Linear Layout.

我已经看到了这一点:

Link 1

Link 2

而且我已经试过这

slideIn = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideIn.setDuration(500); 
     slideOut = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, -1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideOut.setDuration(500); 

但不工作,请在这方面的帮助。

编辑:

问题:我已经应用这个以线性布局,但发生的事情是,当我上单击下一步按钮,当前的问题将左右滑动和空白屏幕,然后它会滑动并显示下问题,但我希望一旦当前问题出现,应该在下一个问题之后。

+0

如何将此动画应用于视图? –

+0

是的好友我已经将此应用于线性布局,但会发生什么情况是,当我点击下一个当前问题时,将向左滑动并出现空白屏幕,然后它会滑入并显示下一个问题,但是我希望当前问题尽快滑过那么应该跟着下一个问题 – Goofy

+0

使用viewflipper和使用动画和动画怎么样? –

回答

3

如果您的布局具有相同的内容,在视图脚蹼内创建两个布局。 用数据加载第一个视图并显示它。 当用户点击下一个或上一个时,使用数据加载下一个视图并保留一个标志,以显示第二个视图现在可见,并用动画显示。

现在随后根据标志值加载相应的视图并调用shownext()。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mainFlipper = (ViewFlipper) findViewById(R.id.flipper); 
    firstLayout = (LinearLayout) findViewById(R.id.layout1); 
    secondLayout = (LinearLayout) findViewById(R.id.layout2); 


    findViewById(R.id.btnPrevious).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showPrevious(); 
     } 
    }); 

    findViewById(R.id.btnNext).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showNext(); 
     } 
    }); 

} 

private void showNext() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_left)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_right)); 
    flip(); 
} 

private void showPrevious() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_left)); 
    flip(); 
} 

private void flip() { 
    if(isFirstVisible) { 
     isFirstVisible = false; 
     secondLayout.removeAllViews(); 
     secondLayout.addView(getTextView("Second")); 
    } else { 
     isFirstVisible = true; 
     firstLayout.removeAllViews(); 
     firstLayout.addView(getTextView("First")); 
    } 
    mainFlipper.showNext(); 
} 

private TextView getTextView(String txt) { 
    TextView txtView = new TextView(this); 
    txtView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
    txtView.setText(txt); 
    return txtView; 
} 
+0

谢谢会尝试并回复你。 – Goofy

+0

嘿,我试图以你告诉的方式,但现在我无法删除我动态添加的视图,如果我使用removeallviews(),那么动画将无法工作。 – Goofy

+1

我已编辑我的帖子与代码。请尝试一下 –

4

使用此XML在res /动画/

leftright.xml
这是左到右的动画:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="-100%" android:toXDelta="0%" 
     android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="700"/> 
    </set> 

使用这种在Java代码中

Handler handler = new Handler(); 
Runnable runnable = new Runnable(){ 
{ 
    public void run() 
{ 
    item[i].setInAnimation(AnimationUtils.loadAnimation(this,R.anim.leftright.xml)); 
    i=i+1; 
    handler.postDelayed(this,5000); 
} 
};handler.postDelayed(runnable,5000); 
+0

我将如何将动画应用到布局?我无法将动画应用于单个项目,因为它必须首先从阵列列表中获取值,然后在下一次点击'setContentView(R.layout。)时显示 – Goofy

+0

。View2)'然后在你的类中做这个'Intent iSecondLayout = new Intent(Activity.this,Activity.class); Activity.this.startActivity(iSecondLayout); Activity.this.overridePendingTransition(R.anim.lefttoright,R.anim.righttoleft);' – mjosh

+0

我只有一个活动 – Goofy