فهرست منبع

Action bar 更改标题颜色前;

Arison 9 سال پیش
والد
کامیت
a98f8ff33b

+ 5 - 5
WeiChat/src/main/AndroidManifest.xml

@@ -2,14 +2,14 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     package="com.xzjmyk.pm.activity"
-    android:versionCode="46"
-    android:versionName="4.6">
+    android:versionCode="51"
+    android:versionName="5.1">
     <uses-sdk
         android:minSdkVersion="11"
-        android:targetSdkVersion="23" />
+        android:targetSdkVersion="22" 
+        />
     <!-- 拨打电话 -->
     <uses-permission android:name="android.permission.CALL_PHONE" />
-
     <uses-feature android:name="android.hardware.camera" />
     <uses-feature android:name="android.hardware.camera.autofocus" />
     <uses-feature android:name="android.hardware.microphone" />
@@ -64,6 +64,7 @@
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
 
     <application
+        android:largeHeap="true"
         android:name=".MyApplication"
         android:allowBackup="true"
         android:icon="@drawable/uuu"
@@ -75,7 +76,6 @@
         <meta-data
             android:name="UMENG_CHANNEL"
             android:value="baidu" />
-
         <!-- 启动页面 -->
         <activity
             android:name=".ui.SplashActivity"

+ 4 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java

@@ -11,7 +11,6 @@ import com.baidu.location.LocationClientOption;
 import com.baidu.location.LocationClientOption.LocationMode;
 import com.baidu.location.Poi;
 import com.xzjmyk.pm.activity.sp.LocationSp;
-import com.xzjmyk.pm.activity.util.StringUtils;
 
 import java.util.List;
 
@@ -82,18 +81,18 @@ public class BdLocationHelper {
             if (location != null) {
                 resultCode = location.getLocType();
             }
-            Log.i("gongpengming", StringUtils.isEmail(location.getLocationDescribe()) ? "空的" : location.getLocationDescribe());
+          // Log.i("gongpengming", StringUtils.isEmail(location.getLocationDescribe()) ? "空的" : location.getLocationDescribe());
             if (location.getPoiList() == null || location.getPoiList().size() <= 0) {
-                Log.i("gongpengming", "location.getPoiList()不对劲");
+            //    Log.i("gongpengming", "location.getPoiList()不对劲");
             } else {
-                Log.i("gongpengming", "location.getPoiList()不对劲");
+           //    Log.i("gongpengming", "location.getPoiList()不对劲");
             }
             setPois(location.getPoiList());
             // 百度定位失败
             if (resultCode != BDLocation.TypeGpsLocation && resultCode != BDLocation.TypeCacheLocation
                     && resultCode != BDLocation.TypeOffLineLocation && resultCode != BDLocation.TypeNetWorkLocation) {
                 if (AppConfig.DEBUG) {
-                    Log.d(AppConfig.TAG, "百度定位失败");
+                //    Log.d(AppConfig.TAG, "百度定位失败");
                 }
                 mFaildCount++;
                 if (mFaildCount > 3) {// 停止定位

+ 4 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessDetailActivty.java

@@ -387,10 +387,11 @@ public class BusinessDetailActivty extends BaseActivity {
                 case BUSINESS_QIANG:
                     Log.i(TAG, "handleMessage:" + msg.getData().getString("result"));
                     progressDialog.dismiss();
-                    ToastMessage("抢商机成功!");
+                    Crouton.makeText(BusinessDetailActivty.this,45,"成功抢得此商机,\n" +
+                            "请到商机跟进中查看商机!\n",
+                            getResources().getColor(R.color.light_green),
+                            5000).show();
                     sendHttpResquest(Constants.HTTP_SUCCESS_INIT, page = 1);
-//                    startActivity(new Intent(ct, BusinessActivity.class));
-//                    finish();
                     break;
                 case BUSINESS_FENPEI:
                     progressDialog.dismiss();

+ 10 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessDetailInfoActivity.java

@@ -354,10 +354,17 @@ public class BusinessDetailInfoActivity extends BaseActivity implements View.OnC
                     break;
                 case BUSINESS_QIANG:
                     Log.i(TAG, "handleMessage:" + msg.getData().getString("result"));
-                    // ViewUtil.ToastMessage(ct, msg.getData().getString("result"));
                     progressDialog.dismiss();
-                    ToastMessage("抢商机成功!");
-                    finish();
+                    Crouton.makeText(activity,45,"成功抢得此商机,\n" +
+                                    "请到商机跟进中查看商机!\n",
+                            getResources().getColor(R.color.light_green),
+                            5000).show();
+                   new Handler().postDelayed(new Runnable() {
+                      @Override
+                      public void run() {
+                          finish();
+                      }
+                  },5000);
 //                    startActivity(new Intent(ct, BusinessDetailActivty.class).putExtra("bt_type",1));
                     break;
                 case BUSINESS_FENPEI:

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBManager.java

@@ -162,7 +162,7 @@ public class DBManager {
         for (int i = 0; i < employeesEntities.size(); i++) {
             EmployeesEntity entity = employeesEntities.get(i);
             sta.bindString(1, String.valueOf(entity.getEM_ID()));
-            sta.bindString(2, entity.getEM_CODE());
+            sta.bindString(2, entity.getEM_CODE()==null?"null":entity.getEM_CODE());
             sta.bindString(3, entity.getEM_NAME());
             sta.bindString(4, entity.getEM_POSITION());
             sta.bindString(5, entity.getEM_DEFAULTORNAME() == null ? "未填写" : entity.getEM_DEFAULTORNAME());

+ 19 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/crouton/Crouton.java

@@ -208,6 +208,25 @@ public final class Crouton {
     Configuration customConfiguration = new Configuration.Builder().setDuration(time).build();
     return new Crouton(activity, text, customColor).setConfiguration(customConfiguration);
   }
+
+  /**
+   * 自定义设置背景色,延时时间
+   * @param activity
+   * @param text
+   * @param color
+   * @param time
+   * @return
+   */
+  public static Crouton makeText(Activity activity,int hight, CharSequence text, int color, int time){
+    Style customColor = new Style.Builder().setBackgroundColorValue(color)
+            .setHeight(
+                    (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
+                            hight,
+                            activity.getResources().getDisplayMetrics())
+            ).build();
+    Configuration customConfiguration = new Configuration.Builder().setDuration(time).build();
+    return new Crouton(activity, text, customColor).setConfiguration(customConfiguration);
+  }
   /**
    * Creates a {@link Crouton} with provided text and style for a given
    * activity.

+ 536 - 478
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/crouton/Style.java

@@ -15,6 +15,21 @@
  */
 
 package com.xzjmyk.pm.activity.view.crouton;
+/*
+ * Copyright 2012 - 2014 Benjamin Weiss
+ *
+ * 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.
+ */
 
 import android.graphics.drawable.Drawable;
 import android.view.Gravity;
@@ -22,544 +37,587 @@ import android.view.ViewGroup.LayoutParams;
 import android.widget.ImageView;
 
 
-/** The style for a {@link Crouton}. */
+/**
+ * The style for a {@link Crouton}.
+ */
 public class Style {
-  
-  public static final int NOT_SET = -1;
-
-  public static final int holoRedLight = 0xffff4444;
-  public static final int holoGreenLight = 0xff99cc00;
-  public static final int holoBlueLight = 0xff33b5e5;
-
-  /** Default style for alerting the user. */
-  public static final Style ALERT;
-  /** Default style for confirming an action. */
-  public static final Style CONFIRM;
-  /** Default style for general information. */
-  public static final Style INFO;
-
-  static {
-    ALERT = new Builder()
-      .setBackgroundColorValue(holoRedLight)
-      .build();
-    CONFIRM = new Builder()
-      .setBackgroundColorValue(holoGreenLight)
-      .build();
-    INFO = new Builder()
-      .setBackgroundColorValue(holoBlueLight)
-      .build();
-  }
-
-  /**
-   * The {@link Configuration} for this {@link Style}.
-   * It can be overridden via {@link Crouton#setConfiguration(Configuration)}.
-   */
-  final Configuration configuration;
-
-  /**
-   * The resource id of the backgroundResourceId.
-   * <p/>
-   * 0 for no backgroundResourceId.
-   */
-  final int backgroundColorResourceId;
-
-  /**
-   * The resource id of the backgroundDrawableResourceId.
-   * <p/>
-   * 0 for no backgroundDrawableResourceId.
-   */
-  final int backgroundDrawableResourceId;
-
-  /**
-   * The backgroundColorResourceValue's e.g. 0xffff4444;
-   * <p/>
-   * NOT_SET for no value.
-   */
-  final int backgroundColorValue;
-
-  /** Whether we should isTileEnabled the backgroundResourceId or not. */
-  final boolean isTileEnabled;
-
-  /**
-   * The text colorResourceId's resource id.
-   * <p/>
-   * 0 sets the text colorResourceId to the system theme default.
-   */
-  final int textColorResourceId;
-
-  /**
-   * The textColorResourceValue's e.g. 0xffff4444;
-   * <p/>
-   * NOT_SET for no value.
-   */
-  final int textColorValue;
-
-  /** The height of the {@link Crouton} in pixels. */
-  final int heightInPixels;
-
-  /** Resource ID for the height of the {@link Crouton}. */
-  final int heightDimensionResId;
-
-  /** The width of the {@link Crouton} in pixels. */
-  final int widthInPixels;
-
-  /** Resource ID for the width of the {@link Crouton}. */
-  final int widthDimensionResId;
-
-  /** The text's gravity as provided by {@link Gravity}. */
-  final int gravity;
-
-  /** An additional image to display in the {@link Crouton}. */
-  final Drawable imageDrawable;
-
-  /** An additional image to display in the {@link Crouton}. */
-  final int imageResId;
-
-  /** The {@link ImageView.ScaleType} for the image to display in the {@link Crouton}. */
-  final ImageView.ScaleType imageScaleType;
-
-  /**
-   * The text size in sp
-   * <p/>
-   * 0 sets the text size to the system theme default
-   */
-  final int textSize;
-
-  /** The text shadow color's resource id */
-  final int textShadowColorResId;
-
-  /** The text shadow radius */
-  final float textShadowRadius;
-
-  /** The text shadow vertical offset */
-  final float textShadowDy;
-
-  /** The text shadow horizontal offset */
-  final float textShadowDx;
-
-  /** The text appearance resource id for the text. */
-  final int textAppearanceResId;
-
-  /** The padding for the crouton view content in pixels */
-  final int paddingInPixels;
-
-  /** The resource id for the padding for the view content */
-  final int paddingDimensionResId;
-
-  /** The file path and font name for the view content */
-  final String fontName;
-
-  /** The file path and font name resource id for the view content */
-  final int fontNameResId;
-
-  private Style(final Builder builder) {
-    this.configuration = builder.configuration;
-    this.backgroundColorResourceId = builder.backgroundColorResourceId;
-    this.backgroundDrawableResourceId = builder.backgroundDrawableResourceId;
-    this.isTileEnabled = builder.isTileEnabled;
-    this.textColorResourceId = builder.textColorResourceId;
-    this.textColorValue = builder.textColorValue;
-    this.heightInPixels = builder.heightInPixels;
-    this.heightDimensionResId = builder.heightDimensionResId;
-    this.widthInPixels = builder.widthInPixels;
-    this.widthDimensionResId = builder.widthDimensionResId;
-    this.gravity = builder.gravity;
-    this.imageDrawable = builder.imageDrawable;
-    this.textSize = builder.textSize;
-    this.textShadowColorResId = builder.textShadowColorResId;
-    this.textShadowRadius = builder.textShadowRadius;
-    this.textShadowDx = builder.textShadowDx;
-    this.textShadowDy = builder.textShadowDy;
-    this.textAppearanceResId = builder.textAppearanceResId;
-    this.imageResId = builder.imageResId;
-    this.imageScaleType = builder.imageScaleType;
-    this.paddingInPixels = builder.paddingInPixels;
-    this.paddingDimensionResId = builder.paddingDimensionResId;
-    this.backgroundColorValue = builder.backgroundColorValue;
-    this.fontName = builder.fontName;
-    this.fontNameResId = builder.fontNameResId;
-  }
-
-  /** Builder for the {@link Style} object. */
-  public static class Builder {
-    private Configuration configuration;
-    private int backgroundColorValue;
-    private int backgroundColorResourceId;
-    private int backgroundDrawableResourceId;
-    private boolean isTileEnabled;
-    private int textColorResourceId;
-    private int textColorValue;
-    private int heightInPixels;
-    private int heightDimensionResId;
-    private int widthInPixels;
-    private int widthDimensionResId;
-    private int gravity;
-    private Drawable imageDrawable;
-    private int textSize;
-    private int textShadowColorResId;
-    private float textShadowRadius;
-    private float textShadowDx;
-    private float textShadowDy;
-    private int textAppearanceResId;
-    private int imageResId;
-    private ImageView.ScaleType imageScaleType;
-    private int paddingInPixels;
-    private int paddingDimensionResId;
-    private String fontName;
-    private int fontNameResId;
-
-    /** Creates a {@link Builder} to build a {@link Style} upon. */
-    public Builder() {
-      configuration = Configuration.DEFAULT;
-      paddingInPixels = 10;
-      backgroundColorResourceId = android.R.color.holo_blue_light;
-      backgroundDrawableResourceId = 0;
-      backgroundColorValue = NOT_SET;
-      isTileEnabled = false;
-      textColorResourceId = android.R.color.white;
-      textColorValue = NOT_SET;
-//      heightInPixels = LayoutParams.WRAP_CONTENT;
-      heightInPixels = 100;
-      widthInPixels = LayoutParams.MATCH_PARENT;
-      gravity = Gravity.CENTER;
-      imageDrawable = null;
-      imageResId = 0;
-      imageScaleType = ImageView.ScaleType.FIT_XY;
-      fontName = null;
-      fontNameResId = 0;
-    }
+
+    public static final int NOT_SET = -1;
+
+    public static final int holoRedLight = 0xffff4444;
+    public static final int holoGreenLight = 0xff99cc00;
+    public static final int holoBlueLight = 0xff33b5e5;
 
     /**
-     * Creates a {@link Builder} to build a {@link Style} upon.
-     *
-     * @param baseStyle
-     *   The base {@link Style} to use for this {@link Style}.
+     * Default style for alerting the user.
      */
-    public Builder(final Style baseStyle) {
-      configuration = baseStyle.configuration;
-      backgroundColorValue = baseStyle.backgroundColorValue;
-      backgroundColorResourceId = baseStyle.backgroundColorResourceId;
-      backgroundDrawableResourceId = baseStyle.backgroundDrawableResourceId;
-      isTileEnabled = baseStyle.isTileEnabled;
-      textColorResourceId = baseStyle.textColorResourceId;
-      textColorValue = baseStyle.textColorValue;
-      heightInPixels = baseStyle.heightInPixels;
-      heightDimensionResId = baseStyle.heightDimensionResId;
-      widthInPixels = baseStyle.widthInPixels;
-      widthDimensionResId = baseStyle.widthDimensionResId;
-      gravity = baseStyle.gravity;
-      imageDrawable = baseStyle.imageDrawable;
-      textSize = baseStyle.textSize;
-      textShadowColorResId = baseStyle.textShadowColorResId;
-      textShadowRadius = baseStyle.textShadowRadius;
-      textShadowDx = baseStyle.textShadowDx;
-      textShadowDy = baseStyle.textShadowDy;
-      textAppearanceResId = baseStyle.textAppearanceResId;
-      imageResId = baseStyle.imageResId;
-      imageScaleType = baseStyle.imageScaleType;
-      paddingInPixels = baseStyle.paddingInPixels;
-      paddingDimensionResId = baseStyle.paddingDimensionResId;
-      fontName = baseStyle.fontName;
-      fontNameResId = baseStyle.fontNameResId;
-    }
+    public static final Style ALERT;
     /**
-     * Set the {@link Configuration} option of the {@link Crouton}.
-     *
-     * @param configuration
-     *   The {@link Configuration}.
-     *
-     * @return the {@link Builder}.
+     * Default style for confirming an action.
      */
-    public Builder setConfiguration(Configuration configuration) {
-      this.configuration = configuration;
-      return this;
-    }
-
+    public static final Style CONFIRM;
     /**
-     * Set the backgroundColorResourceId option of the {@link Crouton}.
-     *
-     * @param backgroundColorResourceId
-     *   The backgroundColorResourceId's resource id.
-     *
-     * @return the {@link Builder}.
+     * Default style for general information.
      */
-    public Builder setBackgroundColor(int backgroundColorResourceId) {
-      this.backgroundColorResourceId = backgroundColorResourceId;
-
-      return this;
+    public static final Style INFO;
+
+    static {
+        ALERT = new Builder()
+                .setBackgroundColorValue(holoRedLight)
+                .build();
+        CONFIRM = new Builder()
+                .setBackgroundColorValue(holoGreenLight)
+                .build();
+        INFO = new Builder()
+                .setBackgroundColorValue(holoBlueLight)
+                .build();
     }
 
     /**
-     * Set the backgroundColorResourceValue option of the {@link Crouton}.
-     *
-     * @param backgroundColorValue
-     *   The backgroundColorResourceValue's e.g. 0xffff4444;
-     *
-     * @return the {@link Builder}.
+     * The {@link Configuration} for this {@link Style}.
+     * It can be overridden via {@link Crouton#setConfiguration(Configuration)}.
      */
-    public Builder setBackgroundColorValue(int backgroundColorValue) {
-      this.backgroundColorValue = backgroundColorValue;
-      return this;
-    }
+    final Configuration configuration;
 
     /**
-     * Set the backgroundDrawableResourceId option for the {@link Crouton}.
-     *
-     * @param backgroundDrawableResourceId
-     *   Resource ID of a backgroundDrawableResourceId image drawable.
-     *
-     * @return the {@link Builder}.
+     * The resource id of the backgroundResourceId.
+     * <p/>
+     * 0 for no backgroundResourceId.
      */
-    public Builder setBackgroundDrawable(int backgroundDrawableResourceId) {
-      this.backgroundDrawableResourceId = backgroundDrawableResourceId;
-
-      return this;
-    }
+    final int backgroundColorResourceId;
 
     /**
-     * Set the heightInPixels option for the {@link Crouton}.
-     *
-     * @param height
-     *   The height of the {@link Crouton} in pixel. Can also be
-     *   {@link LayoutParams#MATCH_PARENT} or
-     *   {@link LayoutParams#WRAP_CONTENT}.
-     *
-     * @return the {@link Builder}.
+     * The resource id of the backgroundDrawableResourceId.
+     * <p/>
+     * 0 for no backgroundDrawableResourceId.
      */
-    public Builder setHeight(int height) {
-      this.heightInPixels = height;
-
-      return this;
-    }
+    final int backgroundDrawableResourceId;
 
     /**
-     * Set the resource id for the height option for the {@link Crouton}.
-     *
-     * @param heightDimensionResId
-     *   Resource ID of a dimension for the height of the {@link Crouton}.
-     *
-     * @return the {@link Builder}.
+     * The backgroundColorResourceValue's e.g. 0xffff4444;
+     * <p/>
+     * NOT_SET for no value.
      */
-    public Builder setHeightDimensionResId(int heightDimensionResId) {
-      this.heightDimensionResId = heightDimensionResId;
-
-      return this;
-    }
+    final int backgroundColorValue;
 
     /**
-     * Set the widthInPixels option for the {@link Crouton}.
-     *
-     * @param width
-     *   The width of the {@link Crouton} in pixel. Can also be
-     *   {@link LayoutParams#MATCH_PARENT} or
-     *   {@link LayoutParams#WRAP_CONTENT}.
-     *
-     * @return the {@link Builder}.
+     * Whether we should isTileEnabled the backgroundResourceId or not.
      */
-    public Builder setWidth(int width) {
-      this.widthInPixels = width;
-
-      return this;
-    }
+    final boolean isTileEnabled;
 
     /**
-     * Set the resource id for the width option for the {@link Crouton}.
-     *
-     * @param widthDimensionResId
-     *   Resource ID of a dimension for the width of the {@link Crouton}.
-     *
-     * @return the {@link Builder}.
+     * The text colorResourceId's resource id.
+     * <p/>
+     * 0 sets the text colorResourceId to the system theme default.
      */
-    public Builder setWidthDimensionResId(int widthDimensionResId) {
-      this.widthDimensionResId = widthDimensionResId;
-
-      return this;
-    }
+    final int textColorResourceId;
 
     /**
-     * Set the isTileEnabled option for the {@link Crouton}.
-     *
-     * @param isTileEnabled
-     *   <code>true</code> if you want the backgroundResourceId to be
-     *   tiled, else <code>false</code>.
-     *
-     * @return the {@link Builder}.
+     * The textColorResourceValue's e.g. 0xffff4444;
+     * <p/>
+     * NOT_SET for no value.
      */
-    public Builder setTileEnabled(boolean isTileEnabled) {
-      this.isTileEnabled = isTileEnabled;
-
-      return this;
-    }
+    final int textColorValue;
 
     /**
-     * Set the textColorResourceId option for the {@link Crouton}.
-     *
-     * @param textColor
-     *   The resource id of the text colorResourceId.
-     *
-     * @return the {@link Builder}.
+     * The height of the {@link Crouton} in pixels.
      */
-    public Builder setTextColor(int textColor) {
-      this.textColorResourceId = textColor;
-
-      return this;
-    }
+    final int heightInPixels;
 
     /**
-     * Set the textColorResourceValue option of the {@link Crouton}.
-     *
-     * @param textColorValue
-     *   The textColorResourceValue's e.g. 0xffff4444;
-     *
-     * @return the {@link Builder}.
+     * Resource ID for the height of the {@link Crouton}.
      */
-    public Builder setTextColorValue(int textColorValue) {
-      this.textColorValue = textColorValue;
-      return this;
-    }
+    final int heightDimensionResId;
 
     /**
-     * Set the gravity option for the {@link Crouton}.
-     *
-     * @param gravity
-     *   The text's gravity as provided by {@link Gravity}.
-     *
-     * @return the {@link Builder}.
+     * The width of the {@link Crouton} in pixels.
      */
-    public Builder setGravity(int gravity) {
-      this.gravity = gravity;
+    final int widthInPixels;
 
-      return this;
-    }
+    /**
+     * Resource ID for the width of the {@link Crouton}.
+     */
+    final int widthDimensionResId;
 
     /**
-     * Set the image option for the {@link Crouton}.
-     *
-     * @param imageDrawable
-     *   An additional image to display in the {@link Crouton}.
-     *
-     * @return the {@link Builder}.
+     * The text's gravity as provided by {@link Gravity}.
      */
-    public Builder setImageDrawable(Drawable imageDrawable) {
-      this.imageDrawable = imageDrawable;
+    final int gravity;
 
-      return this;
-    }
+    /**
+     * An additional image to display in the {@link Crouton}.
+     */
+    final Drawable imageDrawable;
 
     /**
-     * Set the image resource option for the {@link Crouton}.
-     *
-     * @param imageResId
-     *   An additional image to display in the {@link Crouton}.
-     *
-     * @return the {@link Builder}.
+     * An additional image to display in the {@link Crouton}.
      */
-    public Builder setImageResource(int imageResId) {
-      this.imageResId = imageResId;
+    final int imageResId;
 
-      return this;
-    }
+    /**
+     * The {@link ImageView.ScaleType} for the image to display in the {@link Crouton}.
+     */
+    final ImageView.ScaleType imageScaleType;
 
-    /** The text size in sp. */
-    public Builder setTextSize(int textSize) {
-      this.textSize = textSize;
-      return this;
-    }
+    /**
+     * The text size in sp
+     * <p/>
+     * 0 sets the text size to the system theme default
+     */
+    final int textSize;
 
-    /** The text shadow color resource id. */
-    public Builder setTextShadowColor(int textShadowColorResId) {
-      this.textShadowColorResId = textShadowColorResId;
-      return this;
-    }
+    /**
+     * The text shadow color's resource id
+     */
+    final int textShadowColorResId;
 
-    /** The text shadow radius. */
-    public Builder setTextShadowRadius(float textShadowRadius) {
-      this.textShadowRadius = textShadowRadius;
-      return this;
-    }
+    /**
+     * The text shadow radius
+     */
+    final float textShadowRadius;
 
-    /** The text shadow horizontal offset. */
-    public Builder setTextShadowDx(float textShadowDx) {
-      this.textShadowDx = textShadowDx;
-      return this;
-    }
+    /**
+     * The text shadow vertical offset
+     */
+    final float textShadowDy;
 
-    /** The text shadow vertical offset. */
-    public Builder setTextShadowDy(float textShadowDy) {
-      this.textShadowDy = textShadowDy;
-      return this;
-    }
+    /**
+     * The text shadow horizontal offset
+     */
+    final float textShadowDx;
 
-    /** The text appearance resource id for the text. */
-    public Builder setTextAppearance(int textAppearanceResId) {
-      this.textAppearanceResId = textAppearanceResId;
-      return this;
-    }
+    /**
+     * The text appearance resource id for the text.
+     */
+    final int textAppearanceResId;
 
-    /** The {@link ImageView.ScaleType} for the image. */
-    public Builder setImageScaleType(ImageView.ScaleType imageScaleType) {
-      this.imageScaleType = imageScaleType;
-      return this;
-    }
+    /**
+     * The padding for the crouton view content in pixels
+     */
+    final int paddingInPixels;
 
-    /** The padding for the crouton view's content in pixels. */
-    public Builder setPaddingInPixels(int padding) {
-      this.paddingInPixels = padding;
-      return this;
-    }
+    /**
+     * The resource id for the padding for the view content
+     */
+    final int paddingDimensionResId;
 
-    /** The resource id for the padding for the crouton view's content. */
-    public Builder setPaddingDimensionResId(int paddingResId) {
-      this.paddingDimensionResId = paddingResId;
-      return this;
-    }
+    /**
+     * The file path and font name for the view content
+     */
+    final String fontName;
 
-    /** The file path and name of the font for the crouton view's content. */
-    public Builder setFontName(String fontName) {
-      this.fontName = fontName;
-      return this;
+    /**
+     * The file path and font name resource id for the view content
+     */
+    final int fontNameResId;
+
+    private Style(final Builder builder) {
+        this.configuration = builder.configuration;
+        this.backgroundColorResourceId = builder.backgroundColorResourceId;
+        this.backgroundDrawableResourceId = builder.backgroundDrawableResourceId;
+        this.isTileEnabled = builder.isTileEnabled;
+        this.textColorResourceId = builder.textColorResourceId;
+        this.textColorValue = builder.textColorValue;
+        this.heightInPixels = builder.heightInPixels;
+        this.heightDimensionResId = builder.heightDimensionResId;
+        this.widthInPixels = builder.widthInPixels;
+        this.widthDimensionResId = builder.widthDimensionResId;
+        this.gravity = builder.gravity;
+        this.imageDrawable = builder.imageDrawable;
+        this.textSize = builder.textSize;
+        this.textShadowColorResId = builder.textShadowColorResId;
+        this.textShadowRadius = builder.textShadowRadius;
+        this.textShadowDx = builder.textShadowDx;
+        this.textShadowDy = builder.textShadowDy;
+        this.textAppearanceResId = builder.textAppearanceResId;
+        this.imageResId = builder.imageResId;
+        this.imageScaleType = builder.imageScaleType;
+        this.paddingInPixels = builder.paddingInPixels;
+        this.paddingDimensionResId = builder.paddingDimensionResId;
+        this.backgroundColorValue = builder.backgroundColorValue;
+        this.fontName = builder.fontName;
+        this.fontNameResId = builder.fontNameResId;
     }
 
-    /** The resource id for the file path and name of the font for the crouton view's content. */
-    public Builder setFontNameResId(int fontNameResId) {
-      this.fontNameResId = fontNameResId;
-      return this;
+    /**
+     * Builder for the {@link Style} object.
+     */
+    public static class Builder {
+        private Configuration configuration;
+        private int backgroundColorValue;
+        private int backgroundColorResourceId;
+        private int backgroundDrawableResourceId;
+        private boolean isTileEnabled;
+        private int textColorResourceId;
+        private int textColorValue;
+        private int heightInPixels;
+        private int heightDimensionResId;
+        private int widthInPixels;
+        private int widthDimensionResId;
+        private int gravity;
+        private Drawable imageDrawable;
+        private int textSize;
+        private int textShadowColorResId;
+        private float textShadowRadius;
+        private float textShadowDx;
+        private float textShadowDy;
+        private int textAppearanceResId;
+        private int imageResId;
+        private ImageView.ScaleType imageScaleType;
+        private int paddingInPixels;
+        private int paddingDimensionResId;
+        private String fontName;
+        private int fontNameResId;
+
+        /**
+         * Creates a {@link Builder} to build a {@link Style} upon.
+         */
+        public Builder() {
+            configuration = Configuration.DEFAULT;
+            paddingInPixels = 10;
+            backgroundColorResourceId = android.R.color.holo_blue_light;
+            backgroundDrawableResourceId = 0;
+            backgroundColorValue = NOT_SET;
+            isTileEnabled = false;
+            textColorResourceId = android.R.color.white;
+            textColorValue = NOT_SET;
+            heightInPixels = LayoutParams.WRAP_CONTENT;
+            widthInPixels = LayoutParams.MATCH_PARENT;
+            gravity = Gravity.CENTER;
+            imageDrawable = null;
+            imageResId = 0;
+            imageScaleType = ImageView.ScaleType.FIT_XY;
+            fontName = null;
+            fontNameResId = 0;
+        }
+
+        /**
+         * Creates a {@link Builder} to build a {@link Style} upon.
+         *
+         * @param baseStyle The base {@link Style} to use for this {@link Style}.
+         */
+        public Builder(final Style baseStyle) {
+            configuration = baseStyle.configuration;
+            backgroundColorValue = baseStyle.backgroundColorValue;
+            backgroundColorResourceId = baseStyle.backgroundColorResourceId;
+            backgroundDrawableResourceId = baseStyle.backgroundDrawableResourceId;
+            isTileEnabled = baseStyle.isTileEnabled;
+            textColorResourceId = baseStyle.textColorResourceId;
+            textColorValue = baseStyle.textColorValue;
+            heightInPixels = baseStyle.heightInPixels;
+            heightDimensionResId = baseStyle.heightDimensionResId;
+            widthInPixels = baseStyle.widthInPixels;
+            widthDimensionResId = baseStyle.widthDimensionResId;
+            gravity = baseStyle.gravity;
+            imageDrawable = baseStyle.imageDrawable;
+            textSize = baseStyle.textSize;
+            textShadowColorResId = baseStyle.textShadowColorResId;
+            textShadowRadius = baseStyle.textShadowRadius;
+            textShadowDx = baseStyle.textShadowDx;
+            textShadowDy = baseStyle.textShadowDy;
+            textAppearanceResId = baseStyle.textAppearanceResId;
+            imageResId = baseStyle.imageResId;
+            imageScaleType = baseStyle.imageScaleType;
+            paddingInPixels = baseStyle.paddingInPixels;
+            paddingDimensionResId = baseStyle.paddingDimensionResId;
+            fontName = baseStyle.fontName;
+            fontNameResId = baseStyle.fontNameResId;
+        }
+
+        /**
+         * Set the {@link Configuration} option of the {@link Crouton}.
+         *
+         * @param configuration The {@link Configuration}.
+         * @return the {@link Builder}.
+         */
+        public Builder setConfiguration(Configuration configuration) {
+            this.configuration = configuration;
+            return this;
+        }
+
+        /**
+         * Set the backgroundColorResourceId option of the {@link Crouton}.
+         *
+         * @param backgroundColorResourceId The backgroundColorResourceId's resource id.
+         * @return the {@link Builder}.
+         */
+        public Builder setBackgroundColor(int backgroundColorResourceId) {
+            this.backgroundColorResourceId = backgroundColorResourceId;
+
+            return this;
+        }
+
+        /**
+         * Set the backgroundColorResourceValue option of the {@link Crouton}.
+         *
+         * @param backgroundColorValue The backgroundColorResourceValue's e.g. 0xffff4444;
+         * @return the {@link Builder}.
+         */
+        public Builder setBackgroundColorValue(int backgroundColorValue) {
+            this.backgroundColorValue = backgroundColorValue;
+            return this;
+        }
+
+        /**
+         * Set the backgroundDrawableResourceId option for the {@link Crouton}.
+         *
+         * @param backgroundDrawableResourceId Resource ID of a backgroundDrawableResourceId image drawable.
+         * @return the {@link Builder}.
+         */
+        public Builder setBackgroundDrawable(int backgroundDrawableResourceId) {
+            this.backgroundDrawableResourceId = backgroundDrawableResourceId;
+
+            return this;
+        }
+
+        /**
+         * Set the heightInPixels option for the {@link Crouton}.
+         *
+         * @param height The height of the {@link Crouton} in pixel. Can also be
+         *               {@link LayoutParams#MATCH_PARENT} or
+         *               {@link LayoutParams#WRAP_CONTENT}.
+         * @return the {@link Builder}.
+         */
+        public Builder setHeight(int height) {
+            this.heightInPixels = height;
+
+            return this;
+        }
+
+        /**
+         * Set the resource id for the height option for the {@link Crouton}.
+         *
+         * @param heightDimensionResId Resource ID of a dimension for the height of the {@link Crouton}.
+         * @return the {@link Builder}.
+         */
+        public Builder setHeightDimensionResId(int heightDimensionResId) {
+            this.heightDimensionResId = heightDimensionResId;
+
+            return this;
+        }
+
+        /**
+         * Set the widthInPixels option for the {@link Crouton}.
+         *
+         * @param width The width of the {@link Crouton} in pixel. Can also be
+         *              {@link LayoutParams#MATCH_PARENT} or
+         *              {@link LayoutParams#WRAP_CONTENT}.
+         * @return the {@link Builder}.
+         */
+        public Builder setWidth(int width) {
+            this.widthInPixels = width;
+
+            return this;
+        }
+
+        /**
+         * Set the resource id for the width option for the {@link Crouton}.
+         *
+         * @param widthDimensionResId Resource ID of a dimension for the width of the {@link Crouton}.
+         * @return the {@link Builder}.
+         */
+        public Builder setWidthDimensionResId(int widthDimensionResId) {
+            this.widthDimensionResId = widthDimensionResId;
+
+            return this;
+        }
+
+        /**
+         * Set the isTileEnabled option for the {@link Crouton}.
+         *
+         * @param isTileEnabled <code>true</code> if you want the backgroundResourceId to be
+         *                      tiled, else <code>false</code>.
+         * @return the {@link Builder}.
+         */
+        public Builder setTileEnabled(boolean isTileEnabled) {
+            this.isTileEnabled = isTileEnabled;
+
+            return this;
+        }
+
+        /**
+         * Set the textColorResourceId option for the {@link Crouton}.
+         *
+         * @param textColor The resource id of the text colorResourceId.
+         * @return the {@link Builder}.
+         */
+        public Builder setTextColor(int textColor) {
+            this.textColorResourceId = textColor;
+
+            return this;
+        }
+
+        /**
+         * Set the textColorResourceValue option of the {@link Crouton}.
+         *
+         * @param textColorValue The textColorResourceValue's e.g. 0xffff4444;
+         * @return the {@link Builder}.
+         */
+        public Builder setTextColorValue(int textColorValue) {
+            this.textColorValue = textColorValue;
+            return this;
+        }
+
+        /**
+         * Set the gravity option for the {@link Crouton}.
+         *
+         * @param gravity The text's gravity as provided by {@link Gravity}.
+         * @return the {@link Builder}.
+         */
+        public Builder setGravity(int gravity) {
+            this.gravity = gravity;
+
+            return this;
+        }
+
+        /**
+         * Set the image option for the {@link Crouton}.
+         *
+         * @param imageDrawable An additional image to display in the {@link Crouton}.
+         * @return the {@link Builder}.
+         */
+        public Builder setImageDrawable(Drawable imageDrawable) {
+            this.imageDrawable = imageDrawable;
+
+            return this;
+        }
+
+        /**
+         * Set the image resource option for the {@link Crouton}.
+         *
+         * @param imageResId An additional image to display in the {@link Crouton}.
+         * @return the {@link Builder}.
+         */
+        public Builder setImageResource(int imageResId) {
+            this.imageResId = imageResId;
+
+            return this;
+        }
+
+        /**
+         * The text size in sp.
+         */
+        public Builder setTextSize(int textSize) {
+            this.textSize = textSize;
+            return this;
+        }
+
+        /**
+         * The text shadow color resource id.
+         */
+        public Builder setTextShadowColor(int textShadowColorResId) {
+            this.textShadowColorResId = textShadowColorResId;
+            return this;
+        }
+
+        /**
+         * The text shadow radius.
+         */
+        public Builder setTextShadowRadius(float textShadowRadius) {
+            this.textShadowRadius = textShadowRadius;
+            return this;
+        }
+
+        /**
+         * The text shadow horizontal offset.
+         */
+        public Builder setTextShadowDx(float textShadowDx) {
+            this.textShadowDx = textShadowDx;
+            return this;
+        }
+
+        /**
+         * The text shadow vertical offset.
+         */
+        public Builder setTextShadowDy(float textShadowDy) {
+            this.textShadowDy = textShadowDy;
+            return this;
+        }
+
+        /**
+         * The text appearance resource id for the text.
+         */
+        public Builder setTextAppearance(int textAppearanceResId) {
+            this.textAppearanceResId = textAppearanceResId;
+            return this;
+        }
+
+        /**
+         * The {@link android.widget.ImageView.ScaleType} for the image.
+         */
+        public Builder setImageScaleType(ImageView.ScaleType imageScaleType) {
+            this.imageScaleType = imageScaleType;
+            return this;
+        }
+
+        /**
+         * The padding for the crouton view's content in pixels.
+         */
+        public Builder setPaddingInPixels(int padding) {
+            this.paddingInPixels = padding;
+            return this;
+        }
+
+        /**
+         * The resource id for the padding for the crouton view's content.
+         */
+        public Builder setPaddingDimensionResId(int paddingResId) {
+            this.paddingDimensionResId = paddingResId;
+            return this;
+        }
+
+        /**
+         * The file path and name of the font for the crouton view's content.
+         */
+        public Builder setFontName(String fontName) {
+            this.fontName = fontName;
+            return this;
+        }
+
+        /**
+         * The resource id for the file path and name of the font for the crouton view's content.
+         */
+        public Builder setFontNameResId(int fontNameResId) {
+            this.fontNameResId = fontNameResId;
+            return this;
+        }
+
+        /**
+         * @return a configured {@link Style} object.
+         */
+        public Style build() {
+            return new Style(this);
+        }
     }
 
-    /** @return a configured {@link Style} object. */
-    public Style build() {
-      return new Style(this);
+    @Override
+    public String toString() {
+        return "Style{" +
+                "configuration=" + configuration +
+                ", backgroundColorResourceId=" + backgroundColorResourceId +
+                ", backgroundDrawableResourceId=" + backgroundDrawableResourceId +
+                ", backgroundColorValue=" + backgroundColorValue +
+                ", isTileEnabled=" + isTileEnabled +
+                ", textColorResourceId=" + textColorResourceId +
+                ", textColorValue=" + textColorValue +
+                ", heightInPixels=" + heightInPixels +
+                ", heightDimensionResId=" + heightDimensionResId +
+                ", widthInPixels=" + widthInPixels +
+                ", widthDimensionResId=" + widthDimensionResId +
+                ", gravity=" + gravity +
+                ", imageDrawable=" + imageDrawable +
+                ", imageResId=" + imageResId +
+                ", imageScaleType=" + imageScaleType +
+                ", textSize=" + textSize +
+                ", textShadowColorResId=" + textShadowColorResId +
+                ", textShadowRadius=" + textShadowRadius +
+                ", textShadowDy=" + textShadowDy +
+                ", textShadowDx=" + textShadowDx +
+                ", textAppearanceResId=" + textAppearanceResId +
+                ", paddingInPixels=" + paddingInPixels +
+                ", paddingDimensionResId=" + paddingDimensionResId +
+                ", fontName=" + fontName +
+                ", fontNameResId=" + fontNameResId +
+                '}';
     }
-  }
-
-  @Override
-  public String toString() {
-    return "Style{" +
-      "configuration=" + configuration +
-      ", backgroundColorResourceId=" + backgroundColorResourceId +
-      ", backgroundDrawableResourceId=" + backgroundDrawableResourceId +
-      ", backgroundColorValue=" + backgroundColorValue +
-      ", isTileEnabled=" + isTileEnabled +
-      ", textColorResourceId=" + textColorResourceId +
-      ", textColorValue=" + textColorValue +
-      ", heightInPixels=" + heightInPixels +
-      ", heightDimensionResId=" + heightDimensionResId +
-      ", widthInPixels=" + widthInPixels +
-      ", widthDimensionResId=" + widthDimensionResId +
-      ", gravity=" + gravity +
-      ", imageDrawable=" + imageDrawable +
-      ", imageResId=" + imageResId +
-      ", imageScaleType=" + imageScaleType +
-      ", textSize=" + textSize +
-      ", textShadowColorResId=" + textShadowColorResId +
-      ", textShadowRadius=" + textShadowRadius +
-      ", textShadowDy=" + textShadowDy +
-      ", textShadowDx=" + textShadowDx +
-      ", textAppearanceResId=" + textAppearanceResId +
-      ", paddingInPixels=" + paddingInPixels +
-      ", paddingDimensionResId=" + paddingDimensionResId +
-      ", fontName=" + fontName +
-      ", fontNameResId=" + fontNameResId +
-      '}';
-  }
-}
+}