2017-02-25 93 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> 
相关问题