2017-02-25 97 views
0

我知道過類似的問題,但我認爲我的情況有所不同。 所以我試圖製作一個使用RecyclerView的播放列表,當選擇了一首歌曲時,我想讓包含歌曲圖像的圓形圖像更改爲刻度線標記,同時可以在背景中看到原始圖像褪色。我準備好了我的刻度圖。 enter image description here如何動態添加另一個ImageView到現有的ImageView?

如何動態地將此圖片添加到現有的ImageView中?將背景圖像放入背景方法對我來說不是一個解決方案,因爲音樂圖像文件是從R​​ealm動態加載的,因此不能作爲背景。

我RecyclerView項目的XML代碼如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="20dp" 
android:paddingRight="10dp" 
android:paddingLeft="30dp" 
> 

<de.hdodenhof.circleimageview.CircleImageView 
android:layout_width="120dp" 
android:layout_height="120dp" 
android:layout_gravity="start" 
android:transitionName="albumArt" 
android:id="@+id/album_art" 
android:scaleType="centerCrop" 
android:src="@color/colorPrimary"/> 


<LinearLayout 
    android:layout_width="fill_parent" 
    android:gravity="right" 
    android:paddingLeft="20dp" 
    android:orientation="vertical" 
    android:layout_marginTop="20dp" 
    android:layout_height="wrap_content"> 
    <TextView 
    android:id="@+id/data" 
     android:layout_width="match_parent" 
     android:fontFamily="sans-serif" 
     android:textColor="#ffffff" 
     android:text="Music Name" 
     android:textSize="17sp" 
     android:layout_height="wrap_content" 
    /> 
    <TextView 
    android:id="@+id/data_album" 
    android:layout_width="match_parent" 
    android:fontFamily="sans-serif" 
    android:textColor="#bfe0e0e0" 
    android:textSize="14sp" 
    android:text="Music Artist" 
    android:layout_height="wrap_content" 
    /> 
</LinearLayout> 

我怎樣才能做到這一點從動態java代碼?這可以用set visibility以某種方式完成嗎?如果是的話,請解釋新的方法來做到這一點,以及讚賞。

+0

使用'LayerDrawable'類:*「一個可繪製的管理其他Drawable的數組,這些按照數組順序繪製,因此具有最大索引的元素將被繪製在最上面。」* – pskink

回答

0

是的,它可以通過設置可見做。在佈局文件中,您很可能需要使用相對佈局,以便可以將兩個圖像視圖完全相同。然後在視圖中,您不希望一開始顯示,你把它看不見,加入以下內容:

android:visibility="invisible" 

再後來就當你想打開/關閉的知名度,你可以使用:

myImageView.setVisibility(View.VISIBLE); 
myImageView.setVisibility(View.INVISIBLE); 
1

您可以使用FrameLayout這裏放置FrameLayout內都ImageView S和根據病情可以讓他們中的一個可見的和其他無形

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="20dp" 
android:paddingRight="10dp" 
android:paddingLeft="30dp" 
> 
<FrameLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
<de.hdodenhof.circleimageview.CircleImageView 
android:layout_width="120dp" 
android:layout_height="120dp" 
android:layout_gravity="start" 
android:transitionName="albumArt" 
android:id="@+id/album_art" 
android:scaleType="centerCrop" 
android:src="@color/colorPrimary"/> 

<ImageView 
android:id="@+id/imageView" 
android:layout_width="120dp" 
android:layout_height="120dp"> 
</ImageView> 
</FrameLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:gravity="right" 
    android:paddingLeft="20dp" 
    android:orientation="vertical" 
    android:layout_marginTop="20dp" 
    android:layout_height="wrap_content"> 
    <TextView 
    android:id="@+id/data" 
     android:layout_width="match_parent" 
     android:fontFamily="sans-serif" 
     android:textColor="#ffffff" 
     android:text="Music Name" 
     android:textSize="17sp" 
     android:layout_height="wrap_content" 
    /> 
    <TextView 
    android:id="@+id/data_album" 
    android:layout_width="match_parent" 
    android:fontFamily="sans-serif" 
    android:textColor="#bfe0e0e0" 
    android:textSize="14sp" 
    android:text="Music Artist" 
    android:layout_height="wrap_content" 
    /> 
</LinearLayout> 
相關問題