Friday, 27 December 2013
Thursday, 26 December 2013
Android, Java Tutorial
Android Tutorial
Webservices call in android
http://blog.enbake.com/integrating-google-maps-api-v2-with-android-application/
AIDL services example with source code
https://thenewcircle.com/s/post/48/implementing_remote_interface_using_aidl
Webservices call in android
http://blog.enbake.com/integrating-google-maps-api-v2-with-android-application/
AIDL services example with source code
https://thenewcircle.com/s/post/48/implementing_remote_interface_using_aidl
Practical Interview
- Sqlite database tutorial and source code
- Json data posting on server
Note: add android library and clean buit project
http://hmkcode.com/android-simple-sqlite-database-tutorial/
Sliding menu with drawer
http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/
Action bar
http://www.androidhive.info/2013/11/android-working-with-action-bar/
Image galary
http://viralpatel.net/blogs/pick-image-from-galary-android-app/
Endless Listview
https://github.com/survivingwithandroid/Surviving-with-android
upload file on php server
http://androidexample.com/Upload_File_To_Server_-_Android_Example/index.php?view=article_discription&aid=83&aaid=106
Good Map v2 integration
http://ramsandroid4all.blogspot.in/2013/03/google-maps-android-api-v2.html
Androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="17" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
The following two permissions are not required to use
Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission
android:name="com.example.androidapp.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.androidapp.permission.MAPS_RECEIVE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.androidapp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="key" />
</application>
</manifest>
Facebook integration
http://stackoverflow.com/questions/16948180/login-approach-with-android-facebook-3-0-sdk
https://github.com/androidcook/Android-Cookbook-Examples
Rest web services call from android
http://blog.enbake.com/integrating-google-maps-api-v2-with-android-application/
Get and post data using rest services
http://android-action.blogspot.in/2013/08/rest-client-api_30.html#more
Fragment example
http://bradipao.blogspot.in/2012/03/fragment-tutorial-part-2.html
- Json data posting on server
Note: add android library and clean buit project
http://hmkcode.com/android-simple-sqlite-database-tutorial/
Sliding menu with drawer
http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/
Action bar
http://www.androidhive.info/2013/11/android-working-with-action-bar/
Image galary
http://viralpatel.net/blogs/pick-image-from-galary-android-app/
How to start/ launch application at boot time Android
http://stackoverflow.com/questions/10428510/how-to-start-launch-application-at-boot-time-androidEndless Listview
https://github.com/survivingwithandroid/Surviving-with-android
upload file on php server
http://androidexample.com/Upload_File_To_Server_-_Android_Example/index.php?view=article_discription&aid=83&aaid=106
Good Map v2 integration
http://ramsandroid4all.blogspot.in/2013/03/google-maps-android-api-v2.html
Androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="17" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
The following two permissions are not required to use
Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission
android:name="com.example.androidapp.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.androidapp.permission.MAPS_RECEIVE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.androidapp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="key" />
</application>
</manifest>
Facebook integration
http://stackoverflow.com/questions/16948180/login-approach-with-android-facebook-3-0-sdk
https://github.com/androidcook/Android-Cookbook-Examples
Rest web services call from android
http://blog.enbake.com/integrating-google-maps-api-v2-with-android-application/
Get and post data using rest services
http://android-action.blogspot.in/2013/08/rest-client-api_30.html#more
Fragment example
http://bradipao.blogspot.in/2012/03/fragment-tutorial-part-2.html
Monday, 23 December 2013
What are the differences between LinearLayout, RelativeLayout, and AbsoluteLayout?
FrameLayout : Layout that acts as a view frame to display a single object.RelativeLayout :Enables you to specify the location of child objects relative to each other (child A to the left of child B) or to the parent (aligned to the top of the parent).LinearLayout :A layout that organizes its children into a single horizontal or vertical row. It creates a scrollbar if the length of the window exceeds the length of the screen.TableLayout :A tabular layout with an arbitrary number of rows and columns, each cell holding the widget of your choice. The rows resize to fit the largest column. The cell borders are not visible. |
Wednesday, 27 November 2013
Animation IDE
1) Free open source animation tutorial.
http://www.blender.org/
Create a game for level for unity.
http://www.youtube.com/watch?v=mbm9lPB5GPw
http://www.blender.org/
Create a game for level for unity.
http://www.youtube.com/watch?v=mbm9lPB5GPw
Tuesday, 26 November 2013
Monday, 25 November 2013
Basic tutorial for Unity android game development.
1)Back key event
2) Object touch event
3) LookAtCamera.js
function Update(){ if ( Application.platform == RuntimePlatform.Android ){ if (Input.GetKey(KeyCode.Escape)){ Application.Quit(); } } }
function Update () { TapSelected(); } function TapSelected() { for ( var touch : Touch in Input.touches) { if (touch.phase == TouchPhase.Began) { var ray : Ray = Camera.main.ScreenPointToRay(touch.position); var hit : RaycastHit; if (Physics.Raycast(ray, hit)) { print("selected"); hit.transform.SendMessage("Selected"); }else{ print("unselected"); } } } }
.js var whoToLookAt : Transform; var smoothTime : float = 0.3; private var yVelocity = 0.0; var distanceAbove: float = 0.4; var distanceAway = -1; function LateUpdate( ) { /* transform the camera so it is a distance away from target */ transform.position = whoToLookAt.position + Vector3(0, distanceAbove, distanceAway); /* Look at the target */ //transform.LookAt( whoToLookAt ); } /* LateUpdate */
Saturday, 23 November 2013
Friday, 15 November 2013
Thursday, 14 November 2013
Tuesday, 12 November 2013
Unity Game Development
Simple Tutorial
http://3dgep.com/?p=3246
http://www.youtube.com/watch?v=edfd1HJmKPY
Starting tutorial
http://primerlabs.com/unity101
Basic Game Video Tutorial
http://www.youtube.com/watch?v=9U_qjDb0fAM&list=SPCD6B6D279036462A
3D Charactor
http://www.mixamo.com/editor/new/729?character_id=122118
Texure for Game
http://www.cgtextures.com/
Video Tutorial
http://walkerboystudio.com/html/unity_training___free__.html
Terrian Basic
http://dev.tutsplus.com/tutorials/getting-started-with-unity--active-8031
GUI
https://www.youtube.com/watch?v=JEMdbT7HWqw
Animation
http://itween.pixelplacement.com/gettingstarted.php
JavaScript for Unity(Basic tutorial)
http://www.saintannsny.org/depart/computer/classes/gameprog/miker_unity_scripting_tutorial.html
Unity Game development tutorial(PDF)
http://www.gobookee.org/unity-tutorials/
Game example and how it's work
http://www.gobookee.org/get_book.php?u=aHR0cDovL3d3dy5jcy52dS5ubC9+ZWxpZW5zL21lZGlhL2xpYi11bml0eS10dXRvcmlhbC1tMmgtMi5wZGYKVW5pdHkgZ2FtZSBleGFtcGxlcw==
Naming conversion
http://unitygems.com/
http://3dgep.com/?p=3246
http://www.youtube.com/watch?v=edfd1HJmKPY
Starting tutorial
http://primerlabs.com/unity101
Basic Game Video Tutorial
http://www.youtube.com/watch?v=9U_qjDb0fAM&list=SPCD6B6D279036462A
3D Charactor
http://www.mixamo.com/editor/new/729?character_id=122118
Texure for Game
http://www.cgtextures.com/
Video Tutorial
http://walkerboystudio.com/html/unity_training___free__.html
Terrian Basic
http://dev.tutsplus.com/tutorials/getting-started-with-unity--active-8031
GUI
https://www.youtube.com/watch?v=JEMdbT7HWqw
Animation
http://itween.pixelplacement.com/gettingstarted.php
JavaScript for Unity(Basic tutorial)
http://www.saintannsny.org/depart/computer/classes/gameprog/miker_unity_scripting_tutorial.html
Unity Game development tutorial(PDF)
http://www.gobookee.org/unity-tutorials/
Game example and how it's work
http://www.gobookee.org/get_book.php?u=aHR0cDovL3d3dy5jcy52dS5ubC9+ZWxpZW5zL21lZGlhL2xpYi11bml0eS10dXRvcmlhbC1tMmgtMi5wZGYKVW5pdHkgZ2FtZSBleGFtcGxlcw==
Naming conversion
http://unitygems.com/
Thursday, 31 October 2013
Wednesday, 30 October 2013
Device Art Generator
The device art generator allows you to quickly wrap your app screenshots in real device artwork. This provides better visual context for your app screenshots on your web site or in other promotional materials.
http://developer.android.com/distribute/promote/device-art.html
http://developer.android.com/distribute/promote/device-art.html
Friday, 25 October 2013
Monday, 21 October 2013
Sunday, 20 October 2013
Friday, 18 October 2013
Tuesday, 15 October 2013
Android splash screen logic
new CountDownTimer(2500, 1000) { @Override public void onTick(long millisUntilFinished) { } @Override public void onFinish() { Intent i = new Intent(SplashActivity.this, HomeActivity.class); startActivity(i); SplashActivity.this.finish(); } }.start();
Friday, 11 October 2013
Thursday, 10 October 2013
Multiscreen android application
Download following apk
https://play.google.com/store/apps/details?id=nl.sogeti.android.deviceprofiler&hl=en
and check for particular device and create layout folder.
https://play.google.com/store/apps/details?id=nl.sogeti.android.deviceprofiler&hl=en
and check for particular device and create layout folder.
Wednesday, 9 October 2013
Painting on image.
ColorPicker.java
ColorPickerDialog.java
MainActivity.java
/* * Copyright 2013 Piotr Adamus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.extras; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ComposeShader; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Paint.Join; import android.graphics.Paint.Style; import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.RadialGradient; import android.graphics.RectF; import android.graphics.Shader.TileMode; import android.graphics.SweepGradient; import android.os.Bundle; import android.os.Parcelable; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class ColorPicker extends View { /** * Customizable display parameters (in percents) */ private final int paramOuterPadding = 2; // outer padding of the whole color picker view private final int paramInnerPadding = 5; // distance between value slider wheel and inner color wheel private final int paramValueSliderWidth = 10; // width of the value slider private final int paramArrowPointerSize = 4; // size of the arrow pointer; set to 0 to hide the pointer private Paint colorWheelPaint; private Paint valueSliderPaint; private Paint colorViewPaint; private Paint colorPointerPaint; private RectF colorPointerCoords; private Paint valuePointerPaint; private Paint valuePointerArrowPaint; private RectF outerWheelRect; private RectF innerWheelRect; private Path colorViewPath; private Path valueSliderPath; private Path arrowPointerPath; private Bitmap colorWheelBitmap; private int valueSliderWidth; private int innerPadding; private int outerPadding; private int arrowPointerSize; private int outerWheelRadius; private int innerWheelRadius; private int colorWheelRadius; private Matrix gradientRotationMatrix; /** Currently selected color */ private float[] colorHSV = new float[] { 0f, 0f, 1f }; public ColorPicker(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public ColorPicker(Context context, AttributeSet attrs) { super(context, attrs); init(); } public ColorPicker(Context context) { super(context); init(); } private void init() { colorPointerPaint = new Paint(); colorPointerPaint.setStyle(Style.STROKE); colorPointerPaint.setStrokeWidth(2f); colorPointerPaint.setARGB(128, 0, 0, 0); valuePointerPaint = new Paint(); valuePointerPaint.setStyle(Style.STROKE); valuePointerPaint.setStrokeWidth(2f); valuePointerArrowPaint = new Paint(); colorWheelPaint = new Paint(); colorWheelPaint.setAntiAlias(true); colorWheelPaint.setDither(true); valueSliderPaint = new Paint(); valueSliderPaint.setAntiAlias(true); valueSliderPaint.setDither(true); colorViewPaint = new Paint(); colorViewPaint.setAntiAlias(true); colorViewPath = new Path(); valueSliderPath = new Path(); arrowPointerPath = new Path(); outerWheelRect = new RectF(); innerWheelRect = new RectF(); colorPointerCoords = new RectF(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); int size = Math.min(widthSize, heightSize); setMeasuredDimension(size, size); } @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas canvas) { int centerX = getWidth() / 2; int centerY = getHeight() / 2; // drawing color wheel canvas.drawBitmap(colorWheelBitmap, centerX - colorWheelRadius, centerY - colorWheelRadius, null); // drawing color view colorViewPaint.setColor(Color.HSVToColor(colorHSV)); canvas.drawPath(colorViewPath, colorViewPaint); // drawing value slider float[] hsv = new float[] { colorHSV[0], colorHSV[1], 1f }; SweepGradient sweepGradient = new SweepGradient(centerX, centerY, new int[] { Color.BLACK, Color.HSVToColor(hsv), Color.WHITE }, null); sweepGradient.setLocalMatrix(gradientRotationMatrix); valueSliderPaint.setShader(sweepGradient); canvas.drawPath(valueSliderPath, valueSliderPaint); // drawing color wheel pointer float hueAngle = (float) Math.toRadians(colorHSV[0]); int colorPointX = (int) (-Math.cos(hueAngle) * colorHSV[1] * colorWheelRadius) + centerX; int colorPointY = (int) (-Math.sin(hueAngle) * colorHSV[1] * colorWheelRadius) + centerY; float pointerRadius = 0.075f * colorWheelRadius; int pointerX = (int) (colorPointX - pointerRadius / 2); int pointerY = (int) (colorPointY - pointerRadius / 2); colorPointerCoords.set(pointerX, pointerY, pointerX + pointerRadius, pointerY + pointerRadius); canvas.drawOval(colorPointerCoords, colorPointerPaint); // drawing value pointer valuePointerPaint.setColor(Color.HSVToColor(new float[] { 0f, 0f, 1f - colorHSV[2] })); double valueAngle = (colorHSV[2] - 0.5f) * Math.PI; float valueAngleX = (float) Math.cos(valueAngle); float valueAngleY = (float) Math.sin(valueAngle); canvas.drawLine(valueAngleX * innerWheelRadius + centerX, valueAngleY * innerWheelRadius + centerY, valueAngleX * outerWheelRadius + centerX, valueAngleY * outerWheelRadius + centerY, valuePointerPaint); // drawing pointer arrow if (arrowPointerSize > 0) { drawPointerArrow(canvas); } } private void drawPointerArrow(Canvas canvas) { int centerX = getWidth() / 2; int centerY = getHeight() / 2; double tipAngle = (colorHSV[2] - 0.5f) * Math.PI; double leftAngle = tipAngle + Math.PI / 96; double rightAngle = tipAngle - Math.PI / 96; double tipAngleX = Math.cos(tipAngle) * outerWheelRadius; double tipAngleY = Math.sin(tipAngle) * outerWheelRadius; double leftAngleX = Math.cos(leftAngle) * (outerWheelRadius + arrowPointerSize); double leftAngleY = Math.sin(leftAngle) * (outerWheelRadius + arrowPointerSize); double rightAngleX = Math.cos(rightAngle) * (outerWheelRadius + arrowPointerSize); double rightAngleY = Math.sin(rightAngle) * (outerWheelRadius + arrowPointerSize); arrowPointerPath.reset(); arrowPointerPath.moveTo((float) tipAngleX + centerX, (float) tipAngleY + centerY); arrowPointerPath.lineTo((float) leftAngleX + centerX, (float) leftAngleY + centerY); arrowPointerPath.lineTo((float) rightAngleX + centerX, (float) rightAngleY + centerY); arrowPointerPath.lineTo((float) tipAngleX + centerX, (float) tipAngleY + centerY); valuePointerArrowPaint.setColor(Color.HSVToColor(colorHSV)); valuePointerArrowPaint.setStyle(Style.FILL); canvas.drawPath(arrowPointerPath, valuePointerArrowPaint); valuePointerArrowPaint.setStyle(Style.STROKE); valuePointerArrowPaint.setStrokeJoin(Join.ROUND); valuePointerArrowPaint.setColor(Color.BLACK); canvas.drawPath(arrowPointerPath, valuePointerArrowPaint); } @Override protected void onSizeChanged(int width, int height, int oldw, int oldh) { int centerX = width / 2; int centerY = height / 2; innerPadding = (int) (paramInnerPadding * width / 100); outerPadding = (int) (paramOuterPadding * width / 100); arrowPointerSize = (int) (paramArrowPointerSize * width / 100); valueSliderWidth = (int) (paramValueSliderWidth * width / 100); outerWheelRadius = width / 2 - outerPadding - arrowPointerSize; innerWheelRadius = outerWheelRadius - valueSliderWidth; colorWheelRadius = innerWheelRadius - innerPadding; outerWheelRect.set(centerX - outerWheelRadius, centerY - outerWheelRadius, centerX + outerWheelRadius, centerY + outerWheelRadius); innerWheelRect.set(centerX - innerWheelRadius, centerY - innerWheelRadius, centerX + innerWheelRadius, centerY + innerWheelRadius); colorWheelBitmap = createColorWheelBitmap(colorWheelRadius * 2, colorWheelRadius * 2); gradientRotationMatrix = new Matrix(); gradientRotationMatrix.preRotate(270, width / 2, height / 2); colorViewPath.arcTo(outerWheelRect, 270, -180); colorViewPath.arcTo(innerWheelRect, 90, 180); valueSliderPath.arcTo(outerWheelRect, 270, 180); valueSliderPath.arcTo(innerWheelRect, 90, -180); } private Bitmap createColorWheelBitmap(int width, int height) { Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); int colorCount = 12; int colorAngleStep = 360 / 12; int colors[] = new int[colorCount + 1]; float hsv[] = new float[] { 0f, 1f, 1f }; for (int i = 0; i < colors.length; i++) { hsv[0] = (i * colorAngleStep + 180) % 360; colors[i] = Color.HSVToColor(hsv); } colors[colorCount] = colors[0]; SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null); RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP); ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER); colorWheelPaint.setShader(composeShader); Canvas canvas = new Canvas(bitmap); canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint); return bitmap; } @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: int x = (int) event.getX(); int y = (int) event.getY(); int cx = x - getWidth() / 2; int cy = y - getHeight() / 2; double d = Math.sqrt(cx * cx + cy * cy); if (d <= colorWheelRadius) { colorHSV[0] = (float) (Math.toDegrees(Math.atan2(cy, cx)) + 180f); colorHSV[1] = Math.max(0f, Math.min(1f, (float) (d / colorWheelRadius))); invalidate(); } else if (x >= getWidth() / 2 && d >= innerWheelRadius) { colorHSV[2] = (float) Math.max(0, Math.min(1, Math.atan2(cy, cx) / Math.PI + 0.5f)); invalidate(); } return true; } return super.onTouchEvent(event); } public void setColor(int color) { Color.colorToHSV(color, colorHSV); } public int getColor() { return Color.HSVToColor(colorHSV); } @Override protected Parcelable onSaveInstanceState() { Bundle state = new Bundle(); state.putFloatArray("color", colorHSV); state.putParcelable("super", super.onSaveInstanceState()); return state; } @Override protected void onRestoreInstanceState(Parcelable state) { if (state instanceof Bundle) { Bundle bundle = (Bundle) state; colorHSV = bundle.getFloatArray("color"); super.onRestoreInstanceState(bundle.getParcelable("super")); } else { super.onRestoreInstanceState(state); } } }
package com.extras; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; public class ColorPickerDialog extends AlertDialog { private ColorPicker colorPickerView; private final OnColorSelectedListener onColorSelectedListener; public ColorPickerDialog(Context context, int initialColor, OnColorSelectedListener onColorSelectedListener) { super(context); this.onColorSelectedListener = onColorSelectedListener; RelativeLayout relativeLayout = new RelativeLayout(context); LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); colorPickerView = new ColorPicker(context); colorPickerView.setColor(initialColor); relativeLayout.addView(colorPickerView, layoutParams); setButton(BUTTON_POSITIVE, context.getString(android.R.string.ok), onClickListener); setButton(BUTTON_NEGATIVE, context.getString(android.R.string.cancel), onClickListener); setView(relativeLayout); } private OnClickListener onClickListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case BUTTON_POSITIVE: int selectedColor = colorPickerView.getColor(); onColorSelectedListener.onColorSelected(selectedColor); break; case BUTTON_NEGATIVE: dialog.dismiss(); break; } } }; public interface OnColorSelectedListener { public void onColorSelected(int color); } }
package com.example.aandroidcolorpickertest; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.os.Bundle; import android.util.AttributeSet; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; import com.extras.ColorPickerDialog.OnColorSelectedListener; public class MainActivity extends Activity { RelativeLayout rel; public static Bitmap mBitmap; public static Bitmap photoBitmap, tempBitmap; public static Paint mPaint; public static Display display; public static MyView myView; LinearLayout linearColors; RelativeLayout mainContainer; private boolean menuBoolean = true; Button btnPicker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rel = (RelativeLayout)findViewById(R.id.relative); btnPicker = (Button)findViewById(R.id.picker); display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); myView = new MyView(this); display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); // Setting mPaint mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setColor(0xFFFF0000); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setStrokeWidth(7); RelativeLayout.LayoutParams relt = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); rel.addView(new MyView(this), relt); btnPicker.bringToFront(); } public void PickColor(View v){ com.extras.ColorPickerDialog colorPickerDialog = new com.extras.ColorPickerDialog(this, 16777215, new OnColorSelectedListener() { @Override public void onColorSelected(int color) { mPaint.setXfermode(null); // Edited By Shreyash mPaint.setAlpha(0xFF); // Edited By Shreyash mPaint.setColor(color); } }); colorPickerDialog.show(); } // MyView Class Started ---------------------------------------------- public class MyView extends View { // private static final float MINP = 0.25f; // private static final float MAXP = 0.75f; private static final float TOUCH_TOLERANCE = 4; private Canvas mCanvas; private Path mPath; private Paint mBitmapPaint; private float mX, mY; public MyView(Context c) { super(c); mBitmap = Bitmap.createBitmap(display.getWidth(), display.getHeight(), Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); mPath = new Path(); mBitmapPaint = new Paint(Paint.DITHER_FLAG); // float minZoom = Math.min(display.getWidth()/(float)mBitmap.getWidth(), (display.getHeight())/(float)(mBitmap.getHeight())); // client code // matrix.postScale(minZoom, minZoom, display.getWidth()/2, display.getHeight()/2); // client code } public MyView(Context c, AttributeSet atrs) { super(c, atrs); mBitmap = Bitmap.createBitmap(display.getWidth(), display.getHeight(), Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); mPath = new Path(); mBitmapPaint = new Paint(Paint.DITHER_FLAG); // float minZoom = Math.min(display.getWidth()/(float)mBitmap.getWidth(), (display.getHeight())/(float)(mBitmap.getHeight())); // client code // matrix.postScale(minZoom, minZoom, display.getWidth()/2, display.getHeight()/2); // client code } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); } @Override protected void onDraw(Canvas canvas) { // set the Canvas Color // canvas.drawColor(Color.BLACK); // edited by Shreyash canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); // ORIGINAL canvas.drawPath(mPath, mPaint); } private void touch_start(float x, float y) { mPath.reset(); mPath.moveTo(x, y); mX = x; mY = y; } private void touch_move(float x, float y) { float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2); mX = x; mY = y; } } private void touch_up() { mPath.lineTo(mX, mY); // commit the path to our offscreen mCanvas.drawPath(mPath, mPaint); // kill this so we don't double draw mPath.reset(); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); //mCanvas.drawPath(mPath, mPaint); // edited by shreyash //hide the menu if (menuBoolean) { // hideMenuFunction(); } switch (event.getAction()) { case MotionEvent.ACTION_DOWN: touch_start(x, y); invalidate(); mCanvas.drawPath(mPath, mPaint); // edited by shreyash break; case MotionEvent.ACTION_MOVE: touch_move(x, y); invalidate(); mCanvas.drawPath(mPath, mPaint); // edited by shreyash break; case MotionEvent.ACTION_UP: touch_up(); invalidate(); break; } return true; } } // MyView Class Ended }
Subscribe to:
Posts (Atom)