diff --git a/README.md b/README.md index af738a5..6f4a205 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Based on How to use ---------- -Minimal SDK Version 11 +Minimal SDK Version 8 Usage with default colors (the default codes is 6) diff --git a/app/build.gradle b/app/build.gradle index d4978ab..6c47dc5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 22 + compileSdkVersion 20 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.github.glomadrian.codeinput" - minSdkVersion 11 - targetSdkVersion 22 + minSdkVersion 8 + targetSdkVersion 20 versionCode 11 versionName "1.1" } @@ -21,6 +21,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:22.2.0' + compile 'com.android.support:appcompat-v7:20.0.0' compile project(":codeinputlib") } diff --git a/app/src/main/java/com/github/glomadrian/codeinput/MainActivity.java b/app/src/main/java/com/github/glomadrian/codeinput/MainActivity.java index e2323af..3538265 100644 --- a/app/src/main/java/com/github/glomadrian/codeinput/MainActivity.java +++ b/app/src/main/java/com/github/glomadrian/codeinput/MainActivity.java @@ -1,9 +1,9 @@ package com.github.glomadrian.codeinput; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.ActionBarActivity; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/codeinputlib/build.gradle b/codeinputlib/build.gradle index 7c90a57..4c2903f 100644 --- a/codeinputlib/build.gradle +++ b/codeinputlib/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion "22.0.1" defaultConfig { - minSdkVersion 11 + minSdkVersion 8 targetSdkVersion 22 versionCode 11 versionName "1.1" @@ -21,6 +21,6 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - + compile fileTree(include: ['*.jar'], dir: 'libs') + compile 'com.nineoldandroids:library:2.4.0' } diff --git a/codeinputlib/src/main/java/com/github/glomadrian/codeinputlib/CodeInput.java b/codeinputlib/src/main/java/com/github/glomadrian/codeinputlib/CodeInput.java index 412f659..b9c7350 100644 --- a/codeinputlib/src/main/java/com/github/glomadrian/codeinputlib/CodeInput.java +++ b/codeinputlib/src/main/java/com/github/glomadrian/codeinputlib/CodeInput.java @@ -1,6 +1,5 @@ package com.github.glomadrian.codeinputlib; -import android.animation.ValueAnimator; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; @@ -12,8 +11,11 @@ import android.view.View; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.inputmethod.InputMethodManager; + import com.github.glomadrian.codeinputlib.data.FixedStack; import com.github.glomadrian.codeinputlib.model.Underline; +import com.nineoldandroids.animation.ValueAnimator; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -22,306 +24,316 @@ */ public class CodeInput extends View { - private static final int DEFAULT_CODES = 6; - private static final Pattern KEYCODE_PATTERN = Pattern.compile("KEYCODE_(\\w)"); - private FixedStack characters; - private Underline underlines[]; - private Paint underlinePaint; - private Paint underlineSelectedPaint; - private Paint textPaint; - private Paint hintPaint; - private ValueAnimator reductionAnimator; - private ValueAnimator hintYAnimator; - private ValueAnimator hintSizeAnimator; - private float underlineReduction; - private float underlineStrokeWidth; - private float underlineWidth; - private float reduction; - private float textSize; - private float textMarginBottom; - private float hintX; - private float hintNormalSize; - private float hintSmallSize; - private float hintMarginBottom; - private float hintActualMarginBottom; - private float viewHeight; - private long animationDuration; - private int height; - private int underlineAmount; - private int underlineColor; - private int underlineSelectedColor; - private int hintColor; - private int textColor; - private boolean underlined = true; - private String hintText; - - public CodeInput(Context context) { - super(context); - init(null); - } - - public CodeInput(Context context, AttributeSet attributeset) { - super(context, attributeset); - init(attributeset); - } - - public CodeInput(Context context, AttributeSet attributeset, int defStyledAttrs) { - super(context, attributeset, defStyledAttrs); - init(attributeset); - } - - private void init(AttributeSet attributeset) { - initDefaultAttributes(); - initCustomAttributes(attributeset); - initDataStructures(); - initPaint(); - initAnimator(); - initViewOptions(); - } - - private void initDefaultAttributes() { - underlineStrokeWidth = getContext().getResources().getDimension(R.dimen.underline_stroke_width); - underlineWidth = getContext().getResources().getDimension(R.dimen.underline_width); - underlineReduction = getContext().getResources().getDimension(R.dimen.section_reduction); - textSize = getContext().getResources().getDimension(R.dimen.text_size); - textMarginBottom = getContext().getResources().getDimension(R.dimen.text_margin_bottom); - underlineColor = getContext().getResources().getColor(R.color.underline_default_color); - underlineSelectedColor = getContext().getResources().getColor(R.color.underline_selected_color); - hintColor = getContext().getResources().getColor(R.color.hintColor); - textColor = getContext().getResources().getColor(R.color.textColor); - hintMarginBottom = getContext().getResources().getDimension(R.dimen.hint_margin_bottom); - hintNormalSize = getContext().getResources().getDimension(R.dimen.hint_size); - hintSmallSize = getContext().getResources().getDimension(R.dimen.hint_small_size); - animationDuration = getContext().getResources().getInteger(R.integer.animation_duration); - viewHeight = getContext().getResources().getDimension(R.dimen.view_height); - hintX = 0; - hintActualMarginBottom = 0; - underlineAmount = DEFAULT_CODES; - reduction = 0.0F; - } - - private void initCustomAttributes(AttributeSet attributeset) { - TypedArray attributes = - getContext().obtainStyledAttributes(attributeset, R.styleable.core_area); - - underlineColor = attributes.getColor(R.styleable.core_area_underline_color, underlineColor); - underlineSelectedColor = - attributes.getColor(R.styleable.core_area_underline_selected_color, underlineSelectedColor); - hintColor = attributes.getColor(R.styleable.core_area_underline_color, hintColor); - hintText = attributes.getString(R.styleable.core_area_hint_text); - underlineAmount = attributes.getInt(R.styleable.core_area_codes, underlineAmount); - textColor = attributes.getInt(R.styleable.core_area_text_color, textColor); - } - - private void initDataStructures() { - underlines = new Underline[underlineAmount]; - characters = new FixedStack(); - characters.setMaxSize(underlineAmount); - } - - private void initPaint() { - underlinePaint = new Paint(); - underlinePaint.setColor(underlineColor); - underlinePaint.setStrokeWidth(underlineStrokeWidth); - underlinePaint.setStyle(android.graphics.Paint.Style.STROKE); - underlineSelectedPaint = new Paint(); - underlineSelectedPaint.setColor(underlineSelectedColor); - underlineSelectedPaint.setStrokeWidth(underlineStrokeWidth); - underlineSelectedPaint.setStyle(android.graphics.Paint.Style.STROKE); - textPaint = new Paint(); - textPaint.setTextSize(textSize); - textPaint.setColor(textColor); - textPaint.setAntiAlias(true); - textPaint.setTextAlign(Paint.Align.CENTER); - hintPaint = new Paint(); - hintPaint = new Paint(); - hintPaint.setTextSize(hintNormalSize); - hintPaint.setAntiAlias(true); - hintPaint.setColor(underlineColor); - } - - private void initAnimator() { - reductionAnimator = ValueAnimator.ofFloat(0, underlineReduction); - reductionAnimator.setDuration(animationDuration); - reductionAnimator.addUpdateListener(new ReductionAnimatorListener()); - reductionAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); - hintSizeAnimator = ValueAnimator.ofFloat(hintNormalSize, hintSmallSize); - hintSizeAnimator.setDuration(animationDuration); - hintSizeAnimator.addUpdateListener(new HintSizeAnimatorListener()); - hintSizeAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); - hintYAnimator = ValueAnimator.ofFloat(0, hintMarginBottom); - hintYAnimator.setDuration(animationDuration); - hintYAnimator.addUpdateListener(new HintYAnimatorListener()); - hintYAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); - } - - private void initViewOptions() { - setFocusable(true); - setFocusableInTouchMode(true); - } - - @Override - protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) { - super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); - if (!gainFocus && characters.size() == 0) { - reverseAnimation(); + private static final int DEFAULT_CODES = 6; + private static final Pattern KEYCODE_PATTERN = Pattern.compile("\\w"); + private FixedStack characters; + private Underline underlines[]; + private Paint underlinePaint; + private Paint underlineSelectedPaint; + private Paint textPaint; + private Paint hintPaint; + private ValueAnimator reductionAnimator; + private ValueAnimator hintYAnimator; + private ValueAnimator hintSizeAnimator; + private float underlineReduction; + private float underlineStrokeWidth; + private float underlineWidth; + private float reduction; + private float textSize; + private float textMarginBottom; + private float hintX; + private float hintNormalSize; + private float hintSmallSize; + private float hintMarginBottom; + private float hintActualMarginBottom; + private float viewHeight; + private long animationDuration; + private int height; + private int underlineAmount; + private int underlineColor; + private int underlineSelectedColor; + private int hintColor; + private int textColor; + private boolean underlined = true; + private String hintText; + + public CodeInput(Context context) { + super(context); + init(null); + } + + public CodeInput(Context context, AttributeSet attributeset) { + super(context, attributeset); + init(attributeset); } - } - - @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { - super.onSizeChanged(w, (int) viewHeight, oldw, oldh); - height = h; - initUnderline(); - } - - @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - setMeasuredDimension(getMeasuredWidth(), (int) viewHeight); - } - - private void initUnderline() { - for (int i = 0; i < underlineAmount; i++) { - underlines[i] = createPath(i, underlineWidth); + + public CodeInput(Context context, AttributeSet attributeset, int defStyledAttrs) { + super(context, attributeset, defStyledAttrs); + init(attributeset); } - } - - private Underline createPath(int position, float sectionWidth) { - float fromX = sectionWidth * (float) position; - return new Underline(fromX, height, fromX + sectionWidth, height); - } - - private void showKeyboard() { - InputMethodManager inputmethodmanager = - (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - inputmethodmanager.showSoftInput(this, InputMethodManager.RESULT_UNCHANGED_SHOWN); - inputmethodmanager.viewClicked(this); - } - - private void startAnimation() { - reductionAnimator.start(); - hintSizeAnimator.start(); - hintYAnimator.start(); - underlined = false; - } - - private void reverseAnimation() { - reductionAnimator.reverse(); - hintSizeAnimator.reverse(); - hintYAnimator.reverse(); - underlined = true; - } - - /** - * Detects the del key and delete the numbers - */ - @Override public boolean onKeyDown(int keyCode, KeyEvent keyevent) { - if (keyCode == KeyEvent.KEYCODE_DEL && characters.size() != 0) { - characters.pop(); + + private void init(AttributeSet attributeset) { + initDefaultAttributes(); + initCustomAttributes(attributeset); + initDataStructures(); + initPaint(); + initAnimator(); + initViewOptions(); } - return super.onKeyDown(keyCode, keyevent); - } - - /** - * Capture the keyboard events but only if are A-Z 0-9 - */ - @Override public boolean onKeyUp(int keyCode, KeyEvent keyevent) { - String text = KeyEvent.keyCodeToString(keyCode); - Matcher matcher = KEYCODE_PATTERN.matcher(text); - if (matcher.matches()) { - char character = matcher.group(1).charAt(0); - characters.push(character); - return true; - } else { - return false; + + private void initDefaultAttributes() { + underlineStrokeWidth = getContext().getResources().getDimension(R.dimen.underline_stroke_width); + underlineWidth = getContext().getResources().getDimension(R.dimen.underline_width); + underlineReduction = getContext().getResources().getDimension(R.dimen.section_reduction); + textSize = getContext().getResources().getDimension(R.dimen.text_size); + textMarginBottom = getContext().getResources().getDimension(R.dimen.text_margin_bottom); + underlineColor = getContext().getResources().getColor(R.color.underline_default_color); + underlineSelectedColor = getContext().getResources().getColor(R.color.underline_selected_color); + hintColor = getContext().getResources().getColor(R.color.hintColor); + textColor = getContext().getResources().getColor(R.color.textColor); + hintMarginBottom = getContext().getResources().getDimension(R.dimen.hint_margin_bottom); + hintNormalSize = getContext().getResources().getDimension(R.dimen.hint_size); + hintSmallSize = getContext().getResources().getDimension(R.dimen.hint_small_size); + animationDuration = getContext().getResources().getInteger(R.integer.animation_duration); + viewHeight = getContext().getResources().getDimension(R.dimen.view_height); + hintX = 0; + hintActualMarginBottom = 0; + underlineAmount = DEFAULT_CODES; + reduction = 0.0F; } - } - - /** - * When a touch is detected the view need to focus and animate if is necessary - */ - @Override public boolean onTouchEvent(MotionEvent motionevent) { - if (motionevent.getAction() == 0) { - requestFocus(); - if (underlined) { - startAnimation(); - } - - showKeyboard(); + + private void initCustomAttributes(AttributeSet attributeset) { + TypedArray attributes = + getContext().obtainStyledAttributes(attributeset, R.styleable.core_area); + + underlineColor = attributes.getColor(R.styleable.core_area_underline_color, underlineColor); + underlineSelectedColor = + attributes.getColor(R.styleable.core_area_underline_selected_color, underlineSelectedColor); + hintColor = attributes.getColor(R.styleable.core_area_underline_color, hintColor); + hintText = attributes.getString(R.styleable.core_area_hint_text); + underlineAmount = attributes.getInt(R.styleable.core_area_codes, underlineAmount); + textColor = attributes.getInt(R.styleable.core_area_text_color, textColor); } - return super.onTouchEvent(motionevent); - } - - @Override protected void onDraw(Canvas canvas) { - for (int i = 0; i < underlines.length; i++) { - Underline sectionpath = underlines[i]; - float fromX = sectionpath.getFromX() + reduction; - float fromY = sectionpath.getFromY(); - float toX = sectionpath.getToX() - reduction; - float toY = sectionpath.getToY(); - drawSection(i, fromX, fromY, toX, toY, canvas); - if (characters.toArray().length > i && characters.size() != 0) { - drawCharacter(fromX, toX, characters.get(i), canvas); - } + + private void initDataStructures() { + underlines = new Underline[underlineAmount]; + characters = new FixedStack(); + characters.setMaxSize(underlineAmount); } - if (hintText != null) { - drawHint(canvas); + + private void initPaint() { + underlinePaint = new Paint(); + underlinePaint.setColor(underlineColor); + underlinePaint.setStrokeWidth(underlineStrokeWidth); + underlinePaint.setStyle(android.graphics.Paint.Style.STROKE); + underlineSelectedPaint = new Paint(); + underlineSelectedPaint.setColor(underlineSelectedColor); + underlineSelectedPaint.setStrokeWidth(underlineStrokeWidth); + underlineSelectedPaint.setStyle(android.graphics.Paint.Style.STROKE); + textPaint = new Paint(); + textPaint.setTextSize(textSize); + textPaint.setColor(textColor); + textPaint.setAntiAlias(true); + textPaint.setTextAlign(Paint.Align.CENTER); + hintPaint = new Paint(); + hintPaint = new Paint(); + hintPaint.setTextSize(hintNormalSize); + hintPaint.setAntiAlias(true); + hintPaint.setColor(underlineColor); } - invalidate(); - } - - private void drawSection(int position, float fromX, float fromY, float toX, float toY, - Canvas canvas) { - Paint paint = underlinePaint; - if (position == characters.size() && !underlined) { - paint = underlineSelectedPaint; + + private void initAnimator() { + reductionAnimator = ValueAnimator.ofFloat(0, underlineReduction); + reductionAnimator.setDuration(animationDuration); + reductionAnimator.addUpdateListener(new ReductionAnimatorListener()); + reductionAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); + hintSizeAnimator = ValueAnimator.ofFloat(hintNormalSize, hintSmallSize); + hintSizeAnimator.setDuration(animationDuration); + hintSizeAnimator.addUpdateListener(new HintSizeAnimatorListener()); + hintSizeAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); + hintYAnimator = ValueAnimator.ofFloat(0, hintMarginBottom); + hintYAnimator.setDuration(animationDuration); + hintYAnimator.addUpdateListener(new HintYAnimatorListener()); + hintYAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); } - canvas.drawLine(fromX, fromY, toX, toY, paint); - } - - private void drawCharacter(float fromX, float toX, Character character, Canvas canvas) { - float actualWidth = toX - fromX; - float centerWidth = actualWidth / 2; - float centerX = fromX + centerWidth; - canvas.drawText(character.toString(), centerX, height - textMarginBottom, textPaint); - } - - private void drawHint(Canvas canvas) { - canvas.drawText(hintText, hintX, height - textMarginBottom - hintActualMarginBottom, hintPaint); - } - - public Character[] getCode() { - return characters.toArray(new Character[underlineAmount]); - } - - /** - * Listener to update the reduction of the underline bars - */ - private class ReductionAnimatorListener implements ValueAnimator.AnimatorUpdateListener { - - public void onAnimationUpdate(ValueAnimator valueanimator) { - float value = ((Float) valueanimator.getAnimatedValue()).floatValue(); - reduction = value; + + private void initViewOptions() { + setFocusable(true); + setFocusableInTouchMode(true); } - } - /** - * Listener to update the hint y values - */ - private class HintYAnimatorListener implements ValueAnimator.AnimatorUpdateListener { + @Override + protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) { + super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); + if (!gainFocus && characters.size() == 0) { + reverseAnimation(); + } + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, (int) viewHeight, oldw, oldh); + height = h; + initUnderline(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + setMeasuredDimension(getMeasuredWidth(), (int) viewHeight); + } + + private void initUnderline() { + for (int i = 0; i < underlineAmount; i++) { + underlines[i] = createPath(i, underlineWidth); + } + } + + private Underline createPath(int position, float sectionWidth) { + float fromX = sectionWidth * (float) position; + return new Underline(fromX, height, fromX + sectionWidth, height); + } + + private void showKeyboard() { + InputMethodManager inputmethodmanager = + (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + inputmethodmanager.showSoftInput(this, InputMethodManager.RESULT_UNCHANGED_SHOWN); +// inputmethodmanager.viewClicked(this); + } - @Override public void onAnimationUpdate(ValueAnimator animation) { - hintActualMarginBottom = (float) animation.getAnimatedValue(); + private void startAnimation() { + reductionAnimator.start(); + hintSizeAnimator.start(); + hintYAnimator.start(); + underlined = false; } - } - /** - * Listener to update the size of the hint text - */ - private class HintSizeAnimatorListener implements ValueAnimator.AnimatorUpdateListener { + private void reverseAnimation() { + reductionAnimator.reverse(); + hintSizeAnimator.reverse(); + hintYAnimator.reverse(); + underlined = true; + } + + /** + * Detects the del key and delete the numbers + */ + @Override + public boolean onKeyDown(int keyCode, KeyEvent keyevent) { + if (keyCode == KeyEvent.KEYCODE_DEL && characters.size() != 0) { + characters.pop(); + } + return super.onKeyDown(keyCode, keyevent); + } + + /** + * Capture the keyboard events but only if are A-Z 0-9 + */ + @Override + public boolean onKeyUp(int keyCode, KeyEvent keyevent) { + String text = keyevent.getDisplayLabel() + ""; + Matcher matcher = KEYCODE_PATTERN.matcher(text); + if (matcher.matches()) { + char character = matcher.group().charAt(0); + characters.push(character); + invalidate(); + return true; + } else { + return false; + } + } + /** + * When a touch is detected the view need to focus and animate if is necessary + */ + @Override + public boolean onTouchEvent(MotionEvent motionevent) { + if (motionevent.getAction() == 0) { + requestFocus(); + if (underlined) { + startAnimation(); + } + + showKeyboard(); + } + return super.onTouchEvent(motionevent); + } + + @Override + protected void onDraw(Canvas canvas) { + for (int i = 0; i < underlines.length; i++) { + Underline sectionpath = underlines[i]; + float fromX = sectionpath.getFromX() + reduction; + float fromY = sectionpath.getFromY(); + float toX = sectionpath.getToX() - reduction; + float toY = sectionpath.getToY(); + drawSection(i, fromX, fromY, toX, toY, canvas); + if (characters.toArray().length > i && characters.size() != 0) { + drawCharacter(fromX, toX, characters.get(i), canvas); + } + } + if (hintText != null) { + drawHint(canvas); + } +// invalidate(); + } + + private void drawSection(int position, float fromX, float fromY, float toX, float toY, + Canvas canvas) { + Paint paint = underlinePaint; + if (position == characters.size() && !underlined) { + paint = underlineSelectedPaint; + } + canvas.drawLine(fromX, fromY, toX, toY, paint); + } + + private void drawCharacter(float fromX, float toX, Character character, Canvas canvas) { + float actualWidth = toX - fromX; + float centerWidth = actualWidth / 2; + float centerX = fromX + centerWidth; + canvas.drawText(character.toString(), centerX, height - textMarginBottom, textPaint); + } + + private void drawHint(Canvas canvas) { + canvas.drawText(hintText, hintX, height - textMarginBottom - hintActualMarginBottom, hintPaint); + } + + public Character[] getCode() { + return characters.toArray(new Character[underlineAmount]); + } + + /** + * Listener to update the reduction of the underline bars + */ + private class ReductionAnimatorListener implements ValueAnimator.AnimatorUpdateListener { + + public void onAnimationUpdate(ValueAnimator valueanimator) { + float value = ((Float) valueanimator.getAnimatedValue()).floatValue(); + reduction = value; + invalidate(); + } + } + + /** + * Listener to update the hint y values + */ + private class HintYAnimatorListener implements ValueAnimator.AnimatorUpdateListener { + + @Override + public void onAnimationUpdate(ValueAnimator animation) { + hintActualMarginBottom = (float) animation.getAnimatedValue(); + } + } - @Override public void onAnimationUpdate(ValueAnimator animation) { - float size = (float) animation.getAnimatedValue(); - hintPaint.setTextSize(size); + /** + * Listener to update the size of the hint text + */ + private class HintSizeAnimatorListener implements ValueAnimator.AnimatorUpdateListener { + + @Override + public void onAnimationUpdate(ValueAnimator animation) { + float size = (float) animation.getAnimatedValue(); + hintPaint.setTextSize(size); + invalidate(); + } } - } } diff --git a/gradle.properties b/gradle.properties index 1d3591c..6fca41b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,17 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - +## Project-wide Gradle settings. +# # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - +# # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx10248m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - +# # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file +# org.gradle.parallel=true +#Wed Aug 05 09:44:42 CST 2015 +systemProp.http.proxyHost=127.0.0.1 +systemProp.http.proxyPort=8580