如何制作圆形图像视图
How to make a circular image view
我正在尝试在我的注册表中创建一个圆形图像视图 class。我尝试了很多解决方案,但 none 的解决方案对我有用。有人可以帮我解决问题吗?谢谢。
build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.seng.healthyapp"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services-location:9.2.0'
}
register.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/imgProfilePicture"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginBottom="20dp"
app:civ_border_width="3dp"
app:civ_border_color="@color/white"
android:background="@mipmap/profile" />
<EditText
android:id="@+id/editTextName"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/hint_name"
android:padding="10dp"
android:singleLine="true" />
<EditText
android:id="@+id/editTextPassword"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/hint_password"
android:inputType="textPassword"
android:padding="10dp"
android:singleLine="true" />
<!-- Login Button -->
<EditText
android:id="@+id/editTextConfirmPassword"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/confirm_password"
android:inputType="textPassword"
android:padding="10dp"/>
<Button
android:id="@+id/buttonSave"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@color/blue"
android:text="Confirm"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15dp" />
</LinearLayout>
这将使位图变圆,我从来没有遇到过问题,当我想实现这一点时,我也尝试了圆形图像视图,但我发现它更容易使用
Bitmap book = BitmapFactory.decodeResource(getResources(),R.drawable.book);
imageView.setImageBitmap(getRoundedBitmap(book));
public Bitmap getRoundedBitmap(Bitmap bitmap){
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
paint.setAntiAlias(true);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint);
return circleBitmap;
}
尽管您正在尝试自己创建一个。这几乎就像试图重新发明轮子。
我强烈建议使用可用的第 3 方库之一。我在我的生产代码中使用了这个库,它们工作得很好。
以下是我用过的几个
我正在尝试在我的注册表中创建一个圆形图像视图 class。我尝试了很多解决方案,但 none 的解决方案对我有用。有人可以帮我解决问题吗?谢谢。
build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.seng.healthyapp"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services-location:9.2.0'
}
register.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/imgProfilePicture"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginBottom="20dp"
app:civ_border_width="3dp"
app:civ_border_color="@color/white"
android:background="@mipmap/profile" />
<EditText
android:id="@+id/editTextName"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/hint_name"
android:padding="10dp"
android:singleLine="true" />
<EditText
android:id="@+id/editTextPassword"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/hint_password"
android:inputType="textPassword"
android:padding="10dp"
android:singleLine="true" />
<!-- Login Button -->
<EditText
android:id="@+id/editTextConfirmPassword"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:hint="@string/confirm_password"
android:inputType="textPassword"
android:padding="10dp"/>
<Button
android:id="@+id/buttonSave"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@color/blue"
android:text="Confirm"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15dp" />
</LinearLayout>
这将使位图变圆,我从来没有遇到过问题,当我想实现这一点时,我也尝试了圆形图像视图,但我发现它更容易使用
Bitmap book = BitmapFactory.decodeResource(getResources(),R.drawable.book);
imageView.setImageBitmap(getRoundedBitmap(book));
public Bitmap getRoundedBitmap(Bitmap bitmap){
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
paint.setAntiAlias(true);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint);
return circleBitmap;
}
尽管您正在尝试自己创建一个。这几乎就像试图重新发明轮子。
我强烈建议使用可用的第 3 方库之一。我在我的生产代码中使用了这个库,它们工作得很好。
以下是我用过的几个