Как сделать так, чтобы панель кнопок скользила снизу при нажатии на флажок в ListView? - PullRequest
3 голосов
/ 24 декабря 2010

У меня есть список с пользовательским listadapter, который заполняет список с помощью флажка и некоторых текстовых представлений.Когда пользователь выбирает флажок, мне нужна панель кнопок, чтобы скользить в вид из нижней части экрана и сидеть там.Я сделал панель кнопок и могу сделать так, чтобы она появлялась и исчезала с экрана, изменяя ее видимость на «исчезнувшая» и «видимая», но она не делает это с эффектом скольжения и выдвижения.Как мне заставить это делать те анимации ??

Ответы [ 2 ]

25 голосов
/ 24 декабря 2010

Вы хотите использовать Анимационные XML-ресурсы .

Вот пример XML-анимации, которая будет «сдвигать» объект вверх от нижней части экрана туда, где когда-либо находится его место в макете:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="100%p" android:toYDelta="0%p" android:duration="300"/>
</set>

Вы поместите это в папку res / anim, а затем используйте этот код Java для анимации вашего вида:

slideUpIn = AnimationUtils.loadAnimation(this, R.anim.slide_up_in);
yourButtonBarView.startAnimation(slideUpIn);

Вы захотите поместить вызов startAnimation внутрь, где вы получите обратный вызов, когда ваш CheckBox был проверен.

2 голосов
/ 23 ноября 2011

Ниже приведена реализация кода времени выполнения, измените ее соответствующим образом, если она вам нужна для других целей.

RelativeLayout rl = new RelativeLayout(this);
ImageButton btnBar = new ImageButton(this);

RelativeLayout.LayoutParams btnParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 80);

btnParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

btnBar.setLayoutParams(btnParams);
btnBar.setBackgroundColor(Color.RED); // test with red background

TranslateAnimation a = new TranslateAnimation(
                           Animation.RELATIVE_TO_PARENT, 0,
                           Animation.RELATIVE_TO_PARENT, 0,
                           Animation.RELATIVE_TO_PARENT, (float)100, 
                           Animation.RELATIVE_TO_PARENT, (float)0);

a.setDuration(1000);
btnBar.startAnimation(a); // add animation while start

rl.addView(btnBar);
setContentView(rl);
...