diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c0fdbec..dd96e30 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ \ No newline at end of file diff --git a/library/src/main/java/me/panavtec/drawableview/DrawableView.java b/library/src/main/java/me/panavtec/drawableview/DrawableView.java index 1ffe79d..970152b 100644 --- a/library/src/main/java/me/panavtec/drawableview/DrawableView.java +++ b/library/src/main/java/me/panavtec/drawableview/DrawableView.java @@ -2,12 +2,15 @@ import android.annotation.TargetApi; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.RectF; import android.os.Build; import android.os.Parcelable; import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.ScaleGestureDetector; @@ -49,17 +52,20 @@ public DrawableView(Context context) { public DrawableView(Context context, AttributeSet attrs) { super(context, attrs); init(); + setAttributeSet(context, attrs); } public DrawableView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); + setAttributeSet(context, attrs); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public DrawableView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); + setAttributeSet(context, attrs); } private void init() { @@ -74,6 +80,33 @@ private void init() { setOnTouchListener(this); } + private void setAttributeSet(Context context, AttributeSet attributeSet){ + + TypedArray a = context.getTheme().obtainStyledAttributes( + attributeSet, + R.styleable.DrawableView, + 0, 0); + + try { + DisplayMetrics metrics = context.getResources().getDisplayMetrics(); + int windowWidth = metrics.widthPixels; + int windowHeight = metrics.heightPixels; + + DrawableViewConfig config = new DrawableViewConfig(); + config.setCanvasHeight(a.getDimensionPixelSize(R.styleable.DrawableView_canvasHeight, windowHeight)); + config.setCanvasWidth(a.getDimensionPixelSize(R.styleable.DrawableView_canvasWidth, windowWidth)); + config.setStrokeColor(a.getColor(R.styleable.DrawableView_strokeColor, context.getResources().getColor(android.R.color.black))); + config.setShowCanvasBounds(a.getBoolean(R.styleable.DrawableView_showCanvasBounds, true)); + config.setMinZoom(a.getFloat(R.styleable.DrawableView_minZoom, 1.0f)); + config.setMaxZoom(a.getFloat(R.styleable.DrawableView_maxZoom, 3.0f)); + config.setStrokeWidth(a.getFloat(R.styleable.DrawableView_strokeWidth, 20f)); + setConfig(config); + + } finally { + a.recycle(); + } + } + public void setConfig(DrawableViewConfig config) { if (config == null) { throw new IllegalArgumentException("Paint configuration cannot be null"); diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml new file mode 100644 index 0000000..6c219a9 --- /dev/null +++ b/library/src/main/res/values/attrs.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file