diff options
author | steckbrief <steckbrief@chefmail.de> | 2017-01-11 14:47:25 +0100 |
---|---|---|
committer | steckbrief <steckbrief@chefmail.de> | 2017-01-11 14:47:25 +0100 |
commit | 990a35c47500c6a3f4292d41450a5f6cb689c7b1 (patch) | |
tree | eea0509a1e6fd18d21074d55df8a469984391ab9 /src | |
parent | c09e7f0a21f563359c69f0e4198c7563cd2d4809 (diff) |
Custom toast view added
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/thedevstack/conversationsplus/utils/ui/ConversationsPlusToast.java | 101 | ||||
-rw-r--r-- | src/main/res/drawable-hdpi/ic_toast.png | bin | 0 -> 1708 bytes | |||
-rw-r--r-- | src/main/res/drawable-hdpi/ic_toast_error.png | bin | 0 -> 1764 bytes | |||
-rw-r--r-- | src/main/res/layout/cplus_toast_container.xml | 22 |
4 files changed, 123 insertions, 0 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/utils/ui/ConversationsPlusToast.java b/src/main/java/de/thedevstack/conversationsplus/utils/ui/ConversationsPlusToast.java new file mode 100644 index 00000000..3576d1cd --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/utils/ui/ConversationsPlusToast.java @@ -0,0 +1,101 @@ +package de.thedevstack.conversationsplus.utils.ui; + +import android.content.Context; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.StringRes; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.Toast; + +import de.thedevstack.conversationsplus.ConversationsPlusApplication; +import de.thedevstack.conversationsplus.R; + +/** + * Wrapper for custom styled Toasts for Conversations+. + */ +public final class ConversationsPlusToast { + + /** + * Creates an error toast with text and duration + * @param text + * @param duration + */ + public static void makeErrorToast(final CharSequence text, final int duration) { + Handler toastHandler = new Handler(Looper.getMainLooper()); + toastHandler.post(new ConversationsPlusToast.ToastRunnable(text, duration, true)); + } + + /** + * Creates an error toast with text from resource and duration + * @param resId + * @param duration + */ + public static void makeErrorToast(@StringRes int resId, int duration) { + makeErrorToast(ConversationsPlusApplication.getAppContext().getString(resId), duration); + } + + /** + * Creates an toast with text and duration + * @param text + * @param duration + */ + public static void makeToast(final CharSequence text, final int duration) { + Handler toastHandler = new Handler(Looper.getMainLooper()); + toastHandler.post(new ConversationsPlusToast.ToastRunnable(text, duration)); + } + + /** + * Creates an toast with text from resource and duration + * @param resId + * @param duration + */ + public static void makeToast(@StringRes int resId, int duration) { + makeToast(ConversationsPlusApplication.getAppContext().getString(resId), duration); + } + + private ConversationsPlusToast() { + // avoid instantiation - helper class + } + + /** + * Runnable to show the toast in an UI thread. + */ + static class ToastRunnable implements Runnable { + private boolean showErrorToast = false; + private CharSequence text; + private int duration; + + public ToastRunnable(CharSequence text, int duration, boolean isError) { + this.showErrorToast = isError; + this.text = text; + this.duration = duration; + } + + public ToastRunnable(CharSequence text, int duration) { + this.text = text; + this.duration = duration; + } + + @Override + public void run() { + Context applicationContext = ConversationsPlusApplication.getAppContext(); + LayoutInflater inflater = LayoutInflater.from(applicationContext); + View layout = inflater.inflate(R.layout.cplus_toast_container, null); + + TextViewUtil.setText(layout, R.id.cplus_toast_txt, text); + + if (this.showErrorToast) { + // Set image view to error icon + ImageView iv = (ImageView) layout.findViewById(R.id.cplus_toast_icon); + iv.setImageResource(R.drawable.ic_toast_error); + } + + Toast toast = new Toast(applicationContext); + toast.setDuration(duration); + toast.setView(layout); + toast.show(); + } + } +} diff --git a/src/main/res/drawable-hdpi/ic_toast.png b/src/main/res/drawable-hdpi/ic_toast.png Binary files differnew file mode 100644 index 00000000..fd5d1d8b --- /dev/null +++ b/src/main/res/drawable-hdpi/ic_toast.png diff --git a/src/main/res/drawable-hdpi/ic_toast_error.png b/src/main/res/drawable-hdpi/ic_toast_error.png Binary files differnew file mode 100644 index 00000000..31de0901 --- /dev/null +++ b/src/main/res/drawable-hdpi/ic_toast_error.png diff --git a/src/main/res/layout/cplus_toast_container.xml b/src/main/res/layout/cplus_toast_container.xml new file mode 100644 index 00000000..f2aa09e3 --- /dev/null +++ b/src/main/res/layout/cplus_toast_container.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/cplus_toast" + android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:padding="8dp" + android:background="#DAAA"> + + <ImageView android:id="@+id/cplus_toast_icon" + android:src="@drawable/ic_toast" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="8dp"/> + + <TextView android:id="@+id/cplus_toast_txt" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="#FFF" + android:shadowColor="#BB000000" + android:shadowRadius="2.75"/> +</LinearLayout>
\ No newline at end of file |