2015-10-28 3 views
0

В новом приложении, которое я создаю, я создаю систему достижений. Мне не удалось заставить действия Click Toast работать, поэтому я решил, что использование другого представления может быть хорошей идеей (что я действительно предпочитаю).Android: Слайд-представление вверх В любом месте внутри приложения

Идея: я хотел бы, чтобы представление было доступно во всех моих действиях, которые скрыты под экраном. Когда достижение «разблокировано», представление скользит вверх и говорит «Достижение разблокировано:», а затем возвращается назад после x секунд.

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

ответ

0

Я бы предпочел использовать одно действие и разместить в нем другие фрагменты. Таким образом, было бы легко показать/скрыть фрагмент в FrameLayout. Но, учитывая, что вы хотите показать какое-то всплывающее окно, с анимацией снизу, в любом Activity, я бы создал новое действие, с анимацией (вниз снизу) и animation_out (выскользнуть вниз). Также, если вы хотите, чтобы любая часть активности была прозрачной, вы можете изменить тему «popupActivity», сделав ее прозрачной. Таким образом, вы можете показывать всплывающее окно снизу в любом действии.


Пример:

  1. Создать anim папку внутри папки res.
  2. Создание slide_in_from_bottom_to_top.xml внутри anim и вставьте следующий код XML:

    <?xml version="1.0" encoding="utf-8"?> 
    <set> 
    <translate xmlns:android="http://schemas.android.com/apk/res/android" 
        android:fromYDelta="100%" 
        android:toYDelta="0" 
        android:interpolator="@android:anim/decelerate_interpolator" 
        android:duration="500"/> 
    </set> 
    
  3. Создать slide_out_to_bottom_from_top.xml внутри anim папки:

    <?xml version="1.0" encoding="utf-8"?> 
    <set> 
    <translate xmlns:android="http://schemas.android.com/apk/res/android" 
        android:fromYDelta="0" 
        android:toYDelta="100%" 
        android:interpolator="@android:anim/decelerate_interpolator" 
        android:duration="500"/> 
    </set> 
    
  4. Чтобы начать деятельность с анимацией, просто overridePendingTransition внутри onCreate метода в PopupActivity следующим образом:

    overridePendingTransition(R.anim.slide_in_from_bottom_to_top, R.anim.slide_out_to_bottom_from_top); 
    

Передача данных в деятельности и получить его:

В текущей деятельности, создать новый Intent:

Intent i = new Intent(getApplicationContext(), NewActivity.class); 
i.putExtra("new_variable_name","value"); 
startActivity(i); 

Тогда в новой деятельности, получить эти значения:

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String value = extras.getString("new_variable_name"); 
} 

Используйте эту технику для передачи переменных из одной активности в другую.


Но учитывая то, что вам не нужно все это, вы могли бы просто использовать SnackBar, примером может быть здесь: http://www.androidhive.info/2015/09/android-material-design-snackbar-example/

+0

Не могли бы вы привести пример? Я новичок в этом. :/ – SysVoid

+0

взглянуть на обновленный ответ – FilipLuch

+0

Как мне стиль, как я бы сделал с любым другим видом? Смотрите это: https://i.imgur.com/daWrYMR.png – SysVoid

Смежные вопросы