Intereting Posts
Почему debounce () с toList () не работает в RxAndroid? Android ImageView не отображает изображение? Webview внутри RecyclerView показывает пустой экран иногда только на устройствах Nougat Повторное использование разделяемой библиотеки рук Как определить входящий звонок и исходящий вызов в android Как эмулировать местоположение GPS в эмуляторе Android? Android: разобрать XML из строковых проблем Почему мы не должны обертывать каждый включенный формат Android XML в пару <merge>? AutoCompleteTextView посещает последнюю строку Убедитесь, что приложение Android установлено из Play-Store Referrer после обновления приложения из Android Маркета Как я могу определить, как пользователь нажимает клавишу HOME в моей деятельности? Более эффективный способ обновления пользовательского интерфейса от службы, чем намерения? Предотвратите ошибку Android «process is bad» Как хранить и извлекать растровые изображения в sharedPreferences в Android?

Как оживить добавление вида в Android?

Я хотел бы знать, есть ли простой способ добавить представление (кнопку) в RelativeLayout с какой-то анимацией масштаба. Я расширил класс от Button и сделал что-то вроде этого:

public class MyButton extends Button { @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); ScaleAnimation anim = new ScaleAnimation(0,1,0,1); anim.setDuration(1000); anim.setFillAfter(true); this.startAnimation(anim); } 

Затем попытался добавить эту кнопку в представление, и она не сработала. Пожалуйста помоги!

Solutions Collecting From Web of "Как оживить добавление вида в Android?"

Я протестировал вашу анимированную кнопку, и она работает правильно. Должна быть какая-то другая проблема. Вероятно, вы добавляете кнопку в макет.

Чтобы добавить свою кнопку в соответствующий макет, используйте такой код.

 RelativeLayout rl = (RelativeLayout)findViewById(R.id.rl); MyButton b1 = new MyButton(Main.this); b1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); rl.addView(b1); 

Или вы можете надуть кнопку из макета. Для этого создайте макет mybtn.xml содержащий реализацию вашей кнопки:

 <?xml version="1.0" encoding="utf-8"?> <PACKAGE_OF_MYBUTTON_HERE.MyButton xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

Чтобы добавить его в свой макет, выполните следующие действия:

 RelativeLayout rl = (RelativeLayout)findViewById(R.id.rl); Button b = (Button)getLayoutInflater().inflate(R.layout.mybtn, rl, false); rl.addView(b); 

Возможно, возникнет проблема с правильным позиционированием вашего представления, когда вы добавите его в относительный макет. Просто добавьте код, подобный этому, перед вызовом rl.addView(b1) (фрагмент кода добавляет новую кнопку ниже someOtherView).

 LayoutParams lp = new LayoutParams(b.getLayoutParams()); lp.addRule(RelativeLayout.BELOW, someOtherView.getId()); b.setLayoutParams(lp); 

В своей деятельности используйте вместо этого:

 parentview.addView(myButton); 

Затем оставьте кнопку с этим:

 Animation animation = AnimationUtils.loadAnimation(getBaseContext(), R.anim.slide_right_in); animation.setStartOffset(0); myButton.startAnimation(animation); 

Это пример slide_right_in.xml

 <?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> 

Кроме того, это функция анимации воспроизведения активности, которую я написал:

 public Animation PlayAnim( int viewid, Context Con, int animationid, int StartOffset ) { View v = findViewById(viewid); if( v != null ) { Animation animation = AnimationUtils.loadAnimation(Con, animationid ); animation.setStartOffset(StartOffset); v.startAnimation(animation); return animation; } return null; } 

Вы можете назвать это следующим образом:

 PlayAnim(R.id.bottombar, (Context) this, R.anim.slide_right_in, 0); 

Где:

1-й параметр – это идентификатор представления, к которому вы хотите применить анимацию.

Второй парасектер – это контекст, полученный внутри вашей активности.

Третий параметр – это желаемая анимация, которую вы помещаете в свою папку ресурсов анимации или из предопределенных анимаций в Android.

4-й пареметр – это начало анимации.