使图像完全无边框圆形
问题描述:
我想为我的Profile
活动绘制圆形图像。我已经尝试了这些答案,但在我的情况下不起作用。使图像完全无边框圆形
How to create a circular ImageView in Android?
How to make an ImageView with rounded corners?
How to make an image fit into a circular frame in android
How to Make an ImageView in Circular Shape?
这不是一个重复的问题,使用这些方法,这里是我得到: -
问题:图像不完全是圆形的。
这里是我的Profile.java
代码: -
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by kundan on 6/4/2015.
*/
public class Profile extends ActionBarActivity {
TextView username;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.profile);
username= (TextView) findViewById(R.id.txt);
String recievedusername=getIntent().getExtras().getString("toname");
username.setText(recievedusername);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.mipmap.gomez);
Bitmap resized= Bitmap.createScaledBitmap(bm,200,200,true);
Bitmap conv_bm=getCircleBitmap(resized,100);
// set circle bitmap
ImageView mImage = (ImageView) findViewById(R.id.profile_image);
mImage.setImageBitmap(conv_bm);
// TODO Auto-generated method stub
}
private Bitmap getCircleBitmap(Bitmap bitmap , int pixels) {
final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(),bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawCircle(100, 100, 100, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return output;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_apploud, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_addnew) {
Intent i;
i=new Intent(Profile.this,ApplaudSomeone.class);
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
}
需要我profile.xml
的部分是: -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#ff17a088"
android:weightSum="1"
android:paddingTop="5dp"
android:gravity="center">
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:id="@+id/profile_image"
android:contentDescription="@string/img"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:background="@drawable/img"
android:layout_alignParentTop="true"
android:layout_alignEnd="@+id/txt2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="suman"
android:id="@+id/txt"
android:textSize="25sp"
android:padding="5dp"
android:layout_gravity="center_horizontal"
android:textColor="#fffff9"
android:layout_below="@+id/profile_image"
android:layout_centerHorizontal="true" />
的img.xml
代码: - 提前
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false"
>
<stroke android:width="5dp"
android:color="#ffffff"/>
</shape>
</item>
</layer-list>
谢谢!
答
是的,终于我解决了这个问题。如果你们中的任何人都面临同样的问题,那么使用canvas.drawCircle(100, 100, 90, paint);
而不是canvas.drawCircle(100, 100, 100, paint);
,这一定会解决你的问题。
看起来是圆形的给我。现在我最好的猜测是你只想要女孩的脸出现,在这种情况下,你需要让你的圈变小...... –
是的,我只想要女孩的脸。但我不想减小圆的半径 –
我该如何增加面罩。 –