initial commit of my exception report viewer

This commit is contained in:
2011-12-20 16:15:31 +00:00
parent ed4d172473
commit eb18d9e8d7
75 changed files with 2527 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="lib" path="/app/android-sdk-linux_86/extras/android/compatibility/v4/android-support-v4.jar"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ExceptionReportViewer</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.TwentyCodes.android.ExceptionReportViewer"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.TwentyCodes.android.exception.ExceptionReportActivity" >
</activity>
</application>
</manifest>

View File

@@ -0,0 +1,19 @@
# exceptionhandler.properties
# This is the default Twenty Codes, LLC Exception Handler properties file
#
# @author Twenty Codes, LLC
# @author ricky barrette
# The following is for using our custom server based exception handler web application
# HTTP ONLY
# server is the physical web address for your server
# file is the path to your filing script
# get is the path to your json retrieval script
server = http://powers.doesntexist.com:666/testing
file = /index.php?post=1
#get = /index.php?get=1
# uncomment the following if you want your application to use email to file reports.
# if this is uncommented, email will always be used.
#email = twentycodes@gmail.com

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

View File

@@ -0,0 +1,482 @@
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.TwentyCodes.android.ExceptionReportViewer;
public final class R {
public static final class array {
public static final int titles=0x7f050000;
}
public static final class attr {
/** <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
*/
public static final int circlePageIndicatorStyle=0x7f010000;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int clipPadding=0x7f010002;
/** <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerColor=0x7f010003;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerIndicatorHeight=0x7f010006;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerIndicatorPadding=0x7f010007;
/** <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>none</code></td><td>0</td><td></td></tr>
<tr><td><code>triangle</code></td><td>1</td><td></td></tr>
<tr><td><code>underline</code></td><td>2</td><td></td></tr>
</table>
*/
public static final int footerIndicatorStyle=0x7f010005;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerIndicatorUnderlinePadding=0x7f010008;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerLineHeight=0x7f010004;
/** <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int selectedBold=0x7f01000a;
/** <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int selectedColor=0x7f010009;
/** <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int textColor=0x7f01000b;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int textSize=0x7f01000c;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int titlePadding=0x7f01000d;
/** <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
*/
public static final int titlePageIndicatorStyle=0x7f010001;
}
public static final class bool {
public static final int default_title_indicator_selected_bold=0x7f0a0000;
}
public static final class color {
public static final int default_title_indicator_footer_color=0x7f080000;
public static final int default_title_indicator_selected_color=0x7f080001;
public static final int default_title_indicator_text_color=0x7f080002;
}
public static final class dimen {
public static final int default_title_indicator_clip_padding=0x7f070000;
public static final int default_title_indicator_footer_indicator_height=0x7f070002;
public static final int default_title_indicator_footer_indicator_padding=0x7f070003;
public static final int default_title_indicator_footer_indicator_underline_padding=0x7f070004;
public static final int default_title_indicator_footer_line_height=0x7f070001;
public static final int default_title_indicator_text_size=0x7f070005;
public static final int default_title_indicator_title_padding=0x7f070006;
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int app=0x7f060009;
public static final int description=0x7f060004;
public static final int exception_text=0x7f060006;
public static final int exception_title=0x7f060005;
public static final int id=0x7f060007;
public static final int indicator=0x7f06000b;
public static final int msg=0x7f06000a;
public static final int none=0x7f060000;
public static final int pager=0x7f06000c;
public static final int send=0x7f060003;
public static final int status=0x7f060008;
public static final int triangle=0x7f060001;
public static final int underline=0x7f060002;
}
public static final class integer {
public static final int default_title_indicator_footer_indicator_style=0x7f090000;
}
public static final class layout {
public static final int exception_activity=0x7f030000;
public static final int exception_list_item=0x7f030001;
public static final int list=0x7f030002;
public static final int list_item=0x7f030003;
public static final int main=0x7f030004;
}
public static final class string {
public static final int app_name=0x7f040007;
public static final int crash=0x7f040000;
public static final int description=0x7f040004;
public static final int hello=0x7f040006;
public static final int send=0x7f040003;
public static final int sending=0x7f040002;
public static final int sorry=0x7f040001;
public static final int version=0x7f040005;
}
public static final class style {
public static final int CustomTitlePageIndicator=0x7f0b0001;
public static final int StyledIndicators=0x7f0b0000;
/** Copyright (C) 2011 Jake Wharton 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.
*/
public static final int Theme_PageIndicatorDefaults=0x7f0b0002;
public static final int Widget_TitlePageIndicator=0x7f0b0003;
}
public static final class styleable {
/** Attributes that can be used with a TitlePageIndicator.
<p>Includes the following attributes:</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Attribute</th><th>Description</th></tr>
<tr><td><code>{@link #TitlePageIndicator_clipPadding com.TwentyCodes.android.ExceptionReportViewer:clipPadding}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerColor com.TwentyCodes.android.ExceptionReportViewer:footerColor}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorHeight com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorHeight}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorPadding com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorPadding}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorStyle com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorStyle}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorUnderlinePadding com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorUnderlinePadding}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerLineHeight com.TwentyCodes.android.ExceptionReportViewer:footerLineHeight}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_selectedBold com.TwentyCodes.android.ExceptionReportViewer:selectedBold}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_selectedColor com.TwentyCodes.android.ExceptionReportViewer:selectedColor}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_textColor com.TwentyCodes.android.ExceptionReportViewer:textColor}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_textSize com.TwentyCodes.android.ExceptionReportViewer:textSize}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_titlePadding com.TwentyCodes.android.ExceptionReportViewer:titlePadding}</code></td><td></td></tr>
</table>
@see #TitlePageIndicator_clipPadding
@see #TitlePageIndicator_footerColor
@see #TitlePageIndicator_footerIndicatorHeight
@see #TitlePageIndicator_footerIndicatorPadding
@see #TitlePageIndicator_footerIndicatorStyle
@see #TitlePageIndicator_footerIndicatorUnderlinePadding
@see #TitlePageIndicator_footerLineHeight
@see #TitlePageIndicator_selectedBold
@see #TitlePageIndicator_selectedColor
@see #TitlePageIndicator_textColor
@see #TitlePageIndicator_textSize
@see #TitlePageIndicator_titlePadding
*/
public static final int[] TitlePageIndicator = {
0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005,
0x7f010006, 0x7f010007, 0x7f010008, 0x7f010009,
0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d
};
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#clipPadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:clipPadding
*/
public static final int TitlePageIndicator_clipPadding = 0;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerColor}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerColor
*/
public static final int TitlePageIndicator_footerColor = 1;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorHeight}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerIndicatorHeight
*/
public static final int TitlePageIndicator_footerIndicatorHeight = 4;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorPadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerIndicatorPadding
*/
public static final int TitlePageIndicator_footerIndicatorPadding = 5;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorStyle}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>none</code></td><td>0</td><td></td></tr>
<tr><td><code>triangle</code></td><td>1</td><td></td></tr>
<tr><td><code>underline</code></td><td>2</td><td></td></tr>
</table>
@attr name android:footerIndicatorStyle
*/
public static final int TitlePageIndicator_footerIndicatorStyle = 3;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorUnderlinePadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerIndicatorUnderlinePadding
*/
public static final int TitlePageIndicator_footerIndicatorUnderlinePadding = 6;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerLineHeight}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerLineHeight
*/
public static final int TitlePageIndicator_footerLineHeight = 2;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#selectedBold}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:selectedBold
*/
public static final int TitlePageIndicator_selectedBold = 8;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#selectedColor}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:selectedColor
*/
public static final int TitlePageIndicator_selectedColor = 7;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#textColor}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:textColor
*/
public static final int TitlePageIndicator_textColor = 9;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#textSize}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:textSize
*/
public static final int TitlePageIndicator_textSize = 10;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#titlePadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:titlePadding
*/
public static final int TitlePageIndicator_titlePadding = 11;
/**
Copyright (C) 2011 Patrik Åkerfeldt
Copyright (C) 2011 Jake Wharton
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.
<p>Includes the following attributes:</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Attribute</th><th>Description</th></tr>
<tr><td><code>{@link #ViewPagerIndicator_circlePageIndicatorStyle com.TwentyCodes.android.ExceptionReportViewer:circlePageIndicatorStyle}</code></td><td></td></tr>
<tr><td><code>{@link #ViewPagerIndicator_titlePageIndicatorStyle com.TwentyCodes.android.ExceptionReportViewer:titlePageIndicatorStyle}</code></td><td></td></tr>
</table>
@see #ViewPagerIndicator_circlePageIndicatorStyle
@see #ViewPagerIndicator_titlePageIndicatorStyle
*/
public static final int[] ViewPagerIndicator = {
0x7f010000, 0x7f010001
};
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#circlePageIndicatorStyle}
attribute's value can be found in the {@link #ViewPagerIndicator} array.
<p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
@attr name android:circlePageIndicatorStyle
*/
public static final int ViewPagerIndicator_circlePageIndicatorStyle = 0;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#titlePageIndicatorStyle}
attribute's value can be found in the {@link #ViewPagerIndicator} array.
<p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
@attr name android:titlePageIndicatorStyle
*/
public static final int ViewPagerIndicator_titlePageIndicatorStyle = 1;
};
}

View File

@@ -0,0 +1,482 @@
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.TwentyCodes.android.exception;
public final class R {
public static final class array {
public static final int titles=0x7f050000;
}
public static final class attr {
/** <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
*/
public static final int circlePageIndicatorStyle=0x7f010000;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int clipPadding=0x7f010002;
/** <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerColor=0x7f010003;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerIndicatorHeight=0x7f010006;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerIndicatorPadding=0x7f010007;
/** <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>none</code></td><td>0</td><td></td></tr>
<tr><td><code>triangle</code></td><td>1</td><td></td></tr>
<tr><td><code>underline</code></td><td>2</td><td></td></tr>
</table>
*/
public static final int footerIndicatorStyle=0x7f010005;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerIndicatorUnderlinePadding=0x7f010008;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int footerLineHeight=0x7f010004;
/** <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int selectedBold=0x7f01000a;
/** <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int selectedColor=0x7f010009;
/** <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int textColor=0x7f01000b;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int textSize=0x7f01000c;
/** <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
*/
public static final int titlePadding=0x7f01000d;
/** <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
*/
public static final int titlePageIndicatorStyle=0x7f010001;
}
public static final class bool {
public static final int default_title_indicator_selected_bold=0x7f0a0000;
}
public static final class color {
public static final int default_title_indicator_footer_color=0x7f080000;
public static final int default_title_indicator_selected_color=0x7f080001;
public static final int default_title_indicator_text_color=0x7f080002;
}
public static final class dimen {
public static final int default_title_indicator_clip_padding=0x7f070000;
public static final int default_title_indicator_footer_indicator_height=0x7f070002;
public static final int default_title_indicator_footer_indicator_padding=0x7f070003;
public static final int default_title_indicator_footer_indicator_underline_padding=0x7f070004;
public static final int default_title_indicator_footer_line_height=0x7f070001;
public static final int default_title_indicator_text_size=0x7f070005;
public static final int default_title_indicator_title_padding=0x7f070006;
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int app=0x7f060009;
public static final int description=0x7f060004;
public static final int exception_text=0x7f060006;
public static final int exception_title=0x7f060005;
public static final int id=0x7f060007;
public static final int indicator=0x7f06000b;
public static final int msg=0x7f06000a;
public static final int none=0x7f060000;
public static final int pager=0x7f06000c;
public static final int send=0x7f060003;
public static final int status=0x7f060008;
public static final int triangle=0x7f060001;
public static final int underline=0x7f060002;
}
public static final class integer {
public static final int default_title_indicator_footer_indicator_style=0x7f090000;
}
public static final class layout {
public static final int exception_activity=0x7f030000;
public static final int exception_list_item=0x7f030001;
public static final int list=0x7f030002;
public static final int list_item=0x7f030003;
public static final int main=0x7f030004;
}
public static final class string {
public static final int app_name=0x7f040007;
public static final int crash=0x7f040000;
public static final int description=0x7f040004;
public static final int hello=0x7f040006;
public static final int send=0x7f040003;
public static final int sending=0x7f040002;
public static final int sorry=0x7f040001;
public static final int version=0x7f040005;
}
public static final class style {
public static final int CustomTitlePageIndicator=0x7f0b0001;
public static final int StyledIndicators=0x7f0b0000;
/** Copyright (C) 2011 Jake Wharton 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.
*/
public static final int Theme_PageIndicatorDefaults=0x7f0b0002;
public static final int Widget_TitlePageIndicator=0x7f0b0003;
}
public static final class styleable {
/** Attributes that can be used with a TitlePageIndicator.
<p>Includes the following attributes:</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Attribute</th><th>Description</th></tr>
<tr><td><code>{@link #TitlePageIndicator_clipPadding com.TwentyCodes.android.ExceptionReportViewer:clipPadding}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerColor com.TwentyCodes.android.ExceptionReportViewer:footerColor}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorHeight com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorHeight}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorPadding com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorPadding}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorStyle com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorStyle}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerIndicatorUnderlinePadding com.TwentyCodes.android.ExceptionReportViewer:footerIndicatorUnderlinePadding}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_footerLineHeight com.TwentyCodes.android.ExceptionReportViewer:footerLineHeight}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_selectedBold com.TwentyCodes.android.ExceptionReportViewer:selectedBold}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_selectedColor com.TwentyCodes.android.ExceptionReportViewer:selectedColor}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_textColor com.TwentyCodes.android.ExceptionReportViewer:textColor}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_textSize com.TwentyCodes.android.ExceptionReportViewer:textSize}</code></td><td></td></tr>
<tr><td><code>{@link #TitlePageIndicator_titlePadding com.TwentyCodes.android.ExceptionReportViewer:titlePadding}</code></td><td></td></tr>
</table>
@see #TitlePageIndicator_clipPadding
@see #TitlePageIndicator_footerColor
@see #TitlePageIndicator_footerIndicatorHeight
@see #TitlePageIndicator_footerIndicatorPadding
@see #TitlePageIndicator_footerIndicatorStyle
@see #TitlePageIndicator_footerIndicatorUnderlinePadding
@see #TitlePageIndicator_footerLineHeight
@see #TitlePageIndicator_selectedBold
@see #TitlePageIndicator_selectedColor
@see #TitlePageIndicator_textColor
@see #TitlePageIndicator_textSize
@see #TitlePageIndicator_titlePadding
*/
public static final int[] TitlePageIndicator = {
0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005,
0x7f010006, 0x7f010007, 0x7f010008, 0x7f010009,
0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d
};
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#clipPadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:clipPadding
*/
public static final int TitlePageIndicator_clipPadding = 0;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerColor}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerColor
*/
public static final int TitlePageIndicator_footerColor = 1;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorHeight}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerIndicatorHeight
*/
public static final int TitlePageIndicator_footerIndicatorHeight = 4;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorPadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerIndicatorPadding
*/
public static final int TitlePageIndicator_footerIndicatorPadding = 5;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorStyle}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>none</code></td><td>0</td><td></td></tr>
<tr><td><code>triangle</code></td><td>1</td><td></td></tr>
<tr><td><code>underline</code></td><td>2</td><td></td></tr>
</table>
@attr name android:footerIndicatorStyle
*/
public static final int TitlePageIndicator_footerIndicatorStyle = 3;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerIndicatorUnderlinePadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerIndicatorUnderlinePadding
*/
public static final int TitlePageIndicator_footerIndicatorUnderlinePadding = 6;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#footerLineHeight}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:footerLineHeight
*/
public static final int TitlePageIndicator_footerLineHeight = 2;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#selectedBold}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:selectedBold
*/
public static final int TitlePageIndicator_selectedBold = 8;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#selectedColor}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:selectedColor
*/
public static final int TitlePageIndicator_selectedColor = 7;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#textColor}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:textColor
*/
public static final int TitlePageIndicator_textColor = 9;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#textSize}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:textSize
*/
public static final int TitlePageIndicator_textSize = 10;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#titlePadding}
attribute's value can be found in the {@link #TitlePageIndicator} array.
<p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
@attr name android:titlePadding
*/
public static final int TitlePageIndicator_titlePadding = 11;
/**
Copyright (C) 2011 Patrik Åkerfeldt
Copyright (C) 2011 Jake Wharton
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.
<p>Includes the following attributes:</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Attribute</th><th>Description</th></tr>
<tr><td><code>{@link #ViewPagerIndicator_circlePageIndicatorStyle com.TwentyCodes.android.ExceptionReportViewer:circlePageIndicatorStyle}</code></td><td></td></tr>
<tr><td><code>{@link #ViewPagerIndicator_titlePageIndicatorStyle com.TwentyCodes.android.ExceptionReportViewer:titlePageIndicatorStyle}</code></td><td></td></tr>
</table>
@see #ViewPagerIndicator_circlePageIndicatorStyle
@see #ViewPagerIndicator_titlePageIndicatorStyle
*/
public static final int[] ViewPagerIndicator = {
0x7f010000, 0x7f010001
};
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#circlePageIndicatorStyle}
attribute's value can be found in the {@link #ViewPagerIndicator} array.
<p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
@attr name android:circlePageIndicatorStyle
*/
public static final int ViewPagerIndicator_circlePageIndicatorStyle = 0;
/**
<p>This symbol is the offset where the {@link com.TwentyCodes.android.ExceptionReportViewer.R.attr#titlePageIndicatorStyle}
attribute's value can be found in the {@link #ViewPagerIndicator} array.
<p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
@attr name android:titlePageIndicatorStyle
*/
public static final int ViewPagerIndicator_titlePageIndicatorStyle = 1;
};
}

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<lint>
</lint>

View File

@@ -0,0 +1,40 @@
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

View File

@@ -0,0 +1,12 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-15
android.library.reference.1=../ExceptionHandlerLib

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#99CC00" />
<TextView
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#99CC00" />
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#99CC00" />
<TextView
android:id="@+id/app"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:textColor="#99CC00"
android:textSize="10dip" />
</LinearLayout>
<TextView
android:id="@+id/msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="15dip" >
</TextView>
</LinearLayout>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.jakewharton.android.viewpagerindicator.TitlePageIndicator
android:id="@+id/indicator"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip" />
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:background="#ffffff" />
</LinearLayout>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="titles">
<item>Production</item>
<item>Testing</item>
</string-array>
</resources>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--
Copyright (C) 2011 Patrik Åkerfeldt
Copyright (C) 2011 Jake Wharton
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.
-->
<declare-styleable name="ViewPagerIndicator">
<attr name="circlePageIndicatorStyle" format="reference" />
<attr name="titlePageIndicatorStyle" format="reference" />
</declare-styleable>
<declare-styleable name="TitlePageIndicator">
<attr name="clipPadding" format="dimension" />
<attr name="footerColor" format="color" />
<attr name="footerLineHeight" format="dimension" />
<attr name="footerIndicatorStyle">
<enum name="none" value="0" />
<enum name="triangle" value="1" />
<enum name="underline" value="2" />
</attr>
<attr name="footerIndicatorHeight" format="dimension" />
<attr name="footerIndicatorPadding" format="dimension" />
<attr name="footerIndicatorUnderlinePadding" format="dimension" />
<attr name="selectedColor" format="color" />
<attr name="selectedBold" format="boolean" />
<attr name="textColor" format="color" />
<attr name="textSize" format="dimension" />
<attr name="titlePadding" format="dimension" />
</declare-styleable>
</resources>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2011 Jake Wharton
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.
-->
<resources>
<dimen name="default_title_indicator_clip_padding">0dp</dimen>
<color name="default_title_indicator_footer_color">#FFFFFFFF</color>
<dimen name="default_title_indicator_footer_line_height">1px</dimen>
<integer name="default_title_indicator_footer_indicator_style">1</integer>
<dimen name="default_title_indicator_footer_indicator_height">7dp</dimen>
<dimen name="default_title_indicator_footer_indicator_padding">5dp</dimen>
<dimen name="default_title_indicator_footer_indicator_underline_padding">10dp</dimen>
<color name="default_title_indicator_selected_color">#FF99CC00</color>
<bool name="default_title_indicator_selected_bold">true</bool>
<color name="default_title_indicator_text_color">#FFFFFFFF</color>
<dimen name="default_title_indicator_text_size">18dp</dimen>
<dimen name="default_title_indicator_title_padding">5dp</dimen>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Main!</string>
<string name="app_name">ExceptionReportViewer</string>
</resources>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2011 Jake Wharton
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.
-->
<resources>
<style name="StyledIndicators" parent="@android:style/Theme.Light">
<item name="titlePageIndicatorStyle">@style/CustomTitlePageIndicator</item>
</style>
<style name="CustomTitlePageIndicator">
<item name="android:background">#FFDDDDDD</item>
<item name="footerColor">#FFDDDDDD</item>
<item name="footerLineHeight">2dp</item>
<item name="footerIndicatorStyle">none</item>
<item name="textColor">#FF999999</item>
<item name="selectedColor">#00000000</item>
<item name="selectedBold">false</item>
</style>
<!-- Copyright (C) 2011 Jake Wharton 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. -->
<style name="Theme.PageIndicatorDefaults" parent="@android:style/Theme">
<item name="titlePageIndicatorStyle">@style/Widget.TitlePageIndicator</item>
</style>
<style name="Widget.TitlePageIndicator" parent="@android:style/Widget">
<item name="clipPadding">@dimen/default_title_indicator_clip_padding</item>
<item name="footerColor">@color/default_title_indicator_footer_color</item>
<item name="footerLineHeight">@dimen/default_title_indicator_footer_line_height</item>
<item name="footerIndicatorStyle">
@integer/default_title_indicator_footer_indicator_style
</item>
<item name="footerIndicatorHeight">
@dimen/default_title_indicator_footer_indicator_height
</item>
<item name="footerIndicatorPadding">
@dimen/default_title_indicator_footer_indicator_padding
</item>
<item name="footerIndicatorUnderlinePadding">
@dimen/default_title_indicator_footer_indicator_underline_padding
</item>
<item name="selectedColor">@color/default_title_indicator_selected_color</item>
<item name="selectedBold">@bool/default_title_indicator_selected_bold</item>
<item name="textColor">@color/default_title_indicator_text_color</item>
<item name="textSize">@dimen/default_title_indicator_text_size</item>
<item name="titlePadding">@dimen/default_title_indicator_title_padding</item>
</style>
</resources>

View File

@@ -0,0 +1,59 @@
package com.TwentyCodes.android.ExceptionReportViewer;
import java.util.ArrayList;
import com.TwentyCodes.android.exception.ExceptionHandler;
import com.jakewharton.android.viewpagerindicator.TitlePageIndicator;
import com.jakewharton.android.viewpagerindicator.TitledFragmentAdapter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
/**
* This is the main activity of this application.
* This application will be used to download and display the exception reports from a server.
*
* TODO Create settings activity and implement the following settings
* + production url
* + testing url
* + version preference
*
* TODO Create icons for titled view pager
*
* TODO Update ReportListFragment to a dynamically load 10 reports, and retrieve more when necessary.
* This will probably also entail server side changes
*
* @author ricky barrette
*/
public class Main extends FragmentActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
setContentView(R.layout.main);
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(new ReportListFragment("http://powers.doesntexist.com:666/?get=1"));
fragments.add(new ReportListFragment("http://powers.doesntexist.com:666/testing/?get=1"));
//the icons for the pages go here
int[] icons = new int[]{
//TODO create icons and update
android.R.drawable.stat_sys_warning,
android.R.drawable.stat_sys_warning
};
//display the pages
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new TitledFragmentAdapter(this.getSupportFragmentManager(), fragments, this.getResources().getStringArray(R.array.titles), icons));
//display the titles
TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(pager);
}
}

View File

@@ -0,0 +1,155 @@
/**
* ReportAdapter.java
* @date Dec 19, 2011
* @author ricky barrette
* @author Twenty Codes, LLC
*/
package com.TwentyCodes.android.ExceptionReportViewer;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
/**
* This adaptor will be used to populate a listview with report titles provided
* a JSONArray
*
* @author ricky barrette
*/
public class ReportAdapter extends BaseAdapter {
private static final String TAG = "ReportAdapter";
private JSONArray mReports;
private LayoutInflater mInflater;
/**
* Creates a new ReportAdator
*
* @author ricky barrette
*/
public ReportAdapter(Context context, JSONArray reports) {
mReports = reports;
mInflater = LayoutInflater.from(context);
}
/**
* returns the amount of reports in the reports JSONArray (non-Javadoc)
*
* @see android.widget.Adapter#getCount()
*/
@Override
public int getCount() {
return mReports.length();
}
/**
* returns the report at index
*
* @param index
* (non-Javadoc)
* @see android.widget.Adapter#getItem(int)
*/
@Override
public JSONObject getItem(int position) {
try {
return mReports.getJSONObject(position);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* (non-Javadoc)
*
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int position) {
return position;
}
/**
* this method will be used to populate the views (non-Javadoc)
*
* @see android.widget.Adapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/*
* here we will only create new views when needed, and recycle old ones
* when provided
*/
Holder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new Holder();
holder.id = (TextView) convertView.findViewById(R.id.id);
holder.msg = (TextView) convertView.findViewById(R.id.msg);
holder.status = (TextView) convertView.findViewById(R.id.status);
holder.app = (TextView) convertView.findViewById(R.id.app);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
/*
* here we will populate the views
*/
JSONObject report = null;
try {
report = getItem(position).getJSONObject("report");
} catch (JSONException e1) {
e1.printStackTrace();
}
Log.d(TAG, report.toString());
try {
holder.id.setText(report.getString("id"));
} catch (JSONException e) {
holder.id.setText(e.getMessage());
}
try {
holder.msg.setText(report.getString("msg"));
} catch (JSONException e) {
holder.msg.setText(e.getMessage());
}
try {
holder.status.setText(report.getString("status"));
} catch (JSONException e) {
holder.status.setText(e.getMessage());
}
try {
holder.app.setText(report.getString("app"));
} catch (JSONException e) {
holder.app.setText(e.getMessage());
}
return convertView;
}
/**
* This simple class will be used to hold views, so they can be recycled
*
* @author ricky barrette
*/
class Holder {
TextView id;
TextView status;
TextView msg;
TextView app;
}
}

View File

@@ -0,0 +1,147 @@
/**
* ReportListFragment.java
* @date Dec 19, 2011
* @author ricky barrette
* @author Twenty Codes, LLC
*/
package com.TwentyCodes.android.ExceptionReportViewer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.TwentyCodes.android.exception.ExceptionReportActivity;
import com.TwentyCodes.android.exception.Report;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
/**
* This fragment will be used to display a list of exception reports to the user
* @author ricky barrette
*/
public class ReportListFragment extends ListFragment {
protected static final int DOWNLOADED_REPORTS = 0;
protected static final int ERROR = 1;
private JSONArray mReports;
/**
* Creates a new ReportListFragment
* @param url of server
* @author ricky barrette
*/
public ReportListFragment(final String url) {
final Handler handler = new Handler(){
/**
* (non-Javadoc)
* @see android.os.Handler#handleMessage(android.os.Message)
*/
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case DOWNLOADED_REPORTS:
try {
parseJSON((String) msg.obj);
} catch (JSONException e) {
ReportListFragment.this.setEmptyText(e.getMessage());
e.printStackTrace();
}
break;
case ERROR:
ReportListFragment.this.setEmptyText((String) msg.obj);
break;
}
super.handleMessage(msg);
}
};
new Thread(new Runnable(){
@Override
public void run(){
/*
* Here we will try to download and parse the reports from the server
* if there is any errors, the user is notified via the list's empty text view
*/
try {
handler.sendMessage(handler.obtainMessage(DOWNLOADED_REPORTS, downloadJSON(url)));
} catch (IllegalStateException e) {
handler.sendMessage(handler.obtainMessage(ERROR, e.getMessage()));
e.printStackTrace();
} catch (ClientProtocolException e) {
handler.sendMessage(handler.obtainMessage(ERROR, e.getMessage()));
e.printStackTrace();
} catch (IOException e) {
handler.sendMessage(handler.obtainMessage(ERROR, e.getMessage()));
e.printStackTrace();
}
}
}).start();
}
/**
* parses the JSON reports and displays them in a list
* @param json
* @throws JSONException
* @author ricky barrette
*/
private void parseJSON(String json) throws JSONException {
mReports = new JSONObject(json).getJSONArray("reports");
this.setListAdapter(new ReportAdapter(this.getActivity(), mReports));
}
/**
* Downloads exception report JSON from the Internet
* @param url
* @return
* @throws IllegalStateException
* @throws ClientProtocolException
* @throws IOException
* @author ricky barrette
*/
private String downloadJSON(String url) throws IllegalStateException, ClientProtocolException, IOException {
if(url == null)
throw new NullPointerException();
StringBuffer response = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(new DefaultHttpClient().execute(new HttpGet(url)).getEntity().getContent()));
String buff = null;
while ((buff = br.readLine()) != null){
System.out.print(buff);
response.append(buff);
}
return response.toString();
}
/**
* Called when the user selects a report to display
* (non-Javadoc)
* @see android.support.v4.app.ListFragment#onListItemClick(android.widget.ListView, android.view.View, int, long)
*/
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
try {
this.startActivity(new Intent(this.getActivity(), ExceptionReportActivity.class)
.putExtra("display", true)
.putExtra("report", new Report("").generateReport(mReports.getJSONObject(position).getJSONObject("report"))));
} catch (JSONException e) {
Toast.makeText(this.getActivity().getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}

View File

@@ -0,0 +1,45 @@
/**
* FragmentAdapter.java
* @date Aug 6, 2011
* @author Twenty Codes, LLC
* @author ricky barrette
*/
package com.jakewharton.android.viewpagerindicator;
import java.util.ArrayList;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
/**
* This adaptor maintains the How and What fragments
* @author ricky
*/
class FragmentAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> mFragments;
/**
* Creates a new FragmentAdaptor
* @param fm
* @param fragments to be displayed
* @author ricky barrette
*/
public FragmentAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {
super(fm);
this.mFragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.mFragments.get(position);
}
@Override
public int getCount() {
return this.mFragments.size();
}
}

View File

@@ -0,0 +1,58 @@
/*
* Copyright (C) 2011 Patrik Akerfeldt
* Copyright (C) 2011 Jake Wharton
*
* 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.
*/
package com.jakewharton.android.viewpagerindicator;
import android.support.v4.view.ViewPager;
/**
* A PageIndicator is responsible to show an visual indicator on the total views
* number and the current visible view.
*/
public interface PageIndicator extends ViewPager.OnPageChangeListener {
/**
* Bind the indicator to a ViewPager.
*
* @param view
*/
public void setViewPager(ViewPager view);
/**
* Bind the indicator to a ViewPager.
*
* @param view
* @param initialPosition
*/
public void setViewPager(ViewPager view, int initialPosition);
/**
* <p>Set the current page of both the ViewPager and indicator.</p>
*
* <p>This <strong>must</strong> be used if you need to set the page before
* the views are drawn on screen (e.g., default start page).</p>
*
* @param item
*/
public void setCurrentItem(int item);
/**
* Set a page change listener which will receive forwarded events.
*
* @param listener
*/
public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener);
}

View File

@@ -0,0 +1,640 @@
/*
* Copyright (C) 2011 Patrik Akerfeldt
* Copyright (C) 2011 Francisco Figueiredo Jr.
* Copyright (C) 2011 Jake Wharton
*
* 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.
*/
package com.jakewharton.android.viewpagerindicator;
import java.util.ArrayList;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import com.TwentyCodes.android.exception.R;
/**
* A TitlePageIndicator is a PageIndicator which displays the title of left view
* (if exist), the title of the current select view (centered) and the title of
* the right view (if exist). When the user scrolls the ViewPager then titles are
* also scrolled.
*/
public class TitlePageIndicator extends TextView implements PageIndicator, View.OnTouchListener {
private static final float UNDERLINE_FADE_PERCENTAGE = 0.25f;
public enum IndicatorStyle {
None(0), Triangle(1), Underline(2);
public final int value;
private IndicatorStyle(int value) {
this.value = value;
}
public static IndicatorStyle fromValue(int value) {
for (IndicatorStyle style : IndicatorStyle.values()) {
if (style.value == value) {
return style;
}
}
return null;
}
}
private ViewPager mViewPager;
private ViewPager.OnPageChangeListener mListener;
private TitleProvider mTitleProvider;
private int mCurrentPage;
private int mCurrentOffset;
private final Paint mPaintText;
private final Paint mPaintSelected;
private Path mPath;
private final Paint mPaintFooterLine;
private IndicatorStyle mFooterIndicatorStyle;
private final Paint mPaintFooterIndicator;
private float mFooterIndicatorHeight;
private float mFooterIndicatorPadding;
private float mFooterIndicatorUnderlinePadding;
private float mTitlePadding;
/** Left and right side padding for not active view titles. */
private float mClipPadding;
private float mFooterLineHeight;
public TitlePageIndicator(Context context) {
this(context, null);
}
public TitlePageIndicator(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.titlePageIndicatorStyle);
}
public TitlePageIndicator(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
super.setOnTouchListener(this);
//Load defaults from resources
final Resources res = getResources();
final int defaultFooterColor = res.getColor(R.color.default_title_indicator_footer_color);
final float defaultFooterLineHeight = res.getDimension(R.dimen.default_title_indicator_footer_line_height);
final int defaultFooterIndicatorStyle = res.getInteger(R.integer.default_title_indicator_footer_indicator_style);
final float defaultFooterIndicatorHeight = res.getDimension(R.dimen.default_title_indicator_footer_indicator_height);
final float defaultFooterIndicatorPadding = res.getDimension(R.dimen.default_title_indicator_footer_indicator_padding);
final float defaultFooterIndicatorUnderlinePadding = res.getDimension(R.dimen.default_title_indicator_footer_indicator_underline_padding);
final int defaultSelectedColor = res.getColor(R.color.default_title_indicator_selected_color);
final boolean defaultSelectedBold = res.getBoolean(R.bool.default_title_indicator_selected_bold);
final int defaultTextColor = res.getColor(R.color.default_title_indicator_text_color);
final float defaultTextSize = res.getDimension(R.dimen.default_title_indicator_text_size);
final float defaultTitlePadding = res.getDimension(R.dimen.default_title_indicator_title_padding);
final float defaultClipPadding = res.getDimension(R.dimen.default_title_indicator_clip_padding);
//Retrieve styles attributes
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TitlePageIndicator, defStyle, R.style.Widget_TitlePageIndicator);
//Retrieve the colors to be used for this view and apply them.
mFooterLineHeight = a.getDimension(R.styleable.TitlePageIndicator_footerLineHeight, defaultFooterLineHeight);
mFooterIndicatorStyle = IndicatorStyle.fromValue(a.getInteger(R.styleable.TitlePageIndicator_footerIndicatorStyle, defaultFooterIndicatorStyle));
mFooterIndicatorHeight = a.getDimension(R.styleable.TitlePageIndicator_footerIndicatorHeight, defaultFooterIndicatorHeight);
mFooterIndicatorPadding = a.getDimension(R.styleable.TitlePageIndicator_footerIndicatorPadding, defaultFooterIndicatorPadding);
mFooterIndicatorUnderlinePadding = a.getDimension(R.styleable.TitlePageIndicator_footerIndicatorUnderlinePadding, defaultFooterIndicatorUnderlinePadding);
mTitlePadding = a.getDimension(R.styleable.TitlePageIndicator_titlePadding, defaultTitlePadding);
mClipPadding = a.getDimension(R.styleable.TitlePageIndicator_clipPadding, defaultClipPadding);
final float textSize = a.getDimension(R.styleable.TitlePageIndicator_textSize, defaultTextSize);
final int footerColor = a.getColor(R.styleable.TitlePageIndicator_footerColor, defaultFooterColor);
mPaintText = new Paint();
mPaintText.setColor(a.getColor(R.styleable.TitlePageIndicator_textColor, defaultTextColor));
mPaintText.setTextSize(textSize);
mPaintText.setAntiAlias(true);
mPaintSelected = new Paint();
mPaintSelected.setColor(a.getColor(R.styleable.TitlePageIndicator_selectedColor, defaultSelectedColor));
mPaintSelected.setTextSize(textSize);
mPaintSelected.setFakeBoldText(a.getBoolean(R.styleable.TitlePageIndicator_selectedBold, defaultSelectedBold));
mPaintSelected.setAntiAlias(true);
mPaintFooterLine = new Paint();
mPaintFooterLine.setStyle(Paint.Style.FILL_AND_STROKE);
mPaintFooterLine.setStrokeWidth(mFooterLineHeight);
mPaintFooterLine.setColor(footerColor);
mPaintFooterIndicator = new Paint();
mPaintFooterIndicator.setStyle(Paint.Style.FILL_AND_STROKE);
mPaintFooterIndicator.setColor(footerColor);
a.recycle();
}
public int getFooterColor() {
return mPaintFooterLine.getColor();
}
public void setFooterColor(int footerColor) {
mPaintFooterLine.setColor(footerColor);
invalidate();
}
public float getFooterLineHeight() {
return mFooterLineHeight;
}
public void setFooterLineHeight(float footerLineHeight) {
mFooterLineHeight = footerLineHeight;
invalidate();
}
public float getFooterIndicatorHeight() {
return mFooterIndicatorHeight;
}
public void setFooterIndicatorHeight(float footerTriangleHeight) {
mFooterIndicatorHeight = footerTriangleHeight;
invalidate();
}
public IndicatorStyle getFooterIndicatorStyle() {
return mFooterIndicatorStyle;
}
public void setFooterIndicatorStyle(IndicatorStyle indicatorStyle) {
mFooterIndicatorStyle = indicatorStyle;
invalidate();
}
public int getSelectedColor() {
return mPaintSelected.getColor();
}
public void setSelectedColor(int selectedColor) {
mPaintSelected.setColor(selectedColor);
invalidate();
}
public boolean isSelectedBold() {
return mPaintSelected.isFakeBoldText();
}
public void setSelectedBold(boolean selectedBold) {
mPaintSelected.setFakeBoldText(selectedBold);
invalidate();
}
public int getTextColor() {
return mPaintText.getColor();
}
public void setTextColor(int textColor) {
mPaintText.setColor(textColor);
invalidate();
}
public float getTextSize() {
return mPaintText.getTextSize();
}
public void setTextSize(float textSize) {
mPaintText.setTextSize(textSize);
invalidate();
}
public float getTitlePadding() {
return this.mTitlePadding;
}
public void setTitlePadding(float titlePadding) {
mTitlePadding = titlePadding;
invalidate();
}
public float getClipPadding() {
return this.mClipPadding;
}
public void setClipPadding(float clipPadding) {
mClipPadding = clipPadding;
invalidate();
}
/*
* (non-Javadoc)
*
* @see android.view.View#onDraw(android.graphics.Canvas)
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//Calculate views bounds
ArrayList<Rect> bounds = calculateAllBounds(mPaintText);
final int count = mViewPager.getAdapter().getCount();
final int countMinusOne = count - 1;
final int halfWidth = getWidth() / 2;
final int left = getLeft();
final int width = getWidth();
final int height = getHeight();
final int leftPlusWidth = left + width;
//Verify if the current view must be clipped to the screen
Rect curViewBound = bounds.get(mCurrentPage);
int curViewWidth = curViewBound.right - curViewBound.left;
if (curViewBound.left < 0) {
//Try to clip to the screen (left side)
clipViewOnTheLeft(curViewBound, curViewWidth);
}
if (curViewBound.right > leftPlusWidth) {
//Try to clip to the screen (right side)
clipViewOnTheRight(curViewBound, curViewWidth, leftPlusWidth);
}
//Left views starting from the current position
if (mCurrentPage > 0) {
for (int i = mCurrentPage - 1; i >= 0; i--) {
Rect bound = bounds.get(i);
int w = bound.right - bound.left;
//Is left side is outside the screen
if (bound.left < 0) {
//Try to clip to the screen (left side)
clipViewOnTheLeft(bound, w);
//Except if there's an intersection with the right view
if (i < countMinusOne && mCurrentPage != i) {
Rect rightBound = bounds.get(i + 1);
//Intersection
if (bound.right + (int)mTitlePadding > rightBound.left) {
bound.left = rightBound.left - (w + (int)mTitlePadding);
}
}
}
}
}
//Right views starting from the current position
if (mCurrentPage < countMinusOne) {
for (int i = mCurrentPage + 1 ; i < count; i++) {
Rect bound = bounds.get(i);
int w = bound.right - bound.left;
//If right side is outside the screen
if (bound.right > leftPlusWidth) {
//Try to clip to the screen (right side)
clipViewOnTheRight(bound, w, leftPlusWidth);
//Except if there's an intersection with the left view
if (i > 0 && mCurrentPage != i) {
Rect leftBound = bounds.get(i - 1);
//Intersection
if (bound.left - (int)mTitlePadding < leftBound.right) {
bound.left = leftBound.right + (int)mTitlePadding;
}
}
}
}
}
Bitmap icon = null;
//Now draw views
for (int i = 0; i < count; i++) {
//Get the title
Rect bound = bounds.get(i);
//Only if one side is visible
if ((bound.left > left && bound.left < leftPlusWidth) || (bound.right > left && bound.right < leftPlusWidth)) {
Paint paint = mPaintText;
//Change the color is the title is closed to the center
int middle = (bound.left + bound.right) / 2;
if (Math.abs(middle - halfWidth) < 20) {
paint = mPaintSelected;
}
/*
* Draw the icons
* @author ricky barrette
*/
icon = BitmapFactory.decodeResource( getResources(), mTitleProvider.getIcon(i));;
canvas.drawBitmap(icon, bound.left - (icon.getWidth() + 4), (bound.bottom - (icon.getHeight() / 2) )-mFooterIndicatorHeight , paint);
canvas.drawText(mTitleProvider.getTitle(i), bound.left, bound.bottom, paint);
}
}
//Draw the footer line
mPath = new Path();
mPath.moveTo(0, height - mFooterLineHeight);
mPath.lineTo(width, height - mFooterLineHeight);
mPath.close();
canvas.drawPath(mPath, mPaintFooterLine);
switch (mFooterIndicatorStyle) {
case Triangle:
mPath = new Path();
mPath.moveTo(halfWidth, height - mFooterLineHeight - mFooterIndicatorHeight);
mPath.lineTo(halfWidth + mFooterIndicatorHeight, height - mFooterLineHeight);
mPath.lineTo(halfWidth - mFooterIndicatorHeight, height - mFooterLineHeight);
mPath.close();
canvas.drawPath(mPath, mPaintFooterIndicator);
break;
case Underline:
float deltaPercentage = mCurrentOffset * 1.0f / width;
int alpha = 0xFF;
int page = mCurrentPage;
if (deltaPercentage <= UNDERLINE_FADE_PERCENTAGE) {
alpha = (int)(0xFF * ((UNDERLINE_FADE_PERCENTAGE - deltaPercentage) / UNDERLINE_FADE_PERCENTAGE));
} else if (deltaPercentage >= (1 - UNDERLINE_FADE_PERCENTAGE)) {
alpha = (int)(0xFF * ((deltaPercentage - (1 - UNDERLINE_FADE_PERCENTAGE)) / UNDERLINE_FADE_PERCENTAGE));
page += 1; //We are coming into the next page
} else if (mCurrentOffset != 0) {
break; //Not in underline scope
}
Rect underlineBounds = bounds.get(page);
mPath = new Path();
mPath.moveTo(underlineBounds.left - mFooterIndicatorUnderlinePadding, height - mFooterLineHeight);
mPath.lineTo(underlineBounds.right + mFooterIndicatorUnderlinePadding, height - mFooterLineHeight);
mPath.lineTo(underlineBounds.right + mFooterIndicatorUnderlinePadding, height - mFooterLineHeight - mFooterIndicatorHeight);
mPath.lineTo(underlineBounds.left - mFooterIndicatorUnderlinePadding, height - mFooterLineHeight - mFooterIndicatorHeight);
mPath.close();
mPaintFooterIndicator.setAlpha(alpha);
canvas.drawPath(mPath, mPaintFooterIndicator);
mPaintFooterIndicator.setAlpha(0xFF);
break;
}
}
@Override
public final boolean onTouch(View view, MotionEvent event) {
if ((view != this) || (event.getAction() != MotionEvent.ACTION_DOWN)) {
return false;
}
final int count = mViewPager.getAdapter().getCount();
final float halfWidth = getWidth() / 2;
final float sixthWidth = getWidth() / 6;
if ((mCurrentPage > 0) && (event.getX() < halfWidth - sixthWidth)) {
mViewPager.setCurrentItem(mCurrentPage - 1);
return true;
} else if ((mCurrentPage < count - 1) && (event.getX() > halfWidth + sixthWidth)) {
mViewPager.setCurrentItem(mCurrentPage + 1);
return true;
}
return false;
}
@Override
public final void setOnTouchListener(OnTouchListener listener) {
throw new UnsupportedOperationException("This view does not support listening to its touch events.");
}
/**
* Set bounds for the right textView including clip padding.
*
* @param curViewBound
* current bounds.
* @param curViewWidth
* width of the view.
*/
private void clipViewOnTheRight(Rect curViewBound, int curViewWidth, int leftPlusWidth) {
curViewBound.right = leftPlusWidth - (int)mClipPadding;
curViewBound.left = curViewBound.right - curViewWidth;
}
/**
* Set bounds for the left textView including clip padding.
*
* @param curViewBound
* current bounds.
* @param curViewWidth
* width of the view.
*/
private void clipViewOnTheLeft(Rect curViewBound, int curViewWidth) {
curViewBound.left = 0 + (int)mClipPadding;
curViewBound.right = curViewWidth;
}
/**
* Calculate views bounds and scroll them according to the current index
*
* @param paint
* @param currentIndex
* @return
*/
private ArrayList<Rect> calculateAllBounds(Paint paint) {
ArrayList<Rect> list = new ArrayList<Rect>();
//For each views (If no values then add a fake one)
final int count = mViewPager.getAdapter().getCount();
final int width = getWidth();
final int halfWidth = width / 2;
for (int i = 0; i < count; i++) {
Rect bounds = calcBounds(i, paint);
int w = (bounds.right - bounds.left);
int h = (bounds.bottom - bounds.top);
bounds.left = (halfWidth) - (w / 2) - mCurrentOffset + ((i - mCurrentPage) * width);
bounds.right = bounds.left + w;
bounds.top = 0;
bounds.bottom = h;
list.add(bounds);
}
return list;
}
/**
* Calculate the bounds for a view's title
*
* @param index
* @param paint
* @return
*/
private Rect calcBounds(int index, Paint paint) {
//Calculate the text bounds
Rect bounds = new Rect();
bounds.right = (int)paint.measureText(mTitleProvider.getTitle(index));
bounds.bottom = (int)(paint.descent() - paint.ascent());
return bounds;
}
@Override
public void setViewPager(ViewPager view) {
if (view.getAdapter() == null) {
throw new IllegalStateException("ViewPager does not have adapter instance.");
}
if (!(view.getAdapter() instanceof TitleProvider)) {
throw new IllegalStateException("ViewPager adapter must implement TitleProvider to be used with TitlePageIndicator.");
}
mViewPager = view;
mViewPager.setOnPageChangeListener(this);
mTitleProvider = (TitleProvider)mViewPager.getAdapter();
invalidate();
}
@Override
public void setViewPager(ViewPager view, int initialPosition) {
setViewPager(view);
setCurrentItem(initialPosition);
}
@Override
public void setCurrentItem(int item) {
if (mViewPager == null) {
throw new IllegalStateException("ViewPager has not been bound.");
}
mViewPager.setCurrentItem(item);
mCurrentPage = item;
invalidate();
}
@Override
public void onPageScrollStateChanged(int state) {
if (mListener != null) {
mListener.onPageScrollStateChanged(state);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
mCurrentPage = position;
mCurrentOffset = positionOffsetPixels;
invalidate();
if (mListener != null) {
mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
}
@Override
public void onPageSelected(int position) {
if (mListener != null) {
mListener.onPageSelected(position);
}
}
@Override
public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {
mListener = listener;
}
/*
* (non-Javadoc)
*
* @see android.view.View#onMeasure(int, int)
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(measureWidth(widthMeasureSpec), measureHeight(heightMeasureSpec));
}
/**
* Determines the width of this view
*
* @param measureSpec
* A measureSpec packed into an int
* @return The width of the view, honoring constraints from measureSpec
*/
private int measureWidth(int measureSpec) {
int result = 0;
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
if (specMode != MeasureSpec.EXACTLY) {
throw new IllegalStateException(getClass().getSimpleName() + " can only be used in EXACTLY mode.");
}
result = specSize;
return result;
}
/**
* Determines the height of this view
*
* @param measureSpec
* A measureSpec packed into an int
* @return The height of the view, honoring constraints from measureSpec
*/
private int measureHeight(int measureSpec) {
float result = 0;
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
if (specMode == MeasureSpec.EXACTLY) {
//We were told how big to be
result = specSize;
} else {
//Calculate the text bounds
Rect bounds = new Rect();
bounds.bottom = (int) (mPaintText.descent()-mPaintText.ascent());
result = bounds.bottom - bounds.top + mFooterLineHeight;
if (mFooterIndicatorStyle != IndicatorStyle.None) {
result += mFooterIndicatorHeight + mFooterIndicatorPadding;
}
}
return (int)result;
}
@Override
public void onRestoreInstanceState(Parcelable state) {
SavedState savedState = (SavedState)state;
super.onRestoreInstanceState(savedState.getSuperState());
mCurrentPage = savedState.currentPage;
requestLayout();
}
@Override
public Parcelable onSaveInstanceState() {
setFreezesText(true);
Parcelable superState = super.onSaveInstanceState();
SavedState savedState = new SavedState(superState);
savedState.currentPage = mCurrentPage;
return savedState;
}
static class SavedState extends BaseSavedState {
int currentPage;
public SavedState(Parcelable superState) {
super(superState);
}
private SavedState(Parcel in) {
super(in);
currentPage = in.readInt();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(currentPage);
}
public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() {
@Override
public SavedState createFromParcel(Parcel in) {
return new SavedState(in);
}
@Override
public SavedState[] newArray(int size) {
return new SavedState[size];
}
};
}
}

View File

@@ -0,0 +1,36 @@
/*
* Copyright (C) 2011 Patrik Akerfeldt
*
* 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.
*/
package com.jakewharton.android.viewpagerindicator;
/**
* A TitleProvider provides the title to display according to a view.
*/
public interface TitleProvider {
/**
* Returns the title of the view at position
* @param position
* @return
*/
public String getTitle(int position);
/**
* returns the icon res id of the view at position
* @param postion
* @return
* @author ricky barrette
*/
public int getIcon(int postion);
}

View File

@@ -0,0 +1,46 @@
/**
* TitleFragmentAdapter.java
* @date Aug 6, 2011
* @author Twenty Codes, LLC
* @author ricky barrette
*/
package com.jakewharton.android.viewpagerindicator;
import java.util.ArrayList;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
/**
* This adaptor maintains a ViewPager title indicator.
* @author ricky
*/
public class TitledFragmentAdapter extends FragmentAdapter implements TitleProvider {
private String[] mTitles;
private int[] mIcons;
/**
* Creates a new TitleFragmentAdapter
* @param fm
* @param fragments to be displayed
* @param titles for the fragments
* @author ricky barrette
*/
public TitledFragmentAdapter(FragmentManager fm, ArrayList<Fragment> fragments, String[] titles, int[] icons) {
super(fm, fragments);
this.mTitles = titles;
this.mIcons = icons;
}
@Override
public String getTitle(int position) {
return this.mTitles[position];
}
@Override
public int getIcon(int position) {
return this.mIcons[position];
}
}