0

Что мне нужно вообще: заменить (скрыть) один вид с другим с помощью кнопки мышиAndroid: заменить один вид с другим

Давайте углубимся в детали: я использую ViewPager, который состоит из 100 изображений.

Схема ViewPager

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"   
     android:layout_alignParentLeft="true"  
     android:background="#ffffff" > 

    </android.support.v4.view.ViewPager> 

    <ImageButton 
     android:id="@+id/imagePlay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageRight" 
     android:layout_alignTop="@+id/imageList"   
     android:src="@drawable/list" /> 

    </RelativeLayout> 

Макет изображения

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="1dip" 
    android:background="#ffffff"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"   
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
    /> 
</RelativeLayout> 

Он работает - нет проблем. Но мне нужно добавить кнопку в viewpager и после нажатия изображения в viewpager следует изменить на gif. Это похоже на просмотр gifs и после игры onclick - gif начинает играть.

Нестандартная планировка для гифы:

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/imageList" 
     android:layout_marginRight="28dp" 
     android:layout_toLeftOf="@+id/imageRight" > 

      <com.basv.gifmoviewview.widget.GifMovieView 
       android:id="@+id/gif1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       /> 

    </LinearLayout> 

Как он должен быть решен? Для меня довольно просто открыть другое действие после нажатия на кнопку, но проблема в том, чтобы играть в gif в том же фрагменте

Любые идеи?

ответ

1

Я бы просто добавить свой com.basv.gifmoviewview.widget.GifMovieView где-то в корне RelativeLayout (возможно, вам, возможно, потребуется, чтобы обернуть как ViewPager и GifMovieView в дополнительном FrameLayout) и просто показать/скрыть при необходимости, используя обычный setVisibility().

EDIT

Я предполагаю, что это не самое лучшее решение для использования памяти телефона

Я быстро посмотрел в sources и нет никакого много кода на самом деле. Поэтому, если вы беспокоитесь об использовании памяти, вы всегда можете динамически создавать виджет, прежде чем показывать его (и уничтожить сразу скрытый), или, поскольку я не вижу способа «разгрузить» GIF, вы всегда можете использовать «1x1 px» пустой Gif для обеспечения последнего вы просто перестали показывать, что больше не занимают драгоценную память, если не нужны.

+0

Спасибо за ответ, я полагаю, это не лучшее решение для использования памяти телефона, но для решения проблемы звучит неплохо. – tadvas

+0

См. Отредактированный answre –

0

Вот эта идея. Сделайте этот макет с обоими пейджерами и gif, но видимость gif станет невидимой, так что изначально ее там нет, но не видно. Но когда кто-то нажимает кнопку, вы должны поместить этот gif в жизнь в код, установив его на видимый, а также изменив представление пейджера на невидимое или ушедшее, если вы даже не хотите, чтобы его исходная граница присутствовала !!