Note that there are some explanatory texts on larger screens.

plurals
  1. POColorPicker Dialog is not showing in android
    primarykey
    data
    text
    <p>I have made a very simple drawing app in android ,in that i have used a colorpicker for choose different pencolor i have implemented as below,but on click of "color" button.my app is unfortunately stop(crash)..My code is as below,Please help me for my problem..Thank you in advance..</p> <p><strong>Main.java</strong></p> <pre><code>package com.example.singletouch; import android.os.Bundle; import android.app.ActionBar.LayoutParams; import android.app.Activity; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.view.View; import android.view.View.OnClickListener; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends Activity implements ColorPickerDialog.OnColorChangedListener { ImageView pen, color; SingleTouchView mDrawView; RelativeLayout layout, layout1; ImageView remove; ImageView eraser; private LinearLayout list_color; LinearLayout pens; private TextView select_color; private int selectedColor = 0x00FF0000; HorizontalScrollView myplate; private Paint mPaint, mBitmapPaint; private Path mPath; public Canvas mCanvas; LinearLayout pen1, pen2, pen3, pen4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawView = (SingleTouchView) findViewById(R.id.myview); layout1 = (RelativeLayout) findViewById(R.id.layout1); layout = (RelativeLayout) findViewById(R.id.layout); pen = (ImageView) findViewById(R.id.pen); pens = (LinearLayout) findViewById(R.id.linear); pens.setVisibility(View.GONE); pen1 = (LinearLayout) findViewById(R.id.pen1); pen2 = (LinearLayout) findViewById(R.id.pen2); pen3 = (LinearLayout) findViewById(R.id.pen3); pen4 = (LinearLayout) findViewById(R.id.pen4); eraser = (ImageView) findViewById(R.id.eraser); remove = (ImageView) findViewById(R.id.remove); color = (ImageView) findViewById(R.id.color); pen.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub pens.setVisibility(View.VISIBLE); } }); pens.setVisibility(View.GONE); pen1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mDrawView.setPen(SingleTouchView.DrawingPens.PEN_1); pens.setVisibility(View.GONE); } }); pen2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mDrawView.setPen(SingleTouchView.DrawingPens.PEN_2); pens.setVisibility(View.GONE); } }); pen3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pens.setVisibility(View.GONE); mDrawView.setPen(SingleTouchView.DrawingPens.PEN_3); } }); pen4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pens.setVisibility(View.GONE); mDrawView.setPen(SingleTouchView.DrawingPens.PEN_4); } }); remove.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { layout.removeView(mDrawView); mDrawView = new SingleTouchView(MainActivity.this); layout.addView(mDrawView); } }); eraser.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mBitmapPaint.setColor(Color.TRANSPARENT); mPath.reset(); mDrawView.invalidate(); } }); color.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // myplate.setVisibility(View.VISIBLE); new ColorPickerDialog(MainActivity.this, MainActivity.this, mPaint.getColor()).show(); } }); } @Override public void colorChanged(int color) { // TODO Auto-generated method stub } } </code></pre> <p><strong>ColorPickerDialog.java</strong></p> <pre><code>package com.example.singletouch; import android.app.Dialog; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Shader; import android.graphics.SweepGradient; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; public class ColorPickerDialog extends Dialog{ public interface OnColorChangedListener { void colorChanged(int color); } private OnColorChangedListener mListener; private int mInitialColor; private static class ColorPickerView extends View { private Paint mPaint; private Paint mCenterPaint; private final int[] mColors; private OnColorChangedListener mListener; ColorPickerView(Context c, OnColorChangedListener l, int color) { super(c); mListener = l; mColors = new int[] { 0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000 }; Shader s = new SweepGradient(0, 0, mColors, null); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setShader(s); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(32); mCenterPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mCenterPaint.setColor(color); mCenterPaint.setStrokeWidth(5); } private boolean mTrackingCenter; private boolean mHighlightCenter; protected void onDraw(Canvas canvas) { float r = CENTER_X - mPaint.getStrokeWidth()*0.5f; canvas.translate(CENTER_X, CENTER_X); canvas.drawOval(new RectF(-r, -r, r, r), mPaint); canvas.drawCircle(0, 0, CENTER_RADIUS, mCenterPaint); if (mTrackingCenter) { int c = mCenterPaint.getColor(); mCenterPaint.setStyle(Paint.Style.STROKE); if (mHighlightCenter) { mCenterPaint.setAlpha(0xFF); } else { mCenterPaint.setAlpha(0x80); } canvas.drawCircle(0, 0, CENTER_RADIUS + mCenterPaint.getStrokeWidth(), mCenterPaint); mCenterPaint.setStyle(Paint.Style.FILL); mCenterPaint.setColor(c); } } protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(CENTER_X*2, CENTER_Y*2); } private static final int CENTER_X = 100; private static final int CENTER_Y = 100; private static final int CENTER_RADIUS = 32; private int floatToByte(float x) { int n = java.lang.Math.round(x); return n; } private int pinToByte(int n) { if (n &lt; 0) { n = 0; } else if (n &gt; 255) { n = 255; } return n; } private int ave(int s, int d, float p) { return s + java.lang.Math.round(p * (d - s)); } private int interpColor(int colors[], float unit) { if (unit &lt;= 0) { return colors[0]; } if (unit &gt;= 1) { return colors[colors.length - 1]; } float p = unit * (colors.length - 1); int i = (int)p; p -= i; // now p is just the fractional part [0...1) and i is the index int c0 = colors[i]; int c1 = colors[i+1]; int a = ave(Color.alpha(c0), Color.alpha(c1), p); int r = ave(Color.red(c0), Color.red(c1), p); int g = ave(Color.green(c0), Color.green(c1), p); int b = ave(Color.blue(c0), Color.blue(c1), p); return Color.argb(a, r, g, b); } private int rotateColor(int color, float rad) { float deg = rad * 180 / 3.1415927f; int r = Color.red(color); int g = Color.green(color); int b = Color.blue(color); ColorMatrix cm = new ColorMatrix(); ColorMatrix tmp = new ColorMatrix(); cm.setRGB2YUV(); tmp.setRotate(0, deg); cm.postConcat(tmp); tmp.setYUV2RGB(); cm.postConcat(tmp); final float[] a = cm.getArray(); int ir = floatToByte(a[0] * r + a[1] * g + a[2] * b); int ig = floatToByte(a[5] * r + a[6] * g + a[7] * b); int ib = floatToByte(a[10] * r + a[11] * g + a[12] * b); return Color.argb(Color.alpha(color), pinToByte(ir), pinToByte(ig), pinToByte(ib)); } private static final float PI = 3.1415926f; @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX() - CENTER_X; float y = event.getY() - CENTER_Y; boolean inCenter = java.lang.Math.sqrt(x*x + y*y) &lt;= CENTER_RADIUS; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mTrackingCenter = inCenter; if (inCenter) { mHighlightCenter = true; invalidate(); break; } case MotionEvent.ACTION_MOVE: if (mTrackingCenter) { if (mHighlightCenter != inCenter) { mHighlightCenter = inCenter; invalidate(); } } else { float angle = (float)java.lang.Math.atan2(y, x); // need to turn angle [-PI ... PI] into unit [0....1] float unit = angle/(2*PI); if (unit &lt; 0) { unit += 1; } mCenterPaint.setColor(interpColor(mColors, unit)); invalidate(); } break; case MotionEvent.ACTION_UP: if (mTrackingCenter) { if (inCenter) { mListener.colorChanged(mCenterPaint.getColor()); } mTrackingCenter = false; // so we draw w/o halo invalidate(); } break; } return true; } } public ColorPickerDialog(Context context, OnColorChangedListener listener, int initialColor) { super(context); mListener = listener; mInitialColor = initialColor; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); OnColorChangedListener l = new OnColorChangedListener() { public void colorChanged(int color) { mListener.colorChanged(color); dismiss(); } }; setContentView(new ColorPickerView(getContext(), l, mInitialColor)); setTitle("Pick a Color"); } } </code></pre> <p><strong>Logcat</strong></p> <pre><code>08-06 13:16:17.164: E/AndroidRuntime(2421): FATAL EXCEPTION: main 08-06 13:16:17.164: E/AndroidRuntime(2421): java.lang.NullPointerException 08-06 13:16:17.164: E/AndroidRuntime(2421): at com.example.singletouch.MainActivity$8.onClick(MainActivity.java:184) 08-06 13:16:17.164: E/AndroidRuntime(2421): at android.view.View.performClick(View.java:3511) 08-06 13:16:17.164: E/AndroidRuntime(2421): at android.view.View$PerformClick.run(View.java:14109) 08-06 13:16:17.164: E/AndroidRuntime(2421): at android.os.Handler.handleCallback(Handler.java:605) 08-06 13:16:17.164: E/AndroidRuntime(2421): at android.os.Handler.dispatchMessage(Handler.java:92) 08-06 13:16:17.164: E/AndroidRuntime(2421): at android.os.Looper.loop(Looper.java:137) 08-06 13:16:17.164: E/AndroidRuntime(2421): at android.app.ActivityThread.main(ActivityThread.java:4424) 08-06 13:16:17.164: E/AndroidRuntime(2421): at java.lang.reflect.Method.invokeNative(Native Method) 08-06 13:16:17.164: E/AndroidRuntime(2421): at java.lang.reflect.Method.invoke(Method.java:511) 08-06 13:16:17.164: E/AndroidRuntime(2421): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 08-06 13:16:17.164: E/AndroidRuntime(2421): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 08-06 13:16:17.164: E/AndroidRuntime(2421): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>... Please help me..!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload