在android

时间:2018-05-21 07:19:40

标签: android layout

我想为个人资料图片创建一个公共类,其中应包含2个ImageView,并且应该从远程URL加载。

我已经在我的项目中的许多地方放置了很多图像视图,所以现在我需要更新它所有的地方,所以我想创建到LinearLayout小部件,这样我就可以在Image视图的位置更新它在未来,如果需要,我可以集中更新。

这是我现有的布局

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <com.makeramen.roundedimageview.RoundedImageView
            android:id="@+id/ivAboutProfilePic"
            style="@style/ImageViewStyle"
            android:layout_width="@dimen/size_profilepic_menu"
            android:layout_height="@dimen/size_profilepic_menu"
            android:layout_gravity="center"
            android:src="@drawable/ic_user_default"
            app:riv_border_color="@color/orange_dark"
            app:riv_border_width="1dp"
            app:riv_corner_radius="@dimen/size_profilepic_menu"
            app:riv_oval="true" />

        <ImageView
            android:id="@+id/ivProfileBadge"
            android:layout_width="30dp"
            android:layout_height="18dp"
            android:layout_marginLeft="@dimen/_minus2sdp"
            android:layout_marginTop="@dimen/_minus5sdp"
            android:rotation="335"
            app:srcCompat="@drawable/ic_pro_crown_yelloworange" />

    </LinearLayout>

我需要使用自定义类更新它。    

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

demo.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="80dp"
android:layout_height="80dp">

<ImageView
    android:id="@+id/ivAboutProfilePic"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_gravity="center"
    android:src="@drawable/ic_launcher" />

<ImageView
    android:id="@+id/ivProfileBadge"
    android:layout_width="30dp"
    android:layout_height="18dp"
    android:layout_alignParentRight="true"
    android:rotation="335"
    app:srcCompat="@drawable/ic_cross" />

</RelativeLayout>

JpCustomView.java

public class JpCustomView extends RelativeLayout {

private LayoutInflater mInflater;
private ImageView ivAboutProfilePic;
private Context context;

public JpCustomView(Context context) {
    super(context);
    this.context = context;
    mInflater = LayoutInflater.from(context);
    init();

}

public JpCustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.context = context;
    mInflater = LayoutInflater.from(context);
    init();

}

public void init() {
    View view = mInflater.inflate(R.layout.demo, this, true);
    ivAboutProfilePic = view.findViewById(R.id.ivAboutProfilePic);

}

public void loadImage(String url) {
    if (ivAboutProfilePic != null) {
        /*Your Code For Loading Image From Url*/

    }

}
}

在你的xml中

 <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/app_gray">

        <com.pms.activity.customviews.JpCustomView
            android:id="@+id/jpCustomView"
            android:layout_width="80dp"
            android:layout_height="80dp" />



    </RelativeLayout>

在你的java文件中

JpCustomView  jpCustomView = findViewById(R.id.jpCustomView);
jpCustomView.loadImage("remote url here");

答案 1 :(得分:0)

您可以编写BaseActivity OR BaseFragment,它可以扩展包含所提到的ImageView的所有活动。

扩展活动/片段后,您可以在onResum方法中使用BaseActivity和BaseFragment编写代码,以便从远程URL获取图像。并以相同的方式覆盖您在活动中的方法,您可以在下载完成后设置图像。 如果有任何问题,请随时询问。