Skip to content

Instantly share code, notes, and snippets.

@zty5678
Last active October 4, 2016 10:31
Show Gist options
  • Save zty5678/f15777ef818c35242105c0f85a9a2d88 to your computer and use it in GitHub Desktop.
Save zty5678/f15777ef818c35242105c0f85a9a2d88 to your computer and use it in GitHub Desktop.
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
package test.test_couponview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import butterknife.Bind;
import butterknife.ButterKnife;
public class MainActivity extends AppCompatActivity {
@Bind(R.id.coupon_view)
CouponView coupon_view;
@Bind(R.id.imgv1)
ImageView imgv1;
@Bind(R.id.imgv2)
ImageView imgv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
String url="http://a4.topitme.com/l110/10110982420e61a2ab.jpg";
Glide.with(this)
.load(url).centerCrop().into(imgv1);
Glide.with(this)
.load(url).centerCrop().into(imgv2);
}
}
package test.test_couponview;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by Administrator on 2016/10/4.
*/
public class MyView extends View {
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
Paint circlePaint;
public void init(){
circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setDither(true);
circlePaint.setColor(Color.TRANSPARENT);
circlePaint.setStyle(Paint.Style.FILL);
circlePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
bgColor = Color.parseColor("#ffffff");
}
Bitmap mBitmap;
Canvas mCanvas;
int viewWidth;
int viewHeight;
int bgColor;
int semicircleGap=24;
int semicircleRadius=12;
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
this.viewWidth=w;
this.viewHeight=h;
caculate();
}
int semicircleNumX;
int semicircleNumY;
int remindSemicircleX;
int remindSemicircleY;
private void caculate() {
if (mBitmap!=null){
mBitmap.recycle();
mBitmap=null;
}
mBitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
remindSemicircleX = (int) ((viewWidth - semicircleGap) % (2 * semicircleRadius + semicircleGap));
semicircleNumX = (int) ((viewWidth - semicircleGap) / (2 * semicircleRadius + semicircleGap));
remindSemicircleY = (int) ((viewHeight - semicircleGap) % (2 * semicircleRadius + semicircleGap));
semicircleNumY = (int) ((viewHeight - semicircleGap) / (2 * semicircleRadius + semicircleGap));
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mCanvas.drawColor(bgColor);
for (int i = 0; i < semicircleNumX; i++) {
float x = semicircleGap + semicircleRadius + remindSemicircleX / 2 + (semicircleGap + semicircleRadius * 2) * i;
mCanvas.drawCircle(x, 0, semicircleRadius, circlePaint);
}
for (int i = 0; i < semicircleNumX; i++) {
float x = semicircleGap + semicircleRadius + remindSemicircleX / 2 + (semicircleGap + semicircleRadius * 2) * i;
mCanvas.drawCircle(x, viewHeight, semicircleRadius, circlePaint);
}
for (int i = 0; i < semicircleNumY; i++) {
float y = semicircleGap + semicircleRadius + remindSemicircleY / 2 + (semicircleGap + semicircleRadius * 2) * i;
mCanvas.drawCircle(0, y, semicircleRadius, circlePaint);
}
for (int i = 0; i < semicircleNumY; i++) {
float y = semicircleGap + semicircleRadius + remindSemicircleY / 2 + (semicircleGap + semicircleRadius * 2) * i;
mCanvas.drawCircle(viewWidth, y, semicircleRadius, circlePaint);
}
canvas.drawBitmap(mBitmap, 0, 0, null);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment