diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 5517f324..e5b8a7a4 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -6,6 +6,7 @@
+
-
-
+
\ No newline at end of file
diff --git a/Material.iml b/Material.iml
index d0f29e8a..d987a23d 100644
--- a/Material.iml
+++ b/Material.iml
@@ -4,6 +4,7 @@
+
@@ -15,5 +16,4 @@
-
-
+
\ No newline at end of file
diff --git a/app/app.iml b/app/app.iml
index 4b91df35..3e7e0534 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -12,8 +12,9 @@
-
+
+
@@ -92,5 +93,4 @@
-
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cf22cec9..5f532785 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "com.rey.material.demo"
minSdkVersion 9
targetSdkVersion 21
- versionCode 2
- versionName "0.0.2"
+ versionCode 3
+ versionName "0.0.3"
}
signingConfigs {
diff --git a/app/src/main/java/com/rey/material/demo/ButtonFragment.java b/app/src/main/java/com/rey/material/demo/ButtonFragment.java
index 31066367..7e2bed16 100644
--- a/app/src/main/java/com/rey/material/demo/ButtonFragment.java
+++ b/app/src/main/java/com/rey/material/demo/ButtonFragment.java
@@ -86,37 +86,37 @@ public void onClick(View v) {
bt_float_color.setOnClickListener(listener_delay);
bt_float_wave_color.setOnClickListener(listener_delay);
- bt_flat.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v) {
- RecurringPickerDialog.Builder builder = new RecurringPickerDialog.Builder(R.style.Material_App_Dialog_Light){
- @Override
- public void onPositiveActionClicked(DialogFragment fragment) {
- RecurringPickerDialog dialog = (RecurringPickerDialog)fragment.getDialog();
- Toast.makeText(fragment.getActivity(), dialog.getRecurring().toString(), Toast.LENGTH_LONG).show();
- fragment.dismiss();
- }
-
- @Override
- public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getActivity(), "Cancelled", Toast.LENGTH_SHORT).show();
- fragment.dismiss();
- }
- };
- Recurring recurring = new Recurring();
- recurring.setStartTime(System.currentTimeMillis());
- recurring.setRepeatMode(Recurring.REPEAT_WEEKLY);
- recurring.setEnabledWeekday(Calendar.SUNDAY, true);
- recurring.setEnabledWeekday(Calendar.TUESDAY, true);
- builder.recurring(recurring)
- .datePickerLayoutStyle(R.style.Material_App_Dialog_DatePicker_Light)
- .positiveAction("OK")
- .negativeAction("CANCEL");
-
- DialogFragment fragment = DialogFragment.newInstance(builder);
- fragment.show(getFragmentManager(), null);
- }
- });
+// bt_flat.setOnClickListener(new View.OnClickListener(){
+// @Override
+// public void onClick(View v) {
+// RecurringPickerDialog.Builder builder = new RecurringPickerDialog.Builder(R.style.Material_App_Dialog_Light){
+// @Override
+// public void onPositiveActionClicked(DialogFragment fragment) {
+// RecurringPickerDialog dialog = (RecurringPickerDialog)fragment.getDialog();
+// Toast.makeText(fragment.getActivity(), dialog.getRecurring().toString(), Toast.LENGTH_LONG).show();
+// fragment.dismiss();
+// }
+//
+// @Override
+// public void onNegativeActionClicked(DialogFragment fragment) {
+// Toast.makeText(fragment.getActivity(), "Cancelled", Toast.LENGTH_SHORT).show();
+// fragment.dismiss();
+// }
+// };
+// Recurring recurring = new Recurring();
+// recurring.setStartTime(System.currentTimeMillis());
+// recurring.setRepeatMode(Recurring.REPEAT_WEEKLY);
+// recurring.setEnabledWeekday(Calendar.SUNDAY, true);
+// recurring.setEnabledWeekday(Calendar.TUESDAY, true);
+// builder.recurring(recurring)
+// .datePickerLayoutStyle(R.style.Material_App_Dialog_DatePicker_Light)
+// .positiveAction("OK")
+// .negativeAction("CANCEL");
+//
+// DialogFragment fragment = DialogFragment.newInstance(builder);
+// fragment.show(getFragmentManager(), null);
+// }
+// });
return v;
}
diff --git a/app/src/main/java/com/rey/material/demo/DialogsFragment.java b/app/src/main/java/com/rey/material/demo/DialogsFragment.java
index 2ae1b7a0..c98556de 100644
--- a/app/src/main/java/com/rey/material/demo/DialogsFragment.java
+++ b/app/src/main/java/com/rey/material/demo/DialogsFragment.java
@@ -28,6 +28,8 @@ public static DialogsFragment newInstance(){
return fragment;
}
+ private MainActivity mActivity;
+
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -55,6 +57,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
bt_time_dark.setOnClickListener(this);
bt_date_dark.setOnClickListener(this);
+ mActivity = (MainActivity)getActivity();
+
return v;
}
@@ -77,13 +81,13 @@ public void onClick(View v) {
builder = new SimpleDialog.Builder(R.style.SimpleDialogLight){
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Discarded", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Discarded", Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Canceled", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Canceled", Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -96,13 +100,13 @@ public void onNegativeActionClicked(DialogFragment fragment) {
builder = new SimpleDialog.Builder(R.style.SimpleDialog){
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Deleted", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Deleted", Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled", Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -115,13 +119,13 @@ public void onNegativeActionClicked(DialogFragment fragment) {
builder = new SimpleDialog.Builder(R.style.SimpleDialogLight){
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Agreed", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Agreed", Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Disagreed", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Disagreed", Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -142,13 +146,13 @@ protected void onBuildDone(Dialog dialog) {
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
EditText et_pass = (EditText)fragment.getDialog().findViewById(R.id.custom_et_password);
- Toast.makeText(fragment.getDialog().getContext(), "Connected. pass=" + et_pass.getText().toString(), Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Connected. pass=" + et_pass.getText().toString(), Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled", Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -162,13 +166,13 @@ public void onNegativeActionClicked(DialogFragment fragment) {
builder = new SimpleDialog.Builder(R.style.SimpleDialogLight){
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "You have selected " + getSelectedValue() + " as phone ringtone.", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "You have selected " + getSelectedValue() + " as phone ringtone.", Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled" , Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled" , Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -184,20 +188,20 @@ public void onNegativeActionClicked(DialogFragment fragment) {
public void onPositiveActionClicked(DialogFragment fragment) {
CharSequence[] values = getSelectedValues();
if(values == null)
- Toast.makeText(fragment.getDialog().getContext(), "You have selected nothing.", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "You have selected nothing.", Toast.LENGTH_SHORT).show();
else{
StringBuffer sb = new StringBuffer();
sb.append("You have selected ");
for(int i = 0; i < values.length; i++)
sb.append(values[i]).append(i == values.length - 1? "." : ", ");
- Toast.makeText(fragment.getDialog().getContext(), sb.toString(), Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, sb.toString(), Toast.LENGTH_SHORT).show();
}
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled" , Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled" , Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -212,13 +216,13 @@ public void onNegativeActionClicked(DialogFragment fragment) {
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
TimePickerDialog dialog = (TimePickerDialog)fragment.getDialog();
- Toast.makeText(fragment.getDialog().getContext(), "Time is " + dialog.getFormattedTime(SimpleDateFormat.getTimeInstance()), Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Time is " + dialog.getFormattedTime(SimpleDateFormat.getTimeInstance()), Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled" , Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled" , Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -232,13 +236,13 @@ public void onNegativeActionClicked(DialogFragment fragment) {
public void onPositiveActionClicked(DialogFragment fragment) {
DatePickerDialog dialog = (DatePickerDialog)fragment.getDialog();
String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance());
- Toast.makeText(fragment.getDialog().getContext(), "Date is " + date, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Date is " + date, Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled" , Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled" , Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -251,13 +255,13 @@ public void onNegativeActionClicked(DialogFragment fragment) {
@Override
public void onPositiveActionClicked(DialogFragment fragment) {
TimePickerDialog dialog = (TimePickerDialog)fragment.getDialog();
- Toast.makeText(fragment.getDialog().getContext(), "Time is " + dialog.getFormattedTime(SimpleDateFormat.getTimeInstance()), Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Time is " + dialog.getFormattedTime(SimpleDateFormat.getTimeInstance()), Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled" , Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled" , Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
@@ -271,13 +275,13 @@ public void onNegativeActionClicked(DialogFragment fragment) {
public void onPositiveActionClicked(DialogFragment fragment) {
DatePickerDialog dialog = (DatePickerDialog)fragment.getDialog();
String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance());
- Toast.makeText(fragment.getDialog().getContext(), "Date is " + date, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Date is " + date, Toast.LENGTH_SHORT).show();
super.onPositiveActionClicked(fragment);
}
@Override
public void onNegativeActionClicked(DialogFragment fragment) {
- Toast.makeText(fragment.getDialog().getContext(), "Cancelled" , Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, "Cancelled" , Toast.LENGTH_SHORT).show();
super.onNegativeActionClicked(fragment);
}
};
diff --git a/app/src/main/java/com/rey/material/demo/SpinnersFragment.java b/app/src/main/java/com/rey/material/demo/SpinnersFragment.java
index 567f1b8c..741459c6 100644
--- a/app/src/main/java/com/rey/material/demo/SpinnersFragment.java
+++ b/app/src/main/java/com/rey/material/demo/SpinnersFragment.java
@@ -34,7 +34,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
Spinner spn_no_arrow = (Spinner)v.findViewById(R.id.spinner_no_arrow);
String[] items = new String[20];
for(int i = 0; i < items.length; i++)
- items[i] = String.valueOf(i + 1);
+ items[i] = "Item " + String.valueOf(i + 1);
ArrayAdapter adapter = new ArrayAdapter<>(getActivity(), R.layout.row_spn, items);
adapter.setDropDownViewResource(R.layout.row_spn_dropdown);
spn_label.setAdapter(adapter);
diff --git a/gradle.properties b/gradle.properties
index 68cbc60d..228b1794 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -17,7 +17,7 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
-VERSION_NAME=1.1.1-SNAPSHOT
+VERSION_NAME=1.1.1
VERSION_CODE=5
GROUP=com.github.rey5137
diff --git a/lib/lib.iml b/lib/lib.iml
index 63928270..8df434b1 100644
--- a/lib/lib.iml
+++ b/lib/lib.iml
@@ -12,8 +12,9 @@
-
+
+
@@ -94,5 +95,4 @@
-
-
+
\ No newline at end of file
diff --git a/lib/src/main/java/com/rey/material/widget/Button.java b/lib/src/main/java/com/rey/material/widget/Button.java
index b43a986a..11e62f95 100644
--- a/lib/src/main/java/com/rey/material/widget/Button.java
+++ b/lib/src/main/java/com/rey/material/widget/Button.java
@@ -13,7 +13,7 @@
public class Button extends android.widget.Button {
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
public Button(Context context) {
super(context);
@@ -48,7 +48,7 @@ public void applyStyle(int resId){
}
private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
}
@Override
@@ -60,20 +60,32 @@ public void setBackgroundDrawable(Drawable drawable) {
super.setBackgroundDrawable(drawable);
}
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
@Override
public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
- super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
- }
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
+ super.setOnClickListener(l);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
+ }
}
@Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
boolean result = super.onTouchEvent(event);
- return mRippleManager.onTouchEvent(event) || result;
+ return getRippleManager().onTouchEvent(event) || result;
}
}
diff --git a/lib/src/main/java/com/rey/material/widget/CheckedTextView.java b/lib/src/main/java/com/rey/material/widget/CheckedTextView.java
index 8a633589..e1d845bd 100644
--- a/lib/src/main/java/com/rey/material/widget/CheckedTextView.java
+++ b/lib/src/main/java/com/rey/material/widget/CheckedTextView.java
@@ -10,7 +10,7 @@
public class CheckedTextView extends android.widget.CheckedTextView {
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
public CheckedTextView(Context context) {
super(context);
@@ -45,7 +45,7 @@ public void applyStyle(int resId){
}
private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
}
@Override
@@ -57,19 +57,31 @@ public void setBackgroundDrawable(Drawable drawable) {
super.setBackgroundDrawable(drawable);
}
- @Override
- public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
- super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
- }
- }
-
- @Override
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
+ @Override
+ public void setOnClickListener(OnClickListener l) {
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
+ super.setOnClickListener(l);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
+ }
+ }
+
+ @Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
- boolean result = super.onTouchEvent(event);
- return mRippleManager.onTouchEvent(event) || result;
- }
+ boolean result = super.onTouchEvent(event);
+ return getRippleManager().onTouchEvent(event) || result;
+ }
}
diff --git a/lib/src/main/java/com/rey/material/widget/CircleCheckedTextView.java b/lib/src/main/java/com/rey/material/widget/CircleCheckedTextView.java
index 0b308506..31e44746 100644
--- a/lib/src/main/java/com/rey/material/widget/CircleCheckedTextView.java
+++ b/lib/src/main/java/com/rey/material/widget/CircleCheckedTextView.java
@@ -17,7 +17,7 @@ public class CircleCheckedTextView extends android.widget.CheckedTextView {
private CircleDrawable mBackground;
public interface OnCheckedChangeListener{
- public void onCheckedChanged(CircleCheckedTextView view, boolean checked);
+ void onCheckedChanged(CircleCheckedTextView view, boolean checked);
}
private OnCheckedChangeListener mCheckedChangeListener;
diff --git a/lib/src/main/java/com/rey/material/widget/CompoundButton.java b/lib/src/main/java/com/rey/material/widget/CompoundButton.java
index 305057f0..68fb15e9 100644
--- a/lib/src/main/java/com/rey/material/widget/CompoundButton.java
+++ b/lib/src/main/java/com/rey/material/widget/CompoundButton.java
@@ -13,7 +13,7 @@
public class CompoundButton extends android.widget.CompoundButton {
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
protected Drawable mButtonDrawable;
public CompoundButton(Context context) {
@@ -61,7 +61,7 @@ public void applyStyle(int resId){
}
private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
}
@Override
@@ -73,20 +73,32 @@ public void setBackgroundDrawable(Drawable drawable) {
super.setBackgroundDrawable(drawable);
}
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
@Override
public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
}
}
-
+
@Override
- public boolean onTouchEvent(@NonNull MotionEvent event) {
+ public boolean onTouchEvent(@NonNull MotionEvent event) {
boolean result = super.onTouchEvent(event);
- return mRippleManager.onTouchEvent(event) || result;
+ return getRippleManager().onTouchEvent(event) || result;
}
@Override
diff --git a/lib/src/main/java/com/rey/material/widget/FloatingActionButton.java b/lib/src/main/java/com/rey/material/widget/FloatingActionButton.java
index 821fc862..ed82bbbf 100644
--- a/lib/src/main/java/com/rey/material/widget/FloatingActionButton.java
+++ b/lib/src/main/java/com/rey/material/widget/FloatingActionButton.java
@@ -46,7 +46,7 @@ public class FloatingActionButton extends View {
private SwitchIconAnimator mSwitchIconAnimator;
private int mIconSize;
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
public static FloatingActionButton make(Context context, int resId){
return new FloatingActionButton(context, null, resId);
@@ -112,7 +112,7 @@ else if(mInterpolator == null)
else if(iconSrc != 0)
setIcon(context.getResources().getDrawable(iconSrc), false);
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
Drawable background = getBackground();
if(background != null && background instanceof RippleDrawable){
RippleDrawable drawable = (RippleDrawable)background;
@@ -382,16 +382,28 @@ public void draw(@NonNull Canvas canvas) {
mIcon.draw(canvas);
}
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
@Override
public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
- }
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
+ }
}
-
+
@Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
int action = event.getActionMasked();
@@ -400,7 +412,7 @@ public boolean onTouchEvent(@NonNull MotionEvent event) {
return false;
boolean result = super.onTouchEvent(event);
- return mRippleManager.onTouchEvent(event) || result;
+ return getRippleManager().onTouchEvent(event) || result;
}
private class OvalShadowDrawable extends Drawable{
diff --git a/lib/src/main/java/com/rey/material/widget/ImageButton.java b/lib/src/main/java/com/rey/material/widget/ImageButton.java
index b2af1dee..248a84ad 100644
--- a/lib/src/main/java/com/rey/material/widget/ImageButton.java
+++ b/lib/src/main/java/com/rey/material/widget/ImageButton.java
@@ -10,7 +10,7 @@
public class ImageButton extends android.widget.ImageButton {
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
public ImageButton(Context context) {
super(context);
@@ -45,7 +45,7 @@ public void applyStyle(int resId){
}
private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
}
@Override
@@ -56,21 +56,33 @@ public void setBackgroundDrawable(Drawable drawable) {
else
super.setBackgroundDrawable(drawable);
}
-
- @Override
- public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
- super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
- }
- }
-
- @Override
+
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
+ @Override
+ public void setOnClickListener(OnClickListener l) {
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
+ super.setOnClickListener(l);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
+ }
+ }
+
+ @Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
- boolean result = super.onTouchEvent(event);
- return mRippleManager.onTouchEvent(event) || result;
- }
+ boolean result = super.onTouchEvent(event);
+ return getRippleManager().onTouchEvent(event) || result;
+ }
}
diff --git a/lib/src/main/java/com/rey/material/widget/Slider.java b/lib/src/main/java/com/rey/material/widget/Slider.java
index 00dd3519..4a35e46e 100644
--- a/lib/src/main/java/com/rey/material/widget/Slider.java
+++ b/lib/src/main/java/com/rey/material/widget/Slider.java
@@ -36,7 +36,7 @@
*/
public class Slider extends View{
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
private Paint mPaint;
private RectF mDrawRect;
@@ -148,7 +148,7 @@ public void applyStyle(int resId){
}
private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Slider, defStyleAttr, defStyleRes);
mDiscreteMode = a.getBoolean(R.styleable.Slider_sl_discreteMode, mDiscreteMode);
@@ -342,13 +342,25 @@ public void setBackgroundDrawable(Drawable drawable) {
super.setBackgroundDrawable(drawable);
}
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
@Override
public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
}
}
@@ -476,7 +488,7 @@ private float correctPosition(float position){
@Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
super.onTouchEvent(event);
- mRippleManager.onTouchEvent(event);
+ getRippleManager().onTouchEvent(event);
if(!isEnabled())
return false;
diff --git a/lib/src/main/java/com/rey/material/widget/Spinner.java b/lib/src/main/java/com/rey/material/widget/Spinner.java
index 73356cf8..c1c1676e 100644
--- a/lib/src/main/java/com/rey/material/widget/Spinner.java
+++ b/lib/src/main/java/com/rey/material/widget/Spinner.java
@@ -120,7 +120,7 @@ public interface OnItemSelectedListener{
private TintManager mTintManager;
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
private boolean mIsRtl = false;
@@ -159,7 +159,7 @@ public void init(Context context, AttributeSet attrs, int defStyleAttr, int defS
super.addView(tv);
}
- setOnClickListener(new View.OnClickListener(){
+ setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopup();
@@ -175,7 +175,7 @@ private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, i
CharSequence memoLabel = mLabelView == null ? null : mLabelView.getText();
removeAllViews();
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs, R.styleable.Spinner, defStyleAttr, defStyleRes);
@@ -542,15 +542,33 @@ public void setBackgroundDrawable(Drawable drawable) {
super.setBackgroundDrawable(drawable);
}
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
@Override
- public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
- super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
- }
- }
+ public void setOnClickListener(OnClickListener l) {
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
+ super.setOnClickListener(l);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
+ }
+ }
+
+ @Override
+ public boolean onTouchEvent(@NonNull MotionEvent event) {
+ boolean result = super.onTouchEvent(event);
+ return getRippleManager().onTouchEvent(event) || result;
+ }
/**
* Set a listener that will be called when a item's view is clicked.
@@ -572,12 +590,6 @@ public void setOnItemSelectedListener(OnItemSelectedListener l) {
public boolean onInterceptTouchEvent(MotionEvent event) {
return true;
}
-
- @Override
- public boolean onTouchEvent(@NonNull MotionEvent event) {
- boolean result = super.onTouchEvent(event);
- return mRippleManager.onTouchEvent(event) || result;
- }
@Override
protected boolean verifyDrawable(Drawable who) {
diff --git a/lib/src/main/java/com/rey/material/widget/Switch.java b/lib/src/main/java/com/rey/material/widget/Switch.java
index 064702d9..54366c76 100644
--- a/lib/src/main/java/com/rey/material/widget/Switch.java
+++ b/lib/src/main/java/com/rey/material/widget/Switch.java
@@ -33,7 +33,7 @@
public class Switch extends View implements Checkable {
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
private boolean mRunning = false;
@@ -129,7 +129,7 @@ public void applyStyle(int resId){
}
private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Switch, defStyleAttr, defStyleRes);
@@ -195,13 +195,25 @@ public void setBackgroundDrawable(Drawable drawable) {
super.setBackgroundDrawable(drawable);
}
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
@Override
public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
}
}
@@ -264,7 +276,7 @@ public void onRtlPropertiesChanged(int layoutDirection) {
@Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
super.onTouchEvent(event);
- mRippleManager.onTouchEvent(event);
+ getRippleManager().onTouchEvent(event);
float x = event.getX();
if(mIsRtl)
diff --git a/lib/src/main/java/com/rey/material/widget/TextView.java b/lib/src/main/java/com/rey/material/widget/TextView.java
index 4a882b2a..a9f99f9d 100644
--- a/lib/src/main/java/com/rey/material/widget/TextView.java
+++ b/lib/src/main/java/com/rey/material/widget/TextView.java
@@ -11,7 +11,7 @@
public class TextView extends android.widget.TextView {
- private RippleManager mRippleManager = new RippleManager();
+ private RippleManager mRippleManager;
public interface OnSelectionChangedListener{
public void onSelectionChanged(View v, int selStart, int selEnd);
@@ -52,7 +52,7 @@ public void applyStyle(int resId){
}
private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
- mRippleManager.onCreate(this, context, attrs, defStyleAttr, defStyleRes);
+ getRippleManager().onCreate(this, context, attrs, defStyleAttr, defStyleRes);
}
@Override
@@ -64,21 +64,33 @@ public void setBackgroundDrawable(Drawable drawable) {
super.setBackgroundDrawable(drawable);
}
- @Override
- public void setOnClickListener(OnClickListener l) {
- if(l == mRippleManager)
- super.setOnClickListener(l);
- else{
- mRippleManager.setOnClickListener(l);
- setOnClickListener(mRippleManager);
- }
- }
-
- @Override
+ protected RippleManager getRippleManager(){
+ if(mRippleManager == null){
+ synchronized (RippleManager.class){
+ if(mRippleManager == null)
+ mRippleManager = new RippleManager();
+ }
+ }
+
+ return mRippleManager;
+ }
+
+ @Override
+ public void setOnClickListener(OnClickListener l) {
+ RippleManager rippleManager = getRippleManager();
+ if (l == rippleManager)
+ super.setOnClickListener(l);
+ else {
+ rippleManager.setOnClickListener(l);
+ setOnClickListener(rippleManager);
+ }
+ }
+
+ @Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
- boolean result = super.onTouchEvent(event);
- return mRippleManager.onTouchEvent(event) || result;
- }
+ boolean result = super.onTouchEvent(event);
+ return getRippleManager().onTouchEvent(event) || result;
+ }
public void setOnSelectionChangedListener(OnSelectionChangedListener listener){
mOnSelectionChangedListener = listener;
diff --git a/lib/src/main/res/values/styles.xml b/lib/src/main/res/values/styles.xml
index 0a03dc8a..904faf49 100644
--- a/lib/src/main/res/values/styles.xml
+++ b/lib/src/main/res/values/styles.xml
@@ -258,6 +258,22 @@
- @android:integer/config_mediumAnimTime
+
+
+
+