Android 圆形头像

来源:互联网 发布:优秀的杂志阅读软件 编辑:程序博客网 时间:2024/05/19 14:39

今天在整理代码的时候,发现了以前在GitHub上下载的开源项目——CircleImageView

这个项目是一个自定义View,用于呈现一个圆形图片。现在的很多app都回将用户头像呈现为圆形的,所以学习这份代码还是挺有价值的。

这里写图片描述

自定义的CircleImageView继承自ImageView,代码就不粘贴了,后边会有下载链接。
不过,在CircleImageView中我修改了setBorderColorResource(int borderColorRes) 函数,默认函数如下所示

    public void setBorderColorResource(int borderColorRes) {           setBorderColor(getContext().getResources().getColor(borderColorRes));}

不过因为在Android6.0中getContext().getResources().getColor(int)方法被弃用了,改为了

getContext().getResources().getColor(int,theme);

所以我将代码修改为如下所示,根据系统版本号的不同来使用不同方法获取边框颜色资源

    @SuppressWarnings("deprecation")    @SuppressLint("NewApi")    public void setBorderColorResource(int borderColorRes) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {                             setBorderColor(getContext().getResources().getColor(borderColorRes, getContext().getTheme()));setBorderColor(getContext().getResources().getColor(borderColorRes));        }    }

此外,在values文件夹下有个attrs.xml文件,里面规定了在布局文件中自定义View能够设定的属性

<?xml version="1.0" encoding="utf-8"?><resources>    <declare-styleable name="CircleImageView">        <attr name="border_width" format="dimension" />        <attr name="border_color" format="color" />        <attr name="border_overlay" format="boolean" />    </declare-styleable></resources>

布局文件如下,让两个头像平分整个屏幕高度

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    tools:context="com.example.zy.circleimage.MainActivity">    <com.example.zy.circleimage.CircleImageView        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:background="#000000"        android:src="@drawable/hugh"        app:border_color="#fcfcfc"        app:border_width="4dp" />    <com.example.zy.circleimage.CircleImageView        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:background="#fcfcfc"        android:src="@drawable/hugh"        app:border_color="#000000"        app:border_width="4dp" /></LinearLayout>

此外,因为Android Studio默认生成的Activity继承自AppCompatActivity ,所以如果想要隐藏标题栏的话,如下语句已不起作用

requestWindowFeature(Window.FEATURE_NO_TITLE);

需要用

 getSupportActionBar().hide();

所以MainActivity 应修改为如下所示

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        getSupportActionBar().hide();    }}

下载地址:Android圆形头像

0 0
原创粉丝点击