我想为个人资料图片创建一个公共类,其中应包含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>
我需要使用自定义类更新它。
请帮我解决这个问题。
答案 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获取图像。并以相同的方式覆盖您在活动中的方法,您可以在下载完成后设置图像。 如果有任何问题,请随时询问。