在折叠工具栏中锚定ImageView

时间:2016-03-13 11:27:43

标签: android

我已经使用Sanjeet Ajnabee在Anchor ImageView to Collapsing Toolbar提供的答案将imageview实现到了Collapsing工具栏。实现工作正常,但现在我想要的是在个人资料图片中添加编辑按钮,以便我可以从该按钮浏览图库。请帮忙。 这是我的代码

create_opp_color()

}

这是我的布局

public class FloatingActionImageView extends FloatingActionButton {
public FloatingActionImageView(Context context) {
    super(context);
}

public FloatingActionImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public FloatingActionImageView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
    Bitmap sBmp;

    if (bmp.getWidth() != radius || bmp.getHeight() != radius) {
        float smallest = Math.min(bmp.getWidth(), bmp.getHeight());
        float factor = smallest / radius;
        sBmp = Bitmap.createScaledBitmap(bmp, (int) (bmp.getWidth() / factor), (int) (bmp.getHeight() / factor), false);
    } else {
        sBmp = bmp;
    }

    Bitmap output = Bitmap.createBitmap(radius, radius,
            Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, radius + 5, radius + 5);

    paint.setAntiAlias(true);
    paint.setFilterBitmap(true);
    paint.setDither(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(Color.parseColor("#BAB399"));
    canvas.drawCircle(radius / 2,
            radius / 2, radius / 2, paint);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(sBmp, rect, rect, paint);

    return output;
}

@Override
protected void onDraw(@NonNull Canvas canvas) {

    Drawable drawable = getDrawable();

    if (drawable == null) {
        return;
    }

    if (getWidth() == 0 || getHeight() == 0) {
        return;
    }
    Bitmap b = ((BitmapDrawable) drawable).getBitmap();
    Bitmap bitmap = null;
    if (b != null) {
        bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
    } else {
        BitmapDrawable bitmapDrawable = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            bitmapDrawable = ((BitmapDrawable) getResources().getDrawable(R.drawable.ic_hospital, null));
        } else {
            bitmapDrawable = ((BitmapDrawable) getResources().getDrawable(R.drawable.ic_hospital));
        }
        if (bitmapDrawable != null) {
            bitmap = bitmapDrawable.getBitmap();
        }
    }

    int w = getWidth();
    Bitmap roundBitmap = getCroppedBitmap(bitmap, w);
    canvas.drawBitmap(roundBitmap, 0, 0, null);


}

0 个答案:

没有答案