Skip to content

Commit 702da73

Browse files
committed
Update Widgets
1 parent f964322 commit 702da73

30 files changed

+2772
-10
lines changed

app/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<activity
1313
android:name="com.dvinfosys.WidgetsExample.MainActivity"
1414
android:configChanges="orientation|screenSize|keyboardHidden"
15+
android:windowSoftInputMode="stateAlwaysHidden"
1516
android:screenOrientation="portrait">
1617
<intent-filter>
1718
<action android:name="android.intent.action.MAIN" />

app/src/main/java/com/dvinfosys/WidgetsExample/MainActivity.java

+43-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.dvinfosys.WidgetsExample;
22

33
import android.content.Context;
4+
import android.graphics.Color;
45
import android.graphics.Typeface;
56
import android.graphics.drawable.Drawable;
67
import android.net.Uri;
@@ -9,29 +10,37 @@
910
import android.text.Spannable;
1011
import android.text.SpannableStringBuilder;
1112
import android.text.style.StyleSpan;
13+
import android.util.Log;
1214
import android.view.View;
1315
import android.widget.Button;
16+
import android.widget.Toast;
1417

18+
import com.dvinfosys.widgets.Button.NormalButton;
19+
import com.dvinfosys.widgets.ColorPicker.ColorPickerDialog;
20+
import com.dvinfosys.widgets.ColorPicker.ColorPickerDialogListener;
1521
import com.dvinfosys.widgets.ToastView.ToastView;
1622
import com.dvinfosys.widgets.VideoPlayer.VPVideoPlayer;
1723
import com.dvinfosys.widgets.VideoPlayer.VPVideoPlayerStandard;
1824

1925
import static android.graphics.Typeface.BOLD_ITALIC;
2026

21-
public class MainActivity extends AppCompatActivity {
27+
public class MainActivity extends AppCompatActivity implements ColorPickerDialogListener {
2228

29+
private static final int DIALOG_ID = 0;
2330
private Context context;
2431
private Button btnErrorToastView, btnSuccessToastView, btnInfoToastView, btnWarringToastView;
32+
private NormalButton btnColorPicker;
2533

2634
@Override
2735
protected void onCreate(Bundle savedInstanceState) {
2836
super.onCreate(savedInstanceState);
2937
setContentView(R.layout.activity_main);
30-
context=this;
38+
context = this;
3139
btnErrorToastView = findViewById(R.id.button_error_toast);
3240
btnSuccessToastView = findViewById(R.id.button_success_toast);
3341
btnInfoToastView = findViewById(R.id.button_info_toast);
3442
btnWarringToastView = findViewById(R.id.button_warning_toast);
43+
btnColorPicker = findViewById(R.id.btn_color_picker);
3544

3645
VPVideoPlayerStandard videoPlayerStandard = findViewById(R.id.vp_videoplayer);
3746
videoPlayerStandard.setUp("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4", VPVideoPlayerStandard.SCREEN_LAYOUT_NORMAL, "Elephant Dream");
@@ -40,26 +49,26 @@ protected void onCreate(Bundle savedInstanceState) {
4049
btnErrorToastView.setOnClickListener(new View.OnClickListener() {
4150
@Override
4251
public void onClick(View v) {
43-
ToastView.error(context,"This is error ToastView",ToastView.LENGTH_SHORT).show();
52+
ToastView.error(context, "This is error ToastView", ToastView.LENGTH_SHORT).show();
4453
}
4554
});
4655
btnWarringToastView.setOnClickListener(new View.OnClickListener() {
4756
@Override
4857
public void onClick(View v) {
49-
ToastView.warning(context,"This is warring ToastView",ToastView.LENGTH_SHORT).show();
58+
ToastView.warning(context, "This is warring ToastView", ToastView.LENGTH_SHORT).show();
5059
}
5160
});
5261
btnInfoToastView.setOnClickListener(new View.OnClickListener() {
5362
@Override
5463
public void onClick(View v) {
55-
ToastView.info(context,"This is info ToastView",ToastView.LENGTH_SHORT).show();
64+
ToastView.info(context, "This is info ToastView", ToastView.LENGTH_SHORT).show();
5665
}
5766
});
5867

5968
btnSuccessToastView.setOnClickListener(new View.OnClickListener() {
6069
@Override
6170
public void onClick(View v) {
62-
ToastView.success(context,"This is success ToastView",ToastView.LENGTH_SHORT).show();
71+
ToastView.success(context, "This is success ToastView", ToastView.LENGTH_SHORT).show();
6372
}
6473
});
6574

@@ -94,6 +103,20 @@ public void onClick(View view) {
94103
ToastView.Config.reset(); // Use this if you want to use the configuration above only once
95104
}
96105
});
106+
107+
btnColorPicker.setOnClickListener(new View.OnClickListener() {
108+
@Override
109+
public void onClick(View v) {
110+
ColorPickerDialog.newBuilder()
111+
.setDialogType(ColorPickerDialog.TYPE_CUSTOM)
112+
.setAllowPresets(false)
113+
.setDialogId(DIALOG_ID)
114+
.setColor(Color.BLACK)
115+
.setShowAlphaSlider(true)
116+
.show(MainActivity.this);
117+
118+
}
119+
});
97120
}
98121

99122
private CharSequence getFormattedMessage() {
@@ -120,4 +143,18 @@ protected void onPause() {
120143
super.onPause();
121144
VPVideoPlayer.releaseAllVideos();
122145
}
146+
147+
@Override
148+
public void onColorSelected(int dialogId, int color) {
149+
switch (dialogId) {
150+
case DIALOG_ID:
151+
Toast.makeText(MainActivity.this, "Selected Color: #" + Integer.toHexString(color), Toast.LENGTH_SHORT).show();
152+
break;
153+
}
154+
}
155+
156+
@Override
157+
public void onDialogDismissed(int dialogId) {
158+
Log.d("ColorPicker", "onDialogDismissed() called with: dialogId = [" + dialogId + "]");
159+
}
123160
}

app/src/main/res/layout/activity_main.xml

+9
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,15 @@
140140
android:padding="8dp"
141141
android:text="MediumTextView" />
142142

143+
<com.dvinfosys.widgets.Button.NormalButton
144+
android:id="@+id/btn_color_picker"
145+
android:layout_width="wrap_content"
146+
android:layout_height="wrap_content"
147+
android:layout_gravity="center"
148+
android:layout_margin="8dp"
149+
android:text="Color Picker"
150+
android:textAllCaps="false" />
151+
143152
<com.dvinfosys.widgets.ImageView.RoundedImageView
144153
android:layout_width="wrap_content"
145154
android:layout_height="200dp"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.dvinfosys.widgets.ColorPicker;
2+
3+
import android.graphics.Bitmap;
4+
import android.graphics.Canvas;
5+
import android.graphics.ColorFilter;
6+
import android.graphics.Paint;
7+
import android.graphics.Rect;
8+
import android.graphics.drawable.Drawable;
9+
10+
class AlphaPatternDrawable extends Drawable {
11+
12+
private int rectangleSize = 10;
13+
14+
private Paint paint = new Paint();
15+
private Paint paintWhite = new Paint();
16+
private Paint paintGray = new Paint();
17+
18+
private int numRectanglesHorizontal;
19+
private int numRectanglesVertical;
20+
21+
private Bitmap bitmap;
22+
23+
AlphaPatternDrawable(int rectangleSize) {
24+
this.rectangleSize = rectangleSize;
25+
paintWhite.setColor(0xFFFFFFFF);
26+
paintGray.setColor(0xFFCBCBCB);
27+
}
28+
29+
@Override public void draw(Canvas canvas) {
30+
if (bitmap != null && !bitmap.isRecycled()) {
31+
canvas.drawBitmap(bitmap, null, getBounds(), paint);
32+
}
33+
}
34+
35+
@Override public int getOpacity() {
36+
return 0;
37+
}
38+
39+
@Override public void setAlpha(int alpha) {
40+
throw new UnsupportedOperationException("Alpha is not supported by this drawable.");
41+
}
42+
43+
@Override public void setColorFilter(ColorFilter cf) {
44+
throw new UnsupportedOperationException("ColorFilter is not supported by this drawable.");
45+
}
46+
47+
@Override protected void onBoundsChange(Rect bounds) {
48+
super.onBoundsChange(bounds);
49+
int height = bounds.height();
50+
int width = bounds.width();
51+
numRectanglesHorizontal = (int) Math.ceil((width / rectangleSize));
52+
numRectanglesVertical = (int) Math.ceil(height / rectangleSize);
53+
generatePatternBitmap();
54+
}
55+
56+
private void generatePatternBitmap() {
57+
if (getBounds().width() <= 0 || getBounds().height() <= 0) {
58+
return;
59+
}
60+
61+
bitmap = Bitmap.createBitmap(getBounds().width(), getBounds().height(), Bitmap.Config.ARGB_8888);
62+
Canvas canvas = new Canvas(bitmap);
63+
64+
Rect r = new Rect();
65+
boolean verticalStartWhite = true;
66+
for (int i = 0; i <= numRectanglesVertical; i++) {
67+
boolean isWhite = verticalStartWhite;
68+
for (int j = 0; j <= numRectanglesHorizontal; j++) {
69+
r.top = i * rectangleSize;
70+
r.left = j * rectangleSize;
71+
r.bottom = r.top + rectangleSize;
72+
r.right = r.left + rectangleSize;
73+
canvas.drawRect(r, isWhite ? paintWhite : paintGray);
74+
isWhite = !isWhite;
75+
}
76+
verticalStartWhite = !verticalStartWhite;
77+
}
78+
}
79+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package com.dvinfosys.widgets.ColorPicker;
2+
3+
import android.content.Context;
4+
import android.graphics.Color;
5+
import android.graphics.PorterDuff;
6+
import android.support.v4.graphics.ColorUtils;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
import android.widget.BaseAdapter;
10+
import android.widget.ImageView;
11+
12+
import com.dvinfosys.widgets.R;
13+
14+
class ColorPaletteAdapter extends BaseAdapter {
15+
16+
final OnColorSelectedListener listener;
17+
final int[] colors;
18+
int selectedPosition;
19+
int colorShape;
20+
21+
ColorPaletteAdapter(OnColorSelectedListener listener, int[] colors, int selectedPosition,
22+
@ColorShape int colorShape) {
23+
this.listener = listener;
24+
this.colors = colors;
25+
this.selectedPosition = selectedPosition;
26+
this.colorShape = colorShape;
27+
}
28+
29+
@Override
30+
public int getCount() {
31+
return colors.length;
32+
}
33+
34+
@Override
35+
public Object getItem(int position) {
36+
return colors[position];
37+
}
38+
39+
@Override
40+
public long getItemId(int position) {
41+
return position;
42+
}
43+
44+
@Override
45+
public View getView(int position, View convertView, ViewGroup parent) {
46+
final ViewHolder holder;
47+
if (convertView == null) {
48+
holder = new ViewHolder(parent.getContext());
49+
convertView = holder.view;
50+
} else {
51+
holder = (ViewHolder) convertView.getTag();
52+
}
53+
holder.setup(position);
54+
return convertView;
55+
}
56+
57+
void selectNone() {
58+
selectedPosition = -1;
59+
notifyDataSetChanged();
60+
}
61+
62+
interface OnColorSelectedListener {
63+
64+
void onColorSelected(int color);
65+
}
66+
67+
private final class ViewHolder {
68+
69+
View view;
70+
ColorPanelView colorPanelView;
71+
ImageView imageView;
72+
int originalBorderColor;
73+
74+
ViewHolder(Context context) {
75+
int layoutResId;
76+
if (colorShape == ColorShape.SQUARE) {
77+
layoutResId = R.layout.color_item_square;
78+
} else {
79+
layoutResId = R.layout.color_item_circle;
80+
}
81+
view = View.inflate(context, layoutResId, null);
82+
colorPanelView = view.findViewById(R.id.color_panel_view);
83+
imageView = view.findViewById(R.id.color_image_view);
84+
originalBorderColor = colorPanelView.getBorderColor();
85+
view.setTag(this);
86+
}
87+
88+
void setup(int position) {
89+
int color = colors[position];
90+
int alpha = Color.alpha(color);
91+
colorPanelView.setColor(color);
92+
imageView.setImageResource(selectedPosition == position ? R.drawable.preset_checked : 0);
93+
if (alpha != 255) {
94+
if (alpha <= ColorPickerDialog.ALPHA_THRESHOLD) {
95+
colorPanelView.setBorderColor(color | 0xFF000000);
96+
imageView.setColorFilter(/*color | 0xFF000000*/Color.BLACK, PorterDuff.Mode.SRC_IN);
97+
} else {
98+
colorPanelView.setBorderColor(originalBorderColor);
99+
imageView.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
100+
}
101+
} else {
102+
setColorFilter(position);
103+
}
104+
setOnClickListener(position);
105+
}
106+
107+
private void setOnClickListener(final int position) {
108+
colorPanelView.setOnClickListener(new View.OnClickListener() {
109+
@Override
110+
public void onClick(View v) {
111+
if (selectedPosition != position) {
112+
selectedPosition = position;
113+
notifyDataSetChanged();
114+
}
115+
listener.onColorSelected(colors[position]);
116+
}
117+
});
118+
colorPanelView.setOnLongClickListener(new View.OnLongClickListener() {
119+
@Override
120+
public boolean onLongClick(View v) {
121+
colorPanelView.showHint();
122+
return true;
123+
}
124+
});
125+
}
126+
127+
private void setColorFilter(int position) {
128+
if (position == selectedPosition && ColorUtils.calculateLuminance(colors[position]) >= 0.65) {
129+
imageView.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN);
130+
} else {
131+
imageView.setColorFilter(null);
132+
}
133+
}
134+
}
135+
}

0 commit comments

Comments
 (0)