master
xjy 2 years ago
parent 6bc0eb1602
commit c41a86bfdf

@ -0,0 +1,9 @@
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" />
</component>
</project>

@ -0,0 +1,522 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DBNavigator.Project.DataEditorManager">
<record-view-column-sorting-type value="BY_INDEX" />
<value-preview-text-wrapping value="true" />
<value-preview-pinned value="false" />
</component>
<component name="DBNavigator.Project.DatabaseBrowserManager">
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
<show-object-properties value="true" />
<loaded-nodes />
</component>
<component name="DBNavigator.Project.DatabaseConsoleManager">
<connection id="ab5ab0cf-7cd7-4502-a265-bc37f2295199">
<console name="Connection" type="STANDARD" schema="" session="Main" />
</connection>
</component>
<component name="DBNavigator.Project.DatabaseEditorStateManager">
<last-used-providers />
</component>
<component name="DBNavigator.Project.DatabaseFileManager">
<open-files />
</component>
<component name="DBNavigator.Project.DatasetFilterManager">
<filter-actions connection-id="ab5ab0cf-7cd7-4502-a265-bc37f2295199" dataset="main.tb_tid" active-filter-id="" />
</component>
<component name="DBNavigator.Project.ObjectQuickFilterManager">
<last-used-operator value="EQUAL" />
<filters />
</component>
<component name="DBNavigator.Project.Settings">
<connections>
<connection id="ab5ab0cf-7cd7-4502-a265-bc37f2295199" active="true" signed="true">
<database>
<name value="Connection" />
<description value="" />
<database-type value="SQLITE" />
<config-type value="BASIC" />
<database-version value="3.41" />
<driver-source value="BUNDLED" />
<driver-library value="" />
<driver value="" />
<url-type value="FILE" />
<host value="" />
<port value="" />
<database value="" />
<tns-folder value="" />
<tns-profile value="" />
<files>
<file path="E:\android\msp.db" schema="main" />
</files>
<type value="NONE" />
<user value="" />
<deprecated-pwd value="" />
</database>
<properties>
<auto-commit value="false" />
</properties>
<ssh-settings>
<active value="false" />
<proxy-host value="" />
<proxy-port value="22" />
<proxy-user value="" />
<deprecated-proxy-pwd value="" />
<auth-type value="PASSWORD" />
<key-file value="" />
<key-passphrase value="" />
</ssh-settings>
<ssl-settings>
<active value="false" />
<certificate-authority-file value="" />
<client-certificate-file value="" />
<client-key-file value="" />
</ssl-settings>
<details>
<charset value="UTF-8" />
<session-management value="true" />
<ddl-file-binding value="true" />
<database-logging value="true" />
<connect-automatically value="true" />
<restore-workspace value="true" />
<restore-workspace-deep value="false" />
<environment-type value="default" />
<connectivity-timeout value="30" />
<idle-time-to-disconnect value="30" />
<idle-time-to-disconnect-pool value="5" />
<credential-expiry-time value="10" />
<max-connection-pool-size value="7" />
<alternative-statement-delimiter value="" />
</details>
<object-filters hide-empty-schemas="false" hide-pseudo-columns="false">
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
<object-name-filters />
</object-filters>
</connection>
</connections>
<browser-settings>
<general>
<display-mode value="TABBED" />
<navigation-history-size value="100" />
<show-object-details value="false" />
</general>
<filters>
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
</filters>
<sorting>
<object-type name="COLUMN" sorting-type="NAME" />
<object-type name="FUNCTION" sorting-type="NAME" />
<object-type name="PROCEDURE" sorting-type="NAME" />
<object-type name="ARGUMENT" sorting-type="POSITION" />
<object-type name="TYPE ATTRIBUTE" sorting-type="POSITION" />
</sorting>
<default-editors>
<object-type name="VIEW" editor-type="SELECTION" />
<object-type name="PACKAGE" editor-type="SELECTION" />
<object-type name="TYPE" editor-type="SELECTION" />
</default-editors>
</browser-settings>
<navigation-settings>
<lookup-filters>
<lookup-objects>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="false" />
<object-type name="ROLE" enabled="false" />
<object-type name="PRIVILEGE" enabled="false" />
<object-type name="CHARSET" enabled="false" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED VIEW" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET TRIGGER" enabled="true" />
<object-type name="DATABASE TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="false" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="DIMENSION" enabled="false" />
<object-type name="CLUSTER" enabled="false" />
<object-type name="DBLINK" enabled="true" />
</lookup-objects>
<force-database-load value="false" />
<prompt-connection-selection value="true" />
<prompt-schema-selection value="true" />
</lookup-filters>
</navigation-settings>
<dataset-grid-settings>
<general>
<enable-zooming value="true" />
<enable-column-tooltip value="true" />
</general>
<sorting>
<nulls-first value="true" />
<max-sorting-columns value="4" />
</sorting>
<audit-columns>
<column-names value="" />
<visible value="true" />
<editable value="false" />
</audit-columns>
</dataset-grid-settings>
<dataset-editor-settings>
<text-editor-popup>
<active value="false" />
<active-if-empty value="false" />
<data-length-threshold value="100" />
<popup-delay value="1000" />
</text-editor-popup>
<values-actions-popup>
<show-popup-button value="true" />
<element-count-threshold value="1000" />
<data-length-threshold value="250" />
</values-actions-popup>
<general>
<fetch-block-size value="100" />
<fetch-timeout value="30" />
<trim-whitespaces value="true" />
<convert-empty-strings-to-null value="true" />
<select-content-on-cell-edit value="true" />
<large-value-preview-active value="true" />
</general>
<filters>
<prompt-filter-dialog value="true" />
<default-filter-type value="BASIC" />
</filters>
<qualified-text-editor text-length-threshold="300">
<content-types>
<content-type name="Text" enabled="true" />
<content-type name="Properties" enabled="true" />
<content-type name="XML" enabled="true" />
<content-type name="DTD" enabled="true" />
<content-type name="HTML" enabled="true" />
<content-type name="XHTML" enabled="true" />
<content-type name="Java" enabled="true" />
<content-type name="SQL" enabled="true" />
<content-type name="PL/SQL" enabled="true" />
<content-type name="JSON" enabled="true" />
<content-type name="JSON5" enabled="true" />
<content-type name="Groovy" enabled="true" />
<content-type name="AIDL" enabled="true" />
<content-type name="YAML" enabled="true" />
<content-type name="Manifest" enabled="true" />
</content-types>
</qualified-text-editor>
<record-navigation>
<navigation-target value="VIEWER" />
</record-navigation>
</dataset-editor-settings>
<code-editor-settings>
<general>
<show-object-navigation-gutter value="false" />
<show-spec-declaration-navigation-gutter value="true" />
<enable-spellchecking value="true" />
<enable-reference-spellchecking value="false" />
</general>
<confirmations>
<save-changes value="false" />
<revert-changes value="true" />
</confirmations>
</code-editor-settings>
<code-completion-settings>
<filters>
<basic-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="false" />
<filter-element type="OBJECT" id="view" selected="false" />
<filter-element type="OBJECT" id="materialized view" selected="false" />
<filter-element type="OBJECT" id="index" selected="false" />
<filter-element type="OBJECT" id="constraint" selected="false" />
<filter-element type="OBJECT" id="trigger" selected="false" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="false" />
<filter-element type="OBJECT" id="procedure" selected="false" />
<filter-element type="OBJECT" id="function" selected="false" />
<filter-element type="OBJECT" id="package" selected="false" />
<filter-element type="OBJECT" id="type" selected="false" />
<filter-element type="OBJECT" id="dimension" selected="false" />
<filter-element type="OBJECT" id="cluster" selected="false" />
<filter-element type="OBJECT" id="dblink" selected="false" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</basic-filter>
<extended-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</extended-filter>
</filters>
<sorting enabled="true">
<sorting-element type="RESERVED_WORD" id="keyword" />
<sorting-element type="RESERVED_WORD" id="datatype" />
<sorting-element type="OBJECT" id="column" />
<sorting-element type="OBJECT" id="table" />
<sorting-element type="OBJECT" id="view" />
<sorting-element type="OBJECT" id="materialized view" />
<sorting-element type="OBJECT" id="index" />
<sorting-element type="OBJECT" id="constraint" />
<sorting-element type="OBJECT" id="trigger" />
<sorting-element type="OBJECT" id="synonym" />
<sorting-element type="OBJECT" id="sequence" />
<sorting-element type="OBJECT" id="procedure" />
<sorting-element type="OBJECT" id="function" />
<sorting-element type="OBJECT" id="package" />
<sorting-element type="OBJECT" id="type" />
<sorting-element type="OBJECT" id="dimension" />
<sorting-element type="OBJECT" id="cluster" />
<sorting-element type="OBJECT" id="dblink" />
<sorting-element type="OBJECT" id="schema" />
<sorting-element type="OBJECT" id="role" />
<sorting-element type="OBJECT" id="user" />
<sorting-element type="RESERVED_WORD" id="function" />
<sorting-element type="RESERVED_WORD" id="parameter" />
</sorting>
<format>
<enforce-code-style-case value="true" />
</format>
</code-completion-settings>
<execution-engine-settings>
<statement-execution>
<fetch-block-size value="100" />
<execution-timeout value="20" />
<debug-execution-timeout value="600" />
<focus-result value="false" />
<prompt-execution value="false" />
</statement-execution>
<script-execution>
<command-line-interfaces />
<execution-timeout value="300" />
</script-execution>
<method-execution>
<execution-timeout value="30" />
<debug-execution-timeout value="600" />
<parameter-history-size value="10" />
</method-execution>
</execution-engine-settings>
<operation-settings>
<transactions>
<uncommitted-changes>
<on-project-close value="ASK" />
<on-disconnect value="ASK" />
<on-autocommit-toggle value="ASK" />
</uncommitted-changes>
<multiple-uncommitted-changes>
<on-commit value="ASK" />
<on-rollback value="ASK" />
</multiple-uncommitted-changes>
</transactions>
<session-browser>
<disconnect-session value="ASK" />
<kill-session value="ASK" />
<reload-on-filter-change value="false" />
</session-browser>
<compiler>
<compile-type value="KEEP" />
<compile-dependencies value="ASK" />
<always-show-controls value="false" />
</compiler>
<debugger>
<debugger-type value="ASK" />
<use-generic-runners value="true" />
</debugger>
</operation-settings>
<ddl-file-settings>
<extensions>
<mapping file-type-id="VIEW" extensions="vw" />
<mapping file-type-id="TRIGGER" extensions="trg" />
<mapping file-type-id="PROCEDURE" extensions="prc" />
<mapping file-type-id="FUNCTION" extensions="fnc" />
<mapping file-type-id="PACKAGE" extensions="pkg" />
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
<mapping file-type-id="TYPE" extensions="tpe" />
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
</extensions>
<general>
<lookup-ddl-files value="true" />
<create-ddl-files value="false" />
<synchronize-ddl-files value="true" />
<use-qualified-names value="false" />
<make-scripts-rerunnable value="true" />
</general>
</ddl-file-settings>
<general-settings>
<regional-settings>
<date-format value="MEDIUM" />
<number-format value="UNGROUPED" />
<locale value="SYSTEM_DEFAULT" />
<use-custom-formats value="false" />
</regional-settings>
<environment>
<environment-types>
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
</environment-types>
<visibility-settings>
<connection-tabs value="true" />
<dialog-headers value="true" />
<object-editor-tabs value="true" />
<script-editor-tabs value="false" />
<execution-result-tabs value="true" />
</visibility-settings>
</environment>
</general-settings>
</component>
</project>

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/FlycoTabLayout_Lib" />
<option value="$PROJECT_DIR$/ViewPagerIndicator_library" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/banner" />
<option value="$PROJECT_DIR$/okhttputils" />
<option value="$PROJECT_DIR$/opendanmaku" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

@ -0,0 +1,115 @@
apply plugin: 'com.android.library'
//apply plugin: 'com.github.dcendents.android-maven'
//apply plugin: 'com.jfrog.bintray'
// versionlibrarylibraryversion
version = "2.0.8"
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 208
versionName version
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:23.3.0'
}
//def siteUrl = 'https://github.com/H07000223' //
//def gitUrl = 'https://github.com/H07000223' // Giturl
//group = "com.flyco.tablayout" // Maven Group ID for the artifact
//install {
// repositories.mavenInstaller {
// // This generates POM.xml with proper parameters
// pom {
// project {
// packaging 'aar'
// // Add your description here
// name 'Android TabLayout Library' //
// url siteUrl
// // Set your license
// licenses {
// license {
// name 'MIT'
// url 'http://opensource.org/licenses/MIT'
// }
// }
// developers {
// developer {
// id 'H07000223' //
// name 'H07000223'
// email '867318349@qq.com'
// }
// }
// scm {
// connection gitUrl
// developerConnection gitUrl
// url siteUrl
// }
// }
// }
// }
//}
//
//task sourcesJar(type: Jar) {
// from android.sourceSets.main.java.srcDirs
// classifier = 'sources'
//}
//
//artifacts {
// archives sourcesJar
//}
//
//android.libraryVariants.all { variant ->
// println variant.javaCompile.classpath.files
// if (variant.name == 'release') { // release javadoc
// task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
// // title = ''
// // description = ''
// source = variant.javaCompile.source
// classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath())
// options {
// encoding "utf-8"
// links "http://docs.oracle.com/javase/7/docs/api/"
// linksOffline "http://d.android.com/reference", "${android.sdkDirectory}/docs/reference"
// }
// exclude '**/BuildConfig.java'
// exclude '**/R.java'
// }
// task("javadoc${variant.name.capitalize()}Jar", type: Jar, dependsOn: "generate${variant.name.capitalize()}Javadoc") {
// classifier = 'javadoc'
// from tasks.getByName("generate${variant.name.capitalize()}Javadoc").destinationDir
// }
// artifacts {
// archives tasks.getByName("javadoc${variant.name.capitalize()}Jar")
// }
// }
//}
//
//Properties properties = new Properties()
//properties.load(project.rootProject.file('local.properties').newDataInputStream())
//bintray {
// user = properties.getProperty("bintray.user")
// key = properties.getProperty("bintray.apikey")
// configurations = ['archives']
// pkg {
// repo = "maven"
// name = "FlycoTabLayout_Lib" //JCenter
// websiteUrl = siteUrl
// vcsUrl = gitUrl
// licenses = ["MIT"]
// publish = true
// }
//}

@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/lihui/work/AndroidStudio/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

@ -0,0 +1,11 @@
<manifest
package="com.flyco.tablayout"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:supportsRtl="true">
</application>
</manifest>

@ -0,0 +1,957 @@
package com.flyco.tablayout;
import android.animation.TypeEvaluator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.OvershootInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.flyco.tablayout.listener.CustomTabEntity;
import com.flyco.tablayout.listener.OnTabSelectListener;
import com.flyco.tablayout.utils.FragmentChangeManager;
import com.flyco.tablayout.utils.UnreadMsgUtils;
import com.flyco.tablayout.widget.MsgView;
import java.util.ArrayList;
/** 没有继承HorizontalScrollView不能滑动,对于ViewPager无依赖 */
public class CommonTabLayout extends FrameLayout implements ValueAnimator.AnimatorUpdateListener {
private Context mContext;
private ArrayList<CustomTabEntity> mTabEntitys = new ArrayList<>();
private LinearLayout mTabsContainer;
private int mCurrentTab;
private int mLastTab;
private int mTabCount;
/** 用于绘制显示器 */
private Rect mIndicatorRect = new Rect();
private GradientDrawable mIndicatorDrawable = new GradientDrawable();
private Paint mRectPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Paint mDividerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Paint mTrianglePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Path mTrianglePath = new Path();
private static final int STYLE_NORMAL = 0;
private static final int STYLE_TRIANGLE = 1;
private static final int STYLE_BLOCK = 2;
private int mIndicatorStyle = STYLE_NORMAL;
private float mTabPadding;
private boolean mTabSpaceEqual;
private float mTabWidth;
/** indicator */
private int mIndicatorColor;
private float mIndicatorHeight;
private float mIndicatorWidth;
private float mIndicatorCornerRadius;
private float mIndicatorMarginLeft;
private float mIndicatorMarginTop;
private float mIndicatorMarginRight;
private float mIndicatorMarginBottom;
private long mIndicatorAnimDuration;
private boolean mIndicatorAnimEnable;
private boolean mIndicatorBounceEnable;
private int mIndicatorGravity;
/** underline */
private int mUnderlineColor;
private float mUnderlineHeight;
private int mUnderlineGravity;
/** divider */
private int mDividerColor;
private float mDividerWidth;
private float mDividerPadding;
/** title */
private static final int TEXT_BOLD_NONE = 0;
private static final int TEXT_BOLD_WHEN_SELECT = 1;
private static final int TEXT_BOLD_BOTH = 2;
private float mTextsize;
private int mTextSelectColor;
private int mTextUnselectColor;
private int mTextBold;
private boolean mTextAllCaps;
/** icon */
private boolean mIconVisible;
private int mIconGravity;
private float mIconWidth;
private float mIconHeight;
private float mIconMargin;
private int mHeight;
/** anim */
private ValueAnimator mValueAnimator;
private OvershootInterpolator mInterpolator = new OvershootInterpolator(1.5f);
private FragmentChangeManager mFragmentChangeManager;
public CommonTabLayout(Context context) {
this(context, null, 0);
}
public CommonTabLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CommonTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setWillNotDraw(false);//重写onDraw方法,需要调用这个方法来清除flag
setClipChildren(false);
setClipToPadding(false);
this.mContext = context;
mTabsContainer = new LinearLayout(context);
addView(mTabsContainer);
obtainAttributes(context, attrs);
//get layout_height
String height = attrs.getAttributeValue("http://schemas.android.com/apk/res/android", "layout_height");
//create ViewPager
if (height.equals(ViewGroup.LayoutParams.MATCH_PARENT + "")) {
} else if (height.equals(ViewGroup.LayoutParams.WRAP_CONTENT + "")) {
} else {
int[] systemAttrs = {android.R.attr.layout_height};
TypedArray a = context.obtainStyledAttributes(attrs, systemAttrs);
mHeight = a.getDimensionPixelSize(0, ViewGroup.LayoutParams.WRAP_CONTENT);
a.recycle();
}
mValueAnimator = ValueAnimator.ofObject(new PointEvaluator(), mLastP, mCurrentP);
mValueAnimator.addUpdateListener(this);
}
private void obtainAttributes(Context context, AttributeSet attrs) {
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CommonTabLayout);
mIndicatorStyle = ta.getInt(R.styleable.CommonTabLayout_tl_indicator_style, 0);
mIndicatorColor = ta.getColor(R.styleable.CommonTabLayout_tl_indicator_color, Color.parseColor(mIndicatorStyle == STYLE_BLOCK ? "#4B6A87" : "#ffffff"));
mIndicatorHeight = ta.getDimension(R.styleable.CommonTabLayout_tl_indicator_height,
dp2px(mIndicatorStyle == STYLE_TRIANGLE ? 4 : (mIndicatorStyle == STYLE_BLOCK ? -1 : 2)));
mIndicatorWidth = ta.getDimension(R.styleable.CommonTabLayout_tl_indicator_width, dp2px(mIndicatorStyle == STYLE_TRIANGLE ? 10 : -1));
mIndicatorCornerRadius = ta.getDimension(R.styleable.CommonTabLayout_tl_indicator_corner_radius, dp2px(mIndicatorStyle == STYLE_BLOCK ? -1 : 0));
mIndicatorMarginLeft = ta.getDimension(R.styleable.CommonTabLayout_tl_indicator_margin_left, dp2px(0));
mIndicatorMarginTop = ta.getDimension(R.styleable.CommonTabLayout_tl_indicator_margin_top, dp2px(mIndicatorStyle == STYLE_BLOCK ? 7 : 0));
mIndicatorMarginRight = ta.getDimension(R.styleable.CommonTabLayout_tl_indicator_margin_right, dp2px(0));
mIndicatorMarginBottom = ta.getDimension(R.styleable.CommonTabLayout_tl_indicator_margin_bottom, dp2px(mIndicatorStyle == STYLE_BLOCK ? 7 : 0));
mIndicatorAnimEnable = ta.getBoolean(R.styleable.CommonTabLayout_tl_indicator_anim_enable, true);
mIndicatorBounceEnable = ta.getBoolean(R.styleable.CommonTabLayout_tl_indicator_bounce_enable, true);
mIndicatorAnimDuration = ta.getInt(R.styleable.CommonTabLayout_tl_indicator_anim_duration, -1);
mIndicatorGravity = ta.getInt(R.styleable.CommonTabLayout_tl_indicator_gravity, Gravity.BOTTOM);
mUnderlineColor = ta.getColor(R.styleable.CommonTabLayout_tl_underline_color, Color.parseColor("#ffffff"));
mUnderlineHeight = ta.getDimension(R.styleable.CommonTabLayout_tl_underline_height, dp2px(0));
mUnderlineGravity = ta.getInt(R.styleable.CommonTabLayout_tl_underline_gravity, Gravity.BOTTOM);
mDividerColor = ta.getColor(R.styleable.CommonTabLayout_tl_divider_color, Color.parseColor("#ffffff"));
mDividerWidth = ta.getDimension(R.styleable.CommonTabLayout_tl_divider_width, dp2px(0));
mDividerPadding = ta.getDimension(R.styleable.CommonTabLayout_tl_divider_padding, dp2px(12));
mTextsize = ta.getDimension(R.styleable.CommonTabLayout_tl_textsize, sp2px(13f));
mTextSelectColor = ta.getColor(R.styleable.CommonTabLayout_tl_textSelectColor, Color.parseColor("#ffffff"));
mTextUnselectColor = ta.getColor(R.styleable.CommonTabLayout_tl_textUnselectColor, Color.parseColor("#AAffffff"));
mTextBold = ta.getInt(R.styleable.CommonTabLayout_tl_textBold, TEXT_BOLD_NONE);
mTextAllCaps = ta.getBoolean(R.styleable.CommonTabLayout_tl_textAllCaps, false);
mIconVisible = ta.getBoolean(R.styleable.CommonTabLayout_tl_iconVisible, true);
mIconGravity = ta.getInt(R.styleable.CommonTabLayout_tl_iconGravity, Gravity.TOP);
mIconWidth = ta.getDimension(R.styleable.CommonTabLayout_tl_iconWidth, dp2px(0));
mIconHeight = ta.getDimension(R.styleable.CommonTabLayout_tl_iconHeight, dp2px(0));
mIconMargin = ta.getDimension(R.styleable.CommonTabLayout_tl_iconMargin, dp2px(2.5f));
mTabSpaceEqual = ta.getBoolean(R.styleable.CommonTabLayout_tl_tab_space_equal, true);
mTabWidth = ta.getDimension(R.styleable.CommonTabLayout_tl_tab_width, dp2px(-1));
mTabPadding = ta.getDimension(R.styleable.CommonTabLayout_tl_tab_padding, mTabSpaceEqual || mTabWidth > 0 ? dp2px(0) : dp2px(10));
ta.recycle();
}
public void setTabData(ArrayList<CustomTabEntity> tabEntitys) {
if (tabEntitys == null || tabEntitys.size() == 0) {
throw new IllegalStateException("TabEntitys can not be NULL or EMPTY !");
}
this.mTabEntitys.clear();
this.mTabEntitys.addAll(tabEntitys);
notifyDataSetChanged();
}
/** 关联数据支持同时切换fragments */
public void setTabData(ArrayList<CustomTabEntity> tabEntitys, FragmentActivity fa, int containerViewId, ArrayList<Fragment> fragments) {
mFragmentChangeManager = new FragmentChangeManager(fa.getSupportFragmentManager(), containerViewId, fragments);
setTabData(tabEntitys);
}
/** 更新数据 */
public void notifyDataSetChanged() {
mTabsContainer.removeAllViews();
this.mTabCount = mTabEntitys.size();
View tabView;
for (int i = 0; i < mTabCount; i++) {
if (mIconGravity == Gravity.LEFT) {
tabView = View.inflate(mContext, R.layout.layout_tab_left, null);
} else if (mIconGravity == Gravity.RIGHT) {
tabView = View.inflate(mContext, R.layout.layout_tab_right, null);
} else if (mIconGravity == Gravity.BOTTOM) {
tabView = View.inflate(mContext, R.layout.layout_tab_bottom, null);
} else {
tabView = View.inflate(mContext, R.layout.layout_tab_top, null);
}
tabView.setTag(i);
addTab(i, tabView);
}
updateTabStyles();
}
/** 创建并添加tab */
private void addTab(final int position, View tabView) {
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
tv_tab_title.setText(mTabEntitys.get(position).getTabTitle());
ImageView iv_tab_icon = (ImageView) tabView.findViewById(R.id.iv_tab_icon);
iv_tab_icon.setImageResource(mTabEntitys.get(position).getTabUnselectedIcon());
tabView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
if (mCurrentTab != position) {
setCurrentTab(position);
if (mListener != null) {
mListener.onTabSelect(position);
}
} else {
if (mListener != null) {
mListener.onTabReselect(position);
}
}
}
});
/** 每一个Tab的布局参数 */
LinearLayout.LayoutParams lp_tab = mTabSpaceEqual ?
new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f) :
new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
if (mTabWidth > 0) {
lp_tab = new LinearLayout.LayoutParams((int) mTabWidth, LayoutParams.MATCH_PARENT);
}
mTabsContainer.addView(tabView, position, lp_tab);
}
private void updateTabStyles() {
for (int i = 0; i < mTabCount; i++) {
View tabView = mTabsContainer.getChildAt(i);
tabView.setPadding((int) mTabPadding, 0, (int) mTabPadding, 0);
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
tv_tab_title.setTextColor(i == mCurrentTab ? mTextSelectColor : mTextUnselectColor);
tv_tab_title.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextsize);
// tv_tab_title.setPadding((int) mTabPadding, 0, (int) mTabPadding, 0);
if (mTextAllCaps) {
tv_tab_title.setText(tv_tab_title.getText().toString().toUpperCase());
}
if (mTextBold == TEXT_BOLD_BOTH) {
tv_tab_title.getPaint().setFakeBoldText(true);
} else if (mTextBold == TEXT_BOLD_NONE) {
tv_tab_title.getPaint().setFakeBoldText(false);
}
ImageView iv_tab_icon = (ImageView) tabView.findViewById(R.id.iv_tab_icon);
if (mIconVisible) {
iv_tab_icon.setVisibility(View.VISIBLE);
CustomTabEntity tabEntity = mTabEntitys.get(i);
iv_tab_icon.setImageResource(i == mCurrentTab ? tabEntity.getTabSelectedIcon() : tabEntity.getTabUnselectedIcon());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
mIconWidth <= 0 ? LinearLayout.LayoutParams.WRAP_CONTENT : (int) mIconWidth,
mIconHeight <= 0 ? LinearLayout.LayoutParams.WRAP_CONTENT : (int) mIconHeight);
if (mIconGravity == Gravity.LEFT) {
lp.rightMargin = (int) mIconMargin;
} else if (mIconGravity == Gravity.RIGHT) {
lp.leftMargin = (int) mIconMargin;
} else if (mIconGravity == Gravity.BOTTOM) {
lp.topMargin = (int) mIconMargin;
} else {
lp.bottomMargin = (int) mIconMargin;
}
iv_tab_icon.setLayoutParams(lp);
} else {
iv_tab_icon.setVisibility(View.GONE);
}
}
}
private void updateTabSelection(int position) {
for (int i = 0; i < mTabCount; ++i) {
View tabView = mTabsContainer.getChildAt(i);
final boolean isSelect = i == position;
TextView tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
tab_title.setTextColor(isSelect ? mTextSelectColor : mTextUnselectColor);
ImageView iv_tab_icon = (ImageView) tabView.findViewById(R.id.iv_tab_icon);
CustomTabEntity tabEntity = mTabEntitys.get(i);
iv_tab_icon.setImageResource(isSelect ? tabEntity.getTabSelectedIcon() : tabEntity.getTabUnselectedIcon());
if (mTextBold == TEXT_BOLD_WHEN_SELECT) {
tab_title.getPaint().setFakeBoldText(isSelect);
}
}
}
private void calcOffset() {
final View currentTabView = mTabsContainer.getChildAt(this.mCurrentTab);
mCurrentP.left = currentTabView.getLeft();
mCurrentP.right = currentTabView.getRight();
final View lastTabView = mTabsContainer.getChildAt(this.mLastTab);
mLastP.left = lastTabView.getLeft();
mLastP.right = lastTabView.getRight();
// Log.d("AAA", "mLastP--->" + mLastP.left + "&" + mLastP.right);
// Log.d("AAA", "mCurrentP--->" + mCurrentP.left + "&" + mCurrentP.right);
if (mLastP.left == mCurrentP.left && mLastP.right == mCurrentP.right) {
invalidate();
} else {
mValueAnimator.setObjectValues(mLastP, mCurrentP);
if (mIndicatorBounceEnable) {
mValueAnimator.setInterpolator(mInterpolator);
}
if (mIndicatorAnimDuration < 0) {
mIndicatorAnimDuration = mIndicatorBounceEnable ? 500 : 250;
}
mValueAnimator.setDuration(mIndicatorAnimDuration);
mValueAnimator.start();
}
}
private void calcIndicatorRect() {
View currentTabView = mTabsContainer.getChildAt(this.mCurrentTab);
float left = currentTabView.getLeft();
float right = currentTabView.getRight();
mIndicatorRect.left = (int) left;
mIndicatorRect.right = (int) right;
if (mIndicatorWidth < 0) { //indicatorWidth小于0时,原jpardogo's PagerSlidingTabStrip
} else {//indicatorWidth大于0时,圆角矩形以及三角形
float indicatorLeft = currentTabView.getLeft() + (currentTabView.getWidth() - mIndicatorWidth) / 2;
mIndicatorRect.left = (int) indicatorLeft;
mIndicatorRect.right = (int) (mIndicatorRect.left + mIndicatorWidth);
}
}
@Override
public void onAnimationUpdate(ValueAnimator animation) {
View currentTabView = mTabsContainer.getChildAt(this.mCurrentTab);
IndicatorPoint p = (IndicatorPoint) animation.getAnimatedValue();
mIndicatorRect.left = (int) p.left;
mIndicatorRect.right = (int) p.right;
if (mIndicatorWidth < 0) { //indicatorWidth小于0时,原jpardogo's PagerSlidingTabStrip
} else {//indicatorWidth大于0时,圆角矩形以及三角形
float indicatorLeft = p.left + (currentTabView.getWidth() - mIndicatorWidth) / 2;
mIndicatorRect.left = (int) indicatorLeft;
mIndicatorRect.right = (int) (mIndicatorRect.left + mIndicatorWidth);
}
invalidate();
}
private boolean mIsFirstDraw = true;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (isInEditMode() || mTabCount <= 0) {
return;
}
int height = getHeight();
int paddingLeft = getPaddingLeft();
// draw divider
if (mDividerWidth > 0) {
mDividerPaint.setStrokeWidth(mDividerWidth);
mDividerPaint.setColor(mDividerColor);
for (int i = 0; i < mTabCount - 1; i++) {
View tab = mTabsContainer.getChildAt(i);
canvas.drawLine(paddingLeft + tab.getRight(), mDividerPadding, paddingLeft + tab.getRight(), height - mDividerPadding, mDividerPaint);
}
}
// draw underline
if (mUnderlineHeight > 0) {
mRectPaint.setColor(mUnderlineColor);
if (mUnderlineGravity == Gravity.BOTTOM) {
canvas.drawRect(paddingLeft, height - mUnderlineHeight, mTabsContainer.getWidth() + paddingLeft, height, mRectPaint);
} else {
canvas.drawRect(paddingLeft, 0, mTabsContainer.getWidth() + paddingLeft, mUnderlineHeight, mRectPaint);
}
}
//draw indicator line
if (mIndicatorAnimEnable) {
if (mIsFirstDraw) {
mIsFirstDraw = false;
calcIndicatorRect();
}
} else {
calcIndicatorRect();
}
if (mIndicatorStyle == STYLE_TRIANGLE) {
if (mIndicatorHeight > 0) {
mTrianglePaint.setColor(mIndicatorColor);
mTrianglePath.reset();
mTrianglePath.moveTo(paddingLeft + mIndicatorRect.left, height);
mTrianglePath.lineTo(paddingLeft + mIndicatorRect.left / 2 + mIndicatorRect.right / 2, height - mIndicatorHeight);
mTrianglePath.lineTo(paddingLeft + mIndicatorRect.right, height);
mTrianglePath.close();
canvas.drawPath(mTrianglePath, mTrianglePaint);
}
} else if (mIndicatorStyle == STYLE_BLOCK) {
if (mIndicatorHeight < 0) {
mIndicatorHeight = height - mIndicatorMarginTop - mIndicatorMarginBottom;
} else {
}
if (mIndicatorHeight > 0) {
if (mIndicatorCornerRadius < 0 || mIndicatorCornerRadius > mIndicatorHeight / 2) {
mIndicatorCornerRadius = mIndicatorHeight / 2;
}
mIndicatorDrawable.setColor(mIndicatorColor);
mIndicatorDrawable.setBounds(paddingLeft + (int) mIndicatorMarginLeft + mIndicatorRect.left,
(int) mIndicatorMarginTop, (int) (paddingLeft + mIndicatorRect.right - mIndicatorMarginRight),
(int) (mIndicatorMarginTop + mIndicatorHeight));
mIndicatorDrawable.setCornerRadius(mIndicatorCornerRadius);
mIndicatorDrawable.draw(canvas);
}
} else {
/* mRectPaint.setColor(mIndicatorColor);
calcIndicatorRect();
canvas.drawRect(getPaddingLeft() + mIndicatorRect.left, getHeight() - mIndicatorHeight,
mIndicatorRect.right + getPaddingLeft(), getHeight(), mRectPaint);*/
if (mIndicatorHeight > 0) {
mIndicatorDrawable.setColor(mIndicatorColor);
if (mIndicatorGravity == Gravity.BOTTOM) {
mIndicatorDrawable.setBounds(paddingLeft + (int) mIndicatorMarginLeft + mIndicatorRect.left,
height - (int) mIndicatorHeight - (int) mIndicatorMarginBottom,
paddingLeft + mIndicatorRect.right - (int) mIndicatorMarginRight,
height - (int) mIndicatorMarginBottom);
} else {
mIndicatorDrawable.setBounds(paddingLeft + (int) mIndicatorMarginLeft + mIndicatorRect.left,
(int) mIndicatorMarginTop,
paddingLeft + mIndicatorRect.right - (int) mIndicatorMarginRight,
(int) mIndicatorHeight + (int) mIndicatorMarginTop);
}
mIndicatorDrawable.setCornerRadius(mIndicatorCornerRadius);
mIndicatorDrawable.draw(canvas);
}
}
}
//setter and getter
public void setCurrentTab(int currentTab) {
mLastTab = this.mCurrentTab;
this.mCurrentTab = currentTab;
updateTabSelection(currentTab);
if (mFragmentChangeManager != null) {
mFragmentChangeManager.setFragments(currentTab);
}
if (mIndicatorAnimEnable) {
calcOffset();
} else {
invalidate();
}
}
public void setIndicatorStyle(int indicatorStyle) {
this.mIndicatorStyle = indicatorStyle;
invalidate();
}
public void setTabPadding(float tabPadding) {
this.mTabPadding = dp2px(tabPadding);
updateTabStyles();
}
public void setTabSpaceEqual(boolean tabSpaceEqual) {
this.mTabSpaceEqual = tabSpaceEqual;
updateTabStyles();
}
public void setTabWidth(float tabWidth) {
this.mTabWidth = dp2px(tabWidth);
updateTabStyles();
}
public void setIndicatorColor(int indicatorColor) {
this.mIndicatorColor = indicatorColor;
invalidate();
}
public void setIndicatorHeight(float indicatorHeight) {
this.mIndicatorHeight = dp2px(indicatorHeight);
invalidate();
}
public void setIndicatorWidth(float indicatorWidth) {
this.mIndicatorWidth = dp2px(indicatorWidth);
invalidate();
}
public void setIndicatorCornerRadius(float indicatorCornerRadius) {
this.mIndicatorCornerRadius = dp2px(indicatorCornerRadius);
invalidate();
}
public void setIndicatorGravity(int indicatorGravity) {
this.mIndicatorGravity = indicatorGravity;
invalidate();
}
public void setIndicatorMargin(float indicatorMarginLeft, float indicatorMarginTop,
float indicatorMarginRight, float indicatorMarginBottom) {
this.mIndicatorMarginLeft = dp2px(indicatorMarginLeft);
this.mIndicatorMarginTop = dp2px(indicatorMarginTop);
this.mIndicatorMarginRight = dp2px(indicatorMarginRight);
this.mIndicatorMarginBottom = dp2px(indicatorMarginBottom);
invalidate();
}
public void setIndicatorAnimDuration(long indicatorAnimDuration) {
this.mIndicatorAnimDuration = indicatorAnimDuration;
}
public void setIndicatorAnimEnable(boolean indicatorAnimEnable) {
this.mIndicatorAnimEnable = indicatorAnimEnable;
}
public void setIndicatorBounceEnable(boolean indicatorBounceEnable) {
this.mIndicatorBounceEnable = indicatorBounceEnable;
}
public void setUnderlineColor(int underlineColor) {
this.mUnderlineColor = underlineColor;
invalidate();
}
public void setUnderlineHeight(float underlineHeight) {
this.mUnderlineHeight = dp2px(underlineHeight);
invalidate();
}
public void setUnderlineGravity(int underlineGravity) {
this.mUnderlineGravity = underlineGravity;
invalidate();
}
public void setDividerColor(int dividerColor) {
this.mDividerColor = dividerColor;
invalidate();
}
public void setDividerWidth(float dividerWidth) {
this.mDividerWidth = dp2px(dividerWidth);
invalidate();
}
public void setDividerPadding(float dividerPadding) {
this.mDividerPadding = dp2px(dividerPadding);
invalidate();
}
public void setTextsize(float textsize) {
this.mTextsize = sp2px(textsize);
updateTabStyles();
}
public void setTextSelectColor(int textSelectColor) {
this.mTextSelectColor = textSelectColor;
updateTabStyles();
}
public void setTextUnselectColor(int textUnselectColor) {
this.mTextUnselectColor = textUnselectColor;
updateTabStyles();
}
public void setTextBold(int textBold) {
this.mTextBold = textBold;
updateTabStyles();
}
public void setIconVisible(boolean iconVisible) {
this.mIconVisible = iconVisible;
updateTabStyles();
}
public void setIconGravity(int iconGravity) {
this.mIconGravity = iconGravity;
notifyDataSetChanged();
}
public void setIconWidth(float iconWidth) {
this.mIconWidth = dp2px(iconWidth);
updateTabStyles();
}
public void setIconHeight(float iconHeight) {
this.mIconHeight = dp2px(iconHeight);
updateTabStyles();
}
public void setIconMargin(float iconMargin) {
this.mIconMargin = dp2px(iconMargin);
updateTabStyles();
}
public void setTextAllCaps(boolean textAllCaps) {
this.mTextAllCaps = textAllCaps;
updateTabStyles();
}
public int getTabCount() {
return mTabCount;
}
public int getCurrentTab() {
return mCurrentTab;
}
public int getIndicatorStyle() {
return mIndicatorStyle;
}
public float getTabPadding() {
return mTabPadding;
}
public boolean isTabSpaceEqual() {
return mTabSpaceEqual;
}
public float getTabWidth() {
return mTabWidth;
}
public int getIndicatorColor() {
return mIndicatorColor;
}
public float getIndicatorHeight() {
return mIndicatorHeight;
}
public float getIndicatorWidth() {
return mIndicatorWidth;
}
public float getIndicatorCornerRadius() {
return mIndicatorCornerRadius;
}
public float getIndicatorMarginLeft() {
return mIndicatorMarginLeft;
}
public float getIndicatorMarginTop() {
return mIndicatorMarginTop;
}
public float getIndicatorMarginRight() {
return mIndicatorMarginRight;
}
public float getIndicatorMarginBottom() {
return mIndicatorMarginBottom;
}
public long getIndicatorAnimDuration() {
return mIndicatorAnimDuration;
}
public boolean isIndicatorAnimEnable() {
return mIndicatorAnimEnable;
}
public boolean isIndicatorBounceEnable() {
return mIndicatorBounceEnable;
}
public int getUnderlineColor() {
return mUnderlineColor;
}
public float getUnderlineHeight() {
return mUnderlineHeight;
}
public int getDividerColor() {
return mDividerColor;
}
public float getDividerWidth() {
return mDividerWidth;
}
public float getDividerPadding() {
return mDividerPadding;
}
public float getTextsize() {
return mTextsize;
}
public int getTextSelectColor() {
return mTextSelectColor;
}
public int getTextUnselectColor() {
return mTextUnselectColor;
}
public int getTextBold() {
return mTextBold;
}
public boolean isTextAllCaps() {
return mTextAllCaps;
}
public int getIconGravity() {
return mIconGravity;
}
public float getIconWidth() {
return mIconWidth;
}
public float getIconHeight() {
return mIconHeight;
}
public float getIconMargin() {
return mIconMargin;
}
public boolean isIconVisible() {
return mIconVisible;
}
public ImageView getIconView(int tab) {
View tabView = mTabsContainer.getChildAt(tab);
ImageView iv_tab_icon = (ImageView) tabView.findViewById(R.id.iv_tab_icon);
return iv_tab_icon;
}
public TextView getTitleView(int tab) {
View tabView = mTabsContainer.getChildAt(tab);
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
return tv_tab_title;
}
//setter and getter
// show MsgTipView
private Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private SparseArray<Boolean> mInitSetMap = new SparseArray<>();
/**
*
*
* @param position tab
* @param num num0,num0
*/
public void showMsg(int position, int num) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
UnreadMsgUtils.show(tipView, num);
if (mInitSetMap.get(position) != null && mInitSetMap.get(position)) {
return;
}
if (!mIconVisible) {
setMsgMargin(position, 2, 2);
} else {
setMsgMargin(position, 0,
mIconGravity == Gravity.LEFT || mIconGravity == Gravity.RIGHT ? 4 : 0);
}
mInitSetMap.put(position, true);
}
}
/**
*
*
* @param position tab
*/
public void showDot(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
showMsg(position, 0);
}
public void hideMsg(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
tipView.setVisibility(View.GONE);
}
}
/**
* ,
* 1.:tab
* 2.(WRAP_CONTENT):tab,,bottomPaddingtopPadding
*/
public void setMsgMargin(int position, float leftPadding, float bottomPadding) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
mTextPaint.setTextSize(mTextsize);
float textWidth = mTextPaint.measureText(tv_tab_title.getText().toString());
float textHeight = mTextPaint.descent() - mTextPaint.ascent();
MarginLayoutParams lp = (MarginLayoutParams) tipView.getLayoutParams();
float iconH = mIconHeight;
float margin = 0;
if (mIconVisible) {
if (iconH <= 0) {
iconH = mContext.getResources().getDrawable(mTabEntitys.get(position).getTabSelectedIcon()).getIntrinsicHeight();
}
margin = mIconMargin;
}
if (mIconGravity == Gravity.TOP || mIconGravity == Gravity.BOTTOM) {
lp.leftMargin = dp2px(leftPadding);
lp.topMargin = mHeight > 0 ? (int) (mHeight - textHeight - iconH - margin) / 2 - dp2px(bottomPadding) : dp2px(bottomPadding);
} else {
lp.leftMargin = dp2px(leftPadding);
lp.topMargin = mHeight > 0 ? (int) (mHeight - Math.max(textHeight, iconH)) / 2 - dp2px(bottomPadding) : dp2px(bottomPadding);
}
tipView.setLayoutParams(lp);
}
}
/** 当前类只提供了少许设置未读消息属性的方法,可以通过该方法获取MsgView对象从而各种设置 */
public MsgView getMsgView(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
return tipView;
}
private OnTabSelectListener mListener;
public void setOnTabSelectListener(OnTabSelectListener listener) {
this.mListener = listener;
}
@Override
protected Parcelable onSaveInstanceState() {
Bundle bundle = new Bundle();
bundle.putParcelable("instanceState", super.onSaveInstanceState());
bundle.putInt("mCurrentTab", mCurrentTab);
return bundle;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (state instanceof Bundle) {
Bundle bundle = (Bundle) state;
mCurrentTab = bundle.getInt("mCurrentTab");
state = bundle.getParcelable("instanceState");
if (mCurrentTab != 0 && mTabsContainer.getChildCount() > 0) {
updateTabSelection(mCurrentTab);
}
}
super.onRestoreInstanceState(state);
}
class IndicatorPoint {
public float left;
public float right;
}
private IndicatorPoint mCurrentP = new IndicatorPoint();
private IndicatorPoint mLastP = new IndicatorPoint();
class PointEvaluator implements TypeEvaluator<IndicatorPoint> {
@Override
public IndicatorPoint evaluate(float fraction, IndicatorPoint startValue, IndicatorPoint endValue) {
float left = startValue.left + fraction * (endValue.left - startValue.left);
float right = startValue.right + fraction * (endValue.right - startValue.right);
IndicatorPoint point = new IndicatorPoint();
point.left = left;
point.right = right;
return point;
}
}
protected int dp2px(float dp) {
final float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
protected int sp2px(float sp) {
final float scale = this.mContext.getResources().getDisplayMetrics().scaledDensity;
return (int) (sp * scale + 0.5f);
}
}

@ -0,0 +1,753 @@
package com.flyco.tablayout;
import android.animation.TypeEvaluator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.OvershootInterpolator;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.flyco.tablayout.listener.OnTabSelectListener;
import com.flyco.tablayout.utils.FragmentChangeManager;
import com.flyco.tablayout.utils.UnreadMsgUtils;
import com.flyco.tablayout.widget.MsgView;
import java.util.ArrayList;
public class SegmentTabLayout extends FrameLayout implements ValueAnimator.AnimatorUpdateListener {
private Context mContext;
private String[] mTitles;
private LinearLayout mTabsContainer;
private int mCurrentTab;
private int mLastTab;
private int mTabCount;
/** 用于绘制显示器 */
private Rect mIndicatorRect = new Rect();
private GradientDrawable mIndicatorDrawable = new GradientDrawable();
private GradientDrawable mRectDrawable = new GradientDrawable();
private Paint mDividerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private float mTabPadding;
private boolean mTabSpaceEqual;
private float mTabWidth;
/** indicator */
private int mIndicatorColor;
private float mIndicatorHeight;
private float mIndicatorCornerRadius;
private float mIndicatorMarginLeft;
private float mIndicatorMarginTop;
private float mIndicatorMarginRight;
private float mIndicatorMarginBottom;
private long mIndicatorAnimDuration;
private boolean mIndicatorAnimEnable;
private boolean mIndicatorBounceEnable;
/** divider */
private int mDividerColor;
private float mDividerWidth;
private float mDividerPadding;
/** title */
private static final int TEXT_BOLD_NONE = 0;
private static final int TEXT_BOLD_WHEN_SELECT = 1;
private static final int TEXT_BOLD_BOTH = 2;
private float mTextsize;
private int mTextSelectColor;
private int mTextUnselectColor;
private int mTextBold;
private boolean mTextAllCaps;
private int mBarColor;
private int mBarStrokeColor;
private float mBarStrokeWidth;
private int mHeight;
/** anim */
private ValueAnimator mValueAnimator;
private OvershootInterpolator mInterpolator = new OvershootInterpolator(0.8f);
private FragmentChangeManager mFragmentChangeManager;
private float[] mRadiusArr = new float[8];
public SegmentTabLayout(Context context) {
this(context, null, 0);
}
public SegmentTabLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public SegmentTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setWillNotDraw(false);//重写onDraw方法,需要调用这个方法来清除flag
setClipChildren(false);
setClipToPadding(false);
this.mContext = context;
mTabsContainer = new LinearLayout(context);
addView(mTabsContainer);
obtainAttributes(context, attrs);
//get layout_height
String height = attrs.getAttributeValue("http://schemas.android.com/apk/res/android", "layout_height");
//create ViewPager
if (height.equals(ViewGroup.LayoutParams.MATCH_PARENT + "")) {
} else if (height.equals(ViewGroup.LayoutParams.WRAP_CONTENT + "")) {
} else {
int[] systemAttrs = {android.R.attr.layout_height};
TypedArray a = context.obtainStyledAttributes(attrs, systemAttrs);
mHeight = a.getDimensionPixelSize(0, ViewGroup.LayoutParams.WRAP_CONTENT);
a.recycle();
}
mValueAnimator = ValueAnimator.ofObject(new PointEvaluator(), mLastP, mCurrentP);
mValueAnimator.addUpdateListener(this);
}
private void obtainAttributes(Context context, AttributeSet attrs) {
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.SegmentTabLayout);
mIndicatorColor = ta.getColor(R.styleable.SegmentTabLayout_tl_indicator_color, Color.parseColor("#222831"));
mIndicatorHeight = ta.getDimension(R.styleable.SegmentTabLayout_tl_indicator_height, -1);
mIndicatorCornerRadius = ta.getDimension(R.styleable.SegmentTabLayout_tl_indicator_corner_radius, -1);
mIndicatorMarginLeft = ta.getDimension(R.styleable.SegmentTabLayout_tl_indicator_margin_left, dp2px(0));
mIndicatorMarginTop = ta.getDimension(R.styleable.SegmentTabLayout_tl_indicator_margin_top, 0);
mIndicatorMarginRight = ta.getDimension(R.styleable.SegmentTabLayout_tl_indicator_margin_right, dp2px(0));
mIndicatorMarginBottom = ta.getDimension(R.styleable.SegmentTabLayout_tl_indicator_margin_bottom, 0);
mIndicatorAnimEnable = ta.getBoolean(R.styleable.SegmentTabLayout_tl_indicator_anim_enable, false);
mIndicatorBounceEnable = ta.getBoolean(R.styleable.SegmentTabLayout_tl_indicator_bounce_enable, true);
mIndicatorAnimDuration = ta.getInt(R.styleable.SegmentTabLayout_tl_indicator_anim_duration, -1);
mDividerColor = ta.getColor(R.styleable.SegmentTabLayout_tl_divider_color, mIndicatorColor);
mDividerWidth = ta.getDimension(R.styleable.SegmentTabLayout_tl_divider_width, dp2px(1));
mDividerPadding = ta.getDimension(R.styleable.SegmentTabLayout_tl_divider_padding, 0);
mTextsize = ta.getDimension(R.styleable.SegmentTabLayout_tl_textsize, sp2px(13f));
mTextSelectColor = ta.getColor(R.styleable.SegmentTabLayout_tl_textSelectColor, Color.parseColor("#ffffff"));
mTextUnselectColor = ta.getColor(R.styleable.SegmentTabLayout_tl_textUnselectColor, mIndicatorColor);
mTextBold = ta.getInt(R.styleable.SegmentTabLayout_tl_textBold, TEXT_BOLD_NONE);
mTextAllCaps = ta.getBoolean(R.styleable.SegmentTabLayout_tl_textAllCaps, false);
mTabSpaceEqual = ta.getBoolean(R.styleable.SegmentTabLayout_tl_tab_space_equal, true);
mTabWidth = ta.getDimension(R.styleable.SegmentTabLayout_tl_tab_width, dp2px(-1));
mTabPadding = ta.getDimension(R.styleable.SegmentTabLayout_tl_tab_padding, mTabSpaceEqual || mTabWidth > 0 ? dp2px(0) : dp2px(10));
mBarColor = ta.getColor(R.styleable.SegmentTabLayout_tl_bar_color, Color.TRANSPARENT);
mBarStrokeColor = ta.getColor(R.styleable.SegmentTabLayout_tl_bar_stroke_color, mIndicatorColor);
mBarStrokeWidth = ta.getDimension(R.styleable.SegmentTabLayout_tl_bar_stroke_width, dp2px(1));
ta.recycle();
}
public void setTabData(String[] titles) {
if (titles == null || titles.length == 0) {
throw new IllegalStateException("Titles can not be NULL or EMPTY !");
}
this.mTitles = titles;
notifyDataSetChanged();
}
/** 关联数据支持同时切换fragments */
public void setTabData(String[] titles, FragmentActivity fa, int containerViewId, ArrayList<Fragment> fragments) {
mFragmentChangeManager = new FragmentChangeManager(fa.getSupportFragmentManager(), containerViewId, fragments);
setTabData(titles);
}
/** 更新数据 */
public void notifyDataSetChanged() {
mTabsContainer.removeAllViews();
this.mTabCount = mTitles.length;
View tabView;
for (int i = 0; i < mTabCount; i++) {
tabView = View.inflate(mContext, R.layout.layout_tab_segment, null);
tabView.setTag(i);
addTab(i, tabView);
}
updateTabStyles();
}
/** 创建并添加tab */
private void addTab(final int position, View tabView) {
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
tv_tab_title.setText(mTitles[position]);
tabView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
if (mCurrentTab != position) {
setCurrentTab(position);
if (mListener != null) {
mListener.onTabSelect(position);
}
} else {
if (mListener != null) {
mListener.onTabReselect(position);
}
}
}
});
/** 每一个Tab的布局参数 */
LinearLayout.LayoutParams lp_tab = mTabSpaceEqual ?
new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f) :
new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
if (mTabWidth > 0) {
lp_tab = new LinearLayout.LayoutParams((int) mTabWidth, LayoutParams.MATCH_PARENT);
}
mTabsContainer.addView(tabView, position, lp_tab);
}
private void updateTabStyles() {
for (int i = 0; i < mTabCount; i++) {
View tabView = mTabsContainer.getChildAt(i);
tabView.setPadding((int) mTabPadding, 0, (int) mTabPadding, 0);
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
tv_tab_title.setTextColor(i == mCurrentTab ? mTextSelectColor : mTextUnselectColor);
tv_tab_title.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextsize);
// tv_tab_title.setPadding((int) mTabPadding, 0, (int) mTabPadding, 0);
if (mTextAllCaps) {
tv_tab_title.setText(tv_tab_title.getText().toString().toUpperCase());
}
if (mTextBold == TEXT_BOLD_BOTH) {
tv_tab_title.getPaint().setFakeBoldText(true);
} else if (mTextBold == TEXT_BOLD_NONE) {
tv_tab_title.getPaint().setFakeBoldText(false);
}
}
}
private void updateTabSelection(int position) {
for (int i = 0; i < mTabCount; ++i) {
View tabView = mTabsContainer.getChildAt(i);
final boolean isSelect = i == position;
TextView tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
tab_title.setTextColor(isSelect ? mTextSelectColor : mTextUnselectColor);
if (mTextBold == TEXT_BOLD_WHEN_SELECT) {
tab_title.getPaint().setFakeBoldText(isSelect);
}
}
}
private void calcOffset() {
final View currentTabView = mTabsContainer.getChildAt(this.mCurrentTab);
mCurrentP.left = currentTabView.getLeft();
mCurrentP.right = currentTabView.getRight();
final View lastTabView = mTabsContainer.getChildAt(this.mLastTab);
mLastP.left = lastTabView.getLeft();
mLastP.right = lastTabView.getRight();
// Log.d("AAA", "mLastP--->" + mLastP.left + "&" + mLastP.right);
// Log.d("AAA", "mCurrentP--->" + mCurrentP.left + "&" + mCurrentP.right);
if (mLastP.left == mCurrentP.left && mLastP.right == mCurrentP.right) {
invalidate();
} else {
mValueAnimator.setObjectValues(mLastP, mCurrentP);
if (mIndicatorBounceEnable) {
mValueAnimator.setInterpolator(mInterpolator);
}
if (mIndicatorAnimDuration < 0) {
mIndicatorAnimDuration = mIndicatorBounceEnable ? 500 : 250;
}
mValueAnimator.setDuration(mIndicatorAnimDuration);
mValueAnimator.start();
}
}
private void calcIndicatorRect() {
View currentTabView = mTabsContainer.getChildAt(this.mCurrentTab);
float left = currentTabView.getLeft();
float right = currentTabView.getRight();
mIndicatorRect.left = (int) left;
mIndicatorRect.right = (int) right;
if (!mIndicatorAnimEnable) {
if (mCurrentTab == 0) {
/**The corners are ordered top-left, top-right, bottom-right, bottom-left*/
mRadiusArr[0] = mIndicatorCornerRadius;
mRadiusArr[1] = mIndicatorCornerRadius;
mRadiusArr[2] = 0;
mRadiusArr[3] = 0;
mRadiusArr[4] = 0;
mRadiusArr[5] = 0;
mRadiusArr[6] = mIndicatorCornerRadius;
mRadiusArr[7] = mIndicatorCornerRadius;
} else if (mCurrentTab == mTabCount - 1) {
/**The corners are ordered top-left, top-right, bottom-right, bottom-left*/
mRadiusArr[0] = 0;
mRadiusArr[1] = 0;
mRadiusArr[2] = mIndicatorCornerRadius;
mRadiusArr[3] = mIndicatorCornerRadius;
mRadiusArr[4] = mIndicatorCornerRadius;
mRadiusArr[5] = mIndicatorCornerRadius;
mRadiusArr[6] = 0;
mRadiusArr[7] = 0;
} else {
/**The corners are ordered top-left, top-right, bottom-right, bottom-left*/
mRadiusArr[0] = 0;
mRadiusArr[1] = 0;
mRadiusArr[2] = 0;
mRadiusArr[3] = 0;
mRadiusArr[4] = 0;
mRadiusArr[5] = 0;
mRadiusArr[6] = 0;
mRadiusArr[7] = 0;
}
} else {
/**The corners are ordered top-left, top-right, bottom-right, bottom-left*/
mRadiusArr[0] = mIndicatorCornerRadius;
mRadiusArr[1] = mIndicatorCornerRadius;
mRadiusArr[2] = mIndicatorCornerRadius;
mRadiusArr[3] = mIndicatorCornerRadius;
mRadiusArr[4] = mIndicatorCornerRadius;
mRadiusArr[5] = mIndicatorCornerRadius;
mRadiusArr[6] = mIndicatorCornerRadius;
mRadiusArr[7] = mIndicatorCornerRadius;
}
}
@Override
public void onAnimationUpdate(ValueAnimator animation) {
IndicatorPoint p = (IndicatorPoint) animation.getAnimatedValue();
mIndicatorRect.left = (int) p.left;
mIndicatorRect.right = (int) p.right;
invalidate();
}
private boolean mIsFirstDraw = true;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (isInEditMode() || mTabCount <= 0) {
return;
}
int height = getHeight();
int paddingLeft = getPaddingLeft();
if (mIndicatorHeight < 0) {
mIndicatorHeight = height - mIndicatorMarginTop - mIndicatorMarginBottom;
}
if (mIndicatorCornerRadius < 0 || mIndicatorCornerRadius > mIndicatorHeight / 2) {
mIndicatorCornerRadius = mIndicatorHeight / 2;
}
//draw rect
mRectDrawable.setColor(mBarColor);
mRectDrawable.setStroke((int) mBarStrokeWidth, mBarStrokeColor);
mRectDrawable.setCornerRadius(mIndicatorCornerRadius);
mRectDrawable.setBounds(getPaddingLeft(), getPaddingTop(), getWidth() - getPaddingRight(), getHeight() - getPaddingBottom());
mRectDrawable.draw(canvas);
// draw divider
if (!mIndicatorAnimEnable && mDividerWidth > 0) {
mDividerPaint.setStrokeWidth(mDividerWidth);
mDividerPaint.setColor(mDividerColor);
for (int i = 0; i < mTabCount - 1; i++) {
View tab = mTabsContainer.getChildAt(i);
canvas.drawLine(paddingLeft + tab.getRight(), mDividerPadding, paddingLeft + tab.getRight(), height - mDividerPadding, mDividerPaint);
}
}
//draw indicator line
if (mIndicatorAnimEnable) {
if (mIsFirstDraw) {
mIsFirstDraw = false;
calcIndicatorRect();
}
} else {
calcIndicatorRect();
}
mIndicatorDrawable.setColor(mIndicatorColor);
mIndicatorDrawable.setBounds(paddingLeft + (int) mIndicatorMarginLeft + mIndicatorRect.left,
(int) mIndicatorMarginTop, (int) (paddingLeft + mIndicatorRect.right - mIndicatorMarginRight),
(int) (mIndicatorMarginTop + mIndicatorHeight));
mIndicatorDrawable.setCornerRadii(mRadiusArr);
mIndicatorDrawable.draw(canvas);
}
//setter and getter
public void setCurrentTab(int currentTab) {
mLastTab = this.mCurrentTab;
this.mCurrentTab = currentTab;
updateTabSelection(currentTab);
if (mFragmentChangeManager != null) {
mFragmentChangeManager.setFragments(currentTab);
}
if (mIndicatorAnimEnable) {
calcOffset();
} else {
invalidate();
}
}
public void setTabPadding(float tabPadding) {
this.mTabPadding = dp2px(tabPadding);
updateTabStyles();
}
public void setTabSpaceEqual(boolean tabSpaceEqual) {
this.mTabSpaceEqual = tabSpaceEqual;
updateTabStyles();
}
public void setTabWidth(float tabWidth) {
this.mTabWidth = dp2px(tabWidth);
updateTabStyles();
}
public void setIndicatorColor(int indicatorColor) {
this.mIndicatorColor = indicatorColor;
invalidate();
}
public void setIndicatorHeight(float indicatorHeight) {
this.mIndicatorHeight = dp2px(indicatorHeight);
invalidate();
}
public void setIndicatorCornerRadius(float indicatorCornerRadius) {
this.mIndicatorCornerRadius = dp2px(indicatorCornerRadius);
invalidate();
}
public void setIndicatorMargin(float indicatorMarginLeft, float indicatorMarginTop,
float indicatorMarginRight, float indicatorMarginBottom) {
this.mIndicatorMarginLeft = dp2px(indicatorMarginLeft);
this.mIndicatorMarginTop = dp2px(indicatorMarginTop);
this.mIndicatorMarginRight = dp2px(indicatorMarginRight);
this.mIndicatorMarginBottom = dp2px(indicatorMarginBottom);
invalidate();
}
public void setIndicatorAnimDuration(long indicatorAnimDuration) {
this.mIndicatorAnimDuration = indicatorAnimDuration;
}
public void setIndicatorAnimEnable(boolean indicatorAnimEnable) {
this.mIndicatorAnimEnable = indicatorAnimEnable;
}
public void setIndicatorBounceEnable(boolean indicatorBounceEnable) {
this.mIndicatorBounceEnable = indicatorBounceEnable;
}
public void setDividerColor(int dividerColor) {
this.mDividerColor = dividerColor;
invalidate();
}
public void setDividerWidth(float dividerWidth) {
this.mDividerWidth = dp2px(dividerWidth);
invalidate();
}
public void setDividerPadding(float dividerPadding) {
this.mDividerPadding = dp2px(dividerPadding);
invalidate();
}
public void setTextsize(float textsize) {
this.mTextsize = sp2px(textsize);
updateTabStyles();
}
public void setTextSelectColor(int textSelectColor) {
this.mTextSelectColor = textSelectColor;
updateTabStyles();
}
public void setTextUnselectColor(int textUnselectColor) {
this.mTextUnselectColor = textUnselectColor;
updateTabStyles();
}
public void setTextBold(int textBold) {
this.mTextBold = textBold;
updateTabStyles();
}
public void setTextAllCaps(boolean textAllCaps) {
this.mTextAllCaps = textAllCaps;
updateTabStyles();
}
public int getTabCount() {
return mTabCount;
}
public int getCurrentTab() {
return mCurrentTab;
}
public float getTabPadding() {
return mTabPadding;
}
public boolean isTabSpaceEqual() {
return mTabSpaceEqual;
}
public float getTabWidth() {
return mTabWidth;
}
public int getIndicatorColor() {
return mIndicatorColor;
}
public float getIndicatorHeight() {
return mIndicatorHeight;
}
public float getIndicatorCornerRadius() {
return mIndicatorCornerRadius;
}
public float getIndicatorMarginLeft() {
return mIndicatorMarginLeft;
}
public float getIndicatorMarginTop() {
return mIndicatorMarginTop;
}
public float getIndicatorMarginRight() {
return mIndicatorMarginRight;
}
public float getIndicatorMarginBottom() {
return mIndicatorMarginBottom;
}
public long getIndicatorAnimDuration() {
return mIndicatorAnimDuration;
}
public boolean isIndicatorAnimEnable() {
return mIndicatorAnimEnable;
}
public boolean isIndicatorBounceEnable() {
return mIndicatorBounceEnable;
}
public int getDividerColor() {
return mDividerColor;
}
public float getDividerWidth() {
return mDividerWidth;
}
public float getDividerPadding() {
return mDividerPadding;
}
public float getTextsize() {
return mTextsize;
}
public int getTextSelectColor() {
return mTextSelectColor;
}
public int getTextUnselectColor() {
return mTextUnselectColor;
}
public int getTextBold() {
return mTextBold;
}
public boolean isTextAllCaps() {
return mTextAllCaps;
}
public TextView getTitleView(int tab) {
View tabView = mTabsContainer.getChildAt(tab);
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
return tv_tab_title;
}
//setter and getter
// show MsgTipView
private Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private SparseArray<Boolean> mInitSetMap = new SparseArray<>();
/**
*
*
* @param position tab
* @param num num0,num0
*/
public void showMsg(int position, int num) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
UnreadMsgUtils.show(tipView, num);
if (mInitSetMap.get(position) != null && mInitSetMap.get(position)) {
return;
}
setMsgMargin(position, 2, 2);
mInitSetMap.put(position, true);
}
}
/**
*
*
* @param position tab
*/
public void showDot(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
showMsg(position, 0);
}
public void hideMsg(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
tipView.setVisibility(View.GONE);
}
}
/**
* ,
* 1.:tab
* 2.(WRAP_CONTENT):tab,,bottomPaddingtopPadding
*/
public void setMsgMargin(int position, float leftPadding, float bottomPadding) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
mTextPaint.setTextSize(mTextsize);
float textWidth = mTextPaint.measureText(tv_tab_title.getText().toString());
float textHeight = mTextPaint.descent() - mTextPaint.ascent();
MarginLayoutParams lp = (MarginLayoutParams) tipView.getLayoutParams();
lp.leftMargin = dp2px(leftPadding);
lp.topMargin = mHeight > 0 ? (int) (mHeight - textHeight) / 2 - dp2px(bottomPadding) : dp2px(bottomPadding);
tipView.setLayoutParams(lp);
}
}
/** 当前类只提供了少许设置未读消息属性的方法,可以通过该方法获取MsgView对象从而各种设置 */
public MsgView getMsgView(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
return tipView;
}
private OnTabSelectListener mListener;
public void setOnTabSelectListener(OnTabSelectListener listener) {
this.mListener = listener;
}
@Override
protected Parcelable onSaveInstanceState() {
Bundle bundle = new Bundle();
bundle.putParcelable("instanceState", super.onSaveInstanceState());
bundle.putInt("mCurrentTab", mCurrentTab);
return bundle;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (state instanceof Bundle) {
Bundle bundle = (Bundle) state;
mCurrentTab = bundle.getInt("mCurrentTab");
state = bundle.getParcelable("instanceState");
if (mCurrentTab != 0 && mTabsContainer.getChildCount() > 0) {
updateTabSelection(mCurrentTab);
}
}
super.onRestoreInstanceState(state);
}
class IndicatorPoint {
public float left;
public float right;
}
private IndicatorPoint mCurrentP = new IndicatorPoint();
private IndicatorPoint mLastP = new IndicatorPoint();
class PointEvaluator implements TypeEvaluator<IndicatorPoint> {
@Override
public IndicatorPoint evaluate(float fraction, IndicatorPoint startValue, IndicatorPoint endValue) {
float left = startValue.left + fraction * (endValue.left - startValue.left);
float right = startValue.right + fraction * (endValue.right - startValue.right);
IndicatorPoint point = new IndicatorPoint();
point.left = left;
point.right = right;
return point;
}
}
protected int dp2px(float dp) {
final float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
protected int sp2px(float sp) {
final float scale = this.mContext.getResources().getDisplayMetrics().scaledDensity;
return (int) (sp * scale + 0.5f);
}
}

@ -0,0 +1,909 @@
package com.flyco.tablayout;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.flyco.tablayout.listener.OnTabSelectListener;
import com.flyco.tablayout.utils.UnreadMsgUtils;
import com.flyco.tablayout.widget.MsgView;
import java.util.ArrayList;
import java.util.Collections;
/** 滑动TabLayout,对于ViewPager的依赖性强 */
public class SlidingTabLayout extends HorizontalScrollView implements ViewPager.OnPageChangeListener {
private Context mContext;
private ViewPager mViewPager;
private ArrayList<String> mTitles;
private LinearLayout mTabsContainer;
private int mCurrentTab;
private float mCurrentPositionOffset;
private int mTabCount;
/** 用于绘制显示器 */
private Rect mIndicatorRect = new Rect();
/** 用于实现滚动居中 */
private Rect mTabRect = new Rect();
private GradientDrawable mIndicatorDrawable = new GradientDrawable();
private Paint mRectPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Paint mDividerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Paint mTrianglePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Path mTrianglePath = new Path();
private static final int STYLE_NORMAL = 0;
private static final int STYLE_TRIANGLE = 1;
private static final int STYLE_BLOCK = 2;
private int mIndicatorStyle = STYLE_NORMAL;
private float mTabPadding;
private boolean mTabSpaceEqual;
private float mTabWidth;
/** indicator */
private int mIndicatorColor;
private float mIndicatorHeight;
private float mIndicatorWidth;
private float mIndicatorCornerRadius;
private float mIndicatorMarginLeft;
private float mIndicatorMarginTop;
private float mIndicatorMarginRight;
private float mIndicatorMarginBottom;
private int mIndicatorGravity;
private boolean mIndicatorWidthEqualTitle;
/** underline */
private int mUnderlineColor;
private float mUnderlineHeight;
private int mUnderlineGravity;
/** divider */
private int mDividerColor;
private float mDividerWidth;
private float mDividerPadding;
/** title */
private static final int TEXT_BOLD_NONE = 0;
private static final int TEXT_BOLD_WHEN_SELECT = 1;
private static final int TEXT_BOLD_BOTH = 2;
private float mTextsize;
private int mTextSelectColor;
private int mTextUnselectColor;
private int mTextBold;
private boolean mTextAllCaps;
private int mLastScrollX;
private int mHeight;
public SlidingTabLayout(Context context) {
this(context, null, 0);
}
public SlidingTabLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public SlidingTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setFillViewport(true);//设置滚动视图是否可以伸缩其内容以填充视口
setWillNotDraw(false);//重写onDraw方法,需要调用这个方法来清除flag
setClipChildren(false);
setClipToPadding(false);
this.mContext = context;
mTabsContainer = new LinearLayout(context);
addView(mTabsContainer);
obtainAttributes(context, attrs);
//get layout_height
String height = attrs.getAttributeValue("http://schemas.android.com/apk/res/android", "layout_height");
//create ViewPager
if (height.equals(ViewGroup.LayoutParams.MATCH_PARENT + "")) {
} else if (height.equals(ViewGroup.LayoutParams.WRAP_CONTENT + "")) {
} else {
int[] systemAttrs = {android.R.attr.layout_height};
TypedArray a = context.obtainStyledAttributes(attrs, systemAttrs);
mHeight = a.getDimensionPixelSize(0, ViewGroup.LayoutParams.WRAP_CONTENT);
a.recycle();
}
}
private void obtainAttributes(Context context, AttributeSet attrs) {
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.SlidingTabLayout);
mIndicatorStyle = ta.getInt(R.styleable.SlidingTabLayout_tl_indicator_style, STYLE_NORMAL);
mIndicatorColor = ta.getColor(R.styleable.SlidingTabLayout_tl_indicator_color, Color.parseColor(mIndicatorStyle == STYLE_BLOCK ? "#4B6A87" : "#ffffff"));
mIndicatorHeight = ta.getDimension(R.styleable.SlidingTabLayout_tl_indicator_height,
dp2px(mIndicatorStyle == STYLE_TRIANGLE ? 4 : (mIndicatorStyle == STYLE_BLOCK ? -1 : 2)));
mIndicatorWidth = ta.getDimension(R.styleable.SlidingTabLayout_tl_indicator_width, dp2px(mIndicatorStyle == STYLE_TRIANGLE ? 10 : -1));
mIndicatorCornerRadius = ta.getDimension(R.styleable.SlidingTabLayout_tl_indicator_corner_radius, dp2px(mIndicatorStyle == STYLE_BLOCK ? -1 : 0));
mIndicatorMarginLeft = ta.getDimension(R.styleable.SlidingTabLayout_tl_indicator_margin_left, dp2px(0));
mIndicatorMarginTop = ta.getDimension(R.styleable.SlidingTabLayout_tl_indicator_margin_top, dp2px(mIndicatorStyle == STYLE_BLOCK ? 7 : 0));
mIndicatorMarginRight = ta.getDimension(R.styleable.SlidingTabLayout_tl_indicator_margin_right, dp2px(0));
mIndicatorMarginBottom = ta.getDimension(R.styleable.SlidingTabLayout_tl_indicator_margin_bottom, dp2px(mIndicatorStyle == STYLE_BLOCK ? 7 : 0));
mIndicatorGravity = ta.getInt(R.styleable.SlidingTabLayout_tl_indicator_gravity, Gravity.BOTTOM);
mIndicatorWidthEqualTitle = ta.getBoolean(R.styleable.SlidingTabLayout_tl_indicator_width_equal_title, false);
mUnderlineColor = ta.getColor(R.styleable.SlidingTabLayout_tl_underline_color, Color.parseColor("#ffffff"));
mUnderlineHeight = ta.getDimension(R.styleable.SlidingTabLayout_tl_underline_height, dp2px(0));
mUnderlineGravity = ta.getInt(R.styleable.SlidingTabLayout_tl_underline_gravity, Gravity.BOTTOM);
mDividerColor = ta.getColor(R.styleable.SlidingTabLayout_tl_divider_color, Color.parseColor("#ffffff"));
mDividerWidth = ta.getDimension(R.styleable.SlidingTabLayout_tl_divider_width, dp2px(0));
mDividerPadding = ta.getDimension(R.styleable.SlidingTabLayout_tl_divider_padding, dp2px(12));
mTextsize = ta.getDimension(R.styleable.SlidingTabLayout_tl_textsize, sp2px(14));
mTextSelectColor = ta.getColor(R.styleable.SlidingTabLayout_tl_textSelectColor, Color.parseColor("#ffffff"));
mTextUnselectColor = ta.getColor(R.styleable.SlidingTabLayout_tl_textUnselectColor, Color.parseColor("#AAffffff"));
mTextBold = ta.getInt(R.styleable.SlidingTabLayout_tl_textBold, TEXT_BOLD_NONE);
mTextAllCaps = ta.getBoolean(R.styleable.SlidingTabLayout_tl_textAllCaps, false);
mTabSpaceEqual = ta.getBoolean(R.styleable.SlidingTabLayout_tl_tab_space_equal, false);
mTabWidth = ta.getDimension(R.styleable.SlidingTabLayout_tl_tab_width, dp2px(-1));
mTabPadding = ta.getDimension(R.styleable.SlidingTabLayout_tl_tab_padding, mTabSpaceEqual || mTabWidth > 0 ? dp2px(0) : dp2px(20));
ta.recycle();
}
/** 关联ViewPager */
public void setViewPager(ViewPager vp) {
if (vp == null || vp.getAdapter() == null) {
throw new IllegalStateException("ViewPager or ViewPager adapter can not be NULL !");
}
this.mViewPager = vp;
this.mViewPager.removeOnPageChangeListener(this);
this.mViewPager.addOnPageChangeListener(this);
notifyDataSetChanged();
}
/** 关联ViewPager,用于不想在ViewPager适配器中设置titles数据的情况 */
public void setViewPager(ViewPager vp, String[] titles) {
if (vp == null || vp.getAdapter() == null) {
throw new IllegalStateException("ViewPager or ViewPager adapter can not be NULL !");
}
if (titles == null || titles.length == 0) {
throw new IllegalStateException("Titles can not be EMPTY !");
}
if (titles.length != vp.getAdapter().getCount()) {
throw new IllegalStateException("Titles length must be the same as the page count !");
}
this.mViewPager = vp;
mTitles = new ArrayList<>();
Collections.addAll(mTitles, titles);
this.mViewPager.removeOnPageChangeListener(this);
this.mViewPager.addOnPageChangeListener(this);
notifyDataSetChanged();
}
/** 关联ViewPager,用于连适配器都不想自己实例化的情况 */
public void setViewPager(ViewPager vp, String[] titles, FragmentActivity fa, ArrayList<Fragment> fragments) {
if (vp == null) {
throw new IllegalStateException("ViewPager can not be NULL !");
}
if (titles == null || titles.length == 0) {
throw new IllegalStateException("Titles can not be EMPTY !");
}
this.mViewPager = vp;
this.mViewPager.setAdapter(new InnerPagerAdapter(fa.getSupportFragmentManager(), fragments, titles));
this.mViewPager.removeOnPageChangeListener(this);
this.mViewPager.addOnPageChangeListener(this);
notifyDataSetChanged();
}
/** 更新数据 */
public void notifyDataSetChanged() {
mTabsContainer.removeAllViews();
this.mTabCount = mTitles == null ? mViewPager.getAdapter().getCount() : mTitles.size();
View tabView;
for (int i = 0; i < mTabCount; i++) {
tabView = View.inflate(mContext, R.layout.layout_tab, null);
CharSequence pageTitle = mTitles == null ? mViewPager.getAdapter().getPageTitle(i) : mTitles.get(i);
addTab(i, pageTitle.toString(), tabView);
}
updateTabStyles();
}
public void addNewTab(String title) {
View tabView = View.inflate(mContext, R.layout.layout_tab, null);
if (mTitles != null) {
mTitles.add(title);
}
CharSequence pageTitle = mTitles == null ? mViewPager.getAdapter().getPageTitle(mTabCount) : mTitles.get(mTabCount);
addTab(mTabCount, pageTitle.toString(), tabView);
this.mTabCount = mTitles == null ? mViewPager.getAdapter().getCount() : mTitles.size();
updateTabStyles();
}
/** 创建并添加tab */
private void addTab(final int position, String title, View tabView) {
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
if (tv_tab_title != null) {
if (title != null) tv_tab_title.setText(title);
}
tabView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position = mTabsContainer.indexOfChild(v);
if (position != -1) {
if (mViewPager.getCurrentItem() != position) {
mViewPager.setCurrentItem(position);
if (mListener != null) {
mListener.onTabSelect(position);
}
} else {
if (mListener != null) {
mListener.onTabReselect(position);
}
}
}
}
});
/** 每一个Tab的布局参数 */
LinearLayout.LayoutParams lp_tab = mTabSpaceEqual ?
new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f) :
new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
if (mTabWidth > 0) {
lp_tab = new LinearLayout.LayoutParams((int) mTabWidth, LayoutParams.MATCH_PARENT);
}
mTabsContainer.addView(tabView, position, lp_tab);
}
private void updateTabStyles() {
for (int i = 0; i < mTabCount; i++) {
View v = mTabsContainer.getChildAt(i);
// v.setPadding((int) mTabPadding, v.getPaddingTop(), (int) mTabPadding, v.getPaddingBottom());
TextView tv_tab_title = (TextView) v.findViewById(R.id.tv_tab_title);
if (tv_tab_title != null) {
tv_tab_title.setTextColor(i == mCurrentTab ? mTextSelectColor : mTextUnselectColor);
tv_tab_title.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextsize);
tv_tab_title.setPadding((int) mTabPadding, 0, (int) mTabPadding, 0);
if (mTextAllCaps) {
tv_tab_title.setText(tv_tab_title.getText().toString().toUpperCase());
}
if (mTextBold == TEXT_BOLD_BOTH) {
tv_tab_title.getPaint().setFakeBoldText(true);
} else if (mTextBold == TEXT_BOLD_NONE) {
tv_tab_title.getPaint().setFakeBoldText(false);
}
}
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
/**
* position:View
* mCurrentPositionOffset:View.[0,1)
*/
this.mCurrentTab = position;
this.mCurrentPositionOffset = positionOffset;
scrollToCurrentTab();
invalidate();
}
@Override
public void onPageSelected(int position) {
updateTabSelection(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
/** HorizontalScrollView滚到当前tab,并且居中显示 */
private void scrollToCurrentTab() {
if (mTabCount <= 0) {
return;
}
int offset = (int) (mCurrentPositionOffset * mTabsContainer.getChildAt(mCurrentTab).getWidth());
/**当前Tab的left+当前Tab的Width乘以positionOffset*/
int newScrollX = mTabsContainer.getChildAt(mCurrentTab).getLeft() + offset;
if (mCurrentTab > 0 || offset > 0) {
/**HorizontalScrollView移动到当前tab,并居中*/
newScrollX -= getWidth() / 2 - getPaddingLeft();
calcIndicatorRect();
newScrollX += ((mTabRect.right - mTabRect.left) / 2);
}
if (newScrollX != mLastScrollX) {
mLastScrollX = newScrollX;
/** scrollToint x,int y:x,y,
* x:x
* y:y
*/
scrollTo(newScrollX, 0);
}
}
private void updateTabSelection(int position) {
for (int i = 0; i < mTabCount; ++i) {
View tabView = mTabsContainer.getChildAt(i);
final boolean isSelect = i == position;
TextView tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
if (tab_title != null) {
tab_title.setTextColor(isSelect ? mTextSelectColor : mTextUnselectColor);
if (mTextBold == TEXT_BOLD_WHEN_SELECT) {
tab_title.getPaint().setFakeBoldText(isSelect);
}
}
}
}
private float margin;
private void calcIndicatorRect() {
View currentTabView = mTabsContainer.getChildAt(this.mCurrentTab);
float left = currentTabView.getLeft();
float right = currentTabView.getRight();
//for mIndicatorWidthEqualTitle
if (mIndicatorStyle == STYLE_NORMAL && mIndicatorWidthEqualTitle) {
TextView tab_title = (TextView) currentTabView.findViewById(R.id.tv_tab_title);
mTextPaint.setTextSize(mTextsize);
float textWidth = mTextPaint.measureText(tab_title.getText().toString());
margin = (right - left - textWidth) / 2;
}
if (this.mCurrentTab < mTabCount - 1) {
View nextTabView = mTabsContainer.getChildAt(this.mCurrentTab + 1);
float nextTabLeft = nextTabView.getLeft();
float nextTabRight = nextTabView.getRight();
left = left + mCurrentPositionOffset * (nextTabLeft - left);
right = right + mCurrentPositionOffset * (nextTabRight - right);
//for mIndicatorWidthEqualTitle
if (mIndicatorStyle == STYLE_NORMAL && mIndicatorWidthEqualTitle) {
TextView next_tab_title = (TextView) nextTabView.findViewById(R.id.tv_tab_title);
mTextPaint.setTextSize(mTextsize);
float nextTextWidth = mTextPaint.measureText(next_tab_title.getText().toString());
float nextMargin = (nextTabRight - nextTabLeft - nextTextWidth) / 2;
margin = margin + mCurrentPositionOffset * (nextMargin - margin);
}
}
mIndicatorRect.left = (int) left;
mIndicatorRect.right = (int) right;
//for mIndicatorWidthEqualTitle
if (mIndicatorStyle == STYLE_NORMAL && mIndicatorWidthEqualTitle) {
mIndicatorRect.left = (int) (left + margin - 1);
mIndicatorRect.right = (int) (right - margin - 1);
}
mTabRect.left = (int) left;
mTabRect.right = (int) right;
if (mIndicatorWidth < 0) { //indicatorWidth小于0时,原jpardogo's PagerSlidingTabStrip
} else {//indicatorWidth大于0时,圆角矩形以及三角形
float indicatorLeft = currentTabView.getLeft() + (currentTabView.getWidth() - mIndicatorWidth) / 2;
if (this.mCurrentTab < mTabCount - 1) {
View nextTab = mTabsContainer.getChildAt(this.mCurrentTab + 1);
indicatorLeft = indicatorLeft + mCurrentPositionOffset * (currentTabView.getWidth() / 2 + nextTab.getWidth() / 2);
}
mIndicatorRect.left = (int) indicatorLeft;
mIndicatorRect.right = (int) (mIndicatorRect.left + mIndicatorWidth);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (isInEditMode() || mTabCount <= 0) {
return;
}
int height = getHeight();
int paddingLeft = getPaddingLeft();
// draw divider
if (mDividerWidth > 0) {
mDividerPaint.setStrokeWidth(mDividerWidth);
mDividerPaint.setColor(mDividerColor);
for (int i = 0; i < mTabCount - 1; i++) {
View tab = mTabsContainer.getChildAt(i);
canvas.drawLine(paddingLeft + tab.getRight(), mDividerPadding, paddingLeft + tab.getRight(), height - mDividerPadding, mDividerPaint);
}
}
// draw underline
if (mUnderlineHeight > 0) {
mRectPaint.setColor(mUnderlineColor);
if (mUnderlineGravity == Gravity.BOTTOM) {
canvas.drawRect(paddingLeft, height - mUnderlineHeight, mTabsContainer.getWidth() + paddingLeft, height, mRectPaint);
} else {
canvas.drawRect(paddingLeft, 0, mTabsContainer.getWidth() + paddingLeft, mUnderlineHeight, mRectPaint);
}
}
//draw indicator line
calcIndicatorRect();
if (mIndicatorStyle == STYLE_TRIANGLE) {
if (mIndicatorHeight > 0) {
mTrianglePaint.setColor(mIndicatorColor);
mTrianglePath.reset();
mTrianglePath.moveTo(paddingLeft + mIndicatorRect.left, height);
mTrianglePath.lineTo(paddingLeft + mIndicatorRect.left / 2 + mIndicatorRect.right / 2, height - mIndicatorHeight);
mTrianglePath.lineTo(paddingLeft + mIndicatorRect.right, height);
mTrianglePath.close();
canvas.drawPath(mTrianglePath, mTrianglePaint);
}
} else if (mIndicatorStyle == STYLE_BLOCK) {
if (mIndicatorHeight < 0) {
mIndicatorHeight = height - mIndicatorMarginTop - mIndicatorMarginBottom;
} else {
}
if (mIndicatorHeight > 0) {
if (mIndicatorCornerRadius < 0 || mIndicatorCornerRadius > mIndicatorHeight / 2) {
mIndicatorCornerRadius = mIndicatorHeight / 2;
}
mIndicatorDrawable.setColor(mIndicatorColor);
mIndicatorDrawable.setBounds(paddingLeft + (int) mIndicatorMarginLeft + mIndicatorRect.left,
(int) mIndicatorMarginTop, (int) (paddingLeft + mIndicatorRect.right - mIndicatorMarginRight),
(int) (mIndicatorMarginTop + mIndicatorHeight));
mIndicatorDrawable.setCornerRadius(mIndicatorCornerRadius);
mIndicatorDrawable.draw(canvas);
}
} else {
/* mRectPaint.setColor(mIndicatorColor);
calcIndicatorRect();
canvas.drawRect(getPaddingLeft() + mIndicatorRect.left, getHeight() - mIndicatorHeight,
mIndicatorRect.right + getPaddingLeft(), getHeight(), mRectPaint);*/
if (mIndicatorHeight > 0) {
mIndicatorDrawable.setColor(mIndicatorColor);
if (mIndicatorGravity == Gravity.BOTTOM) {
mIndicatorDrawable.setBounds(paddingLeft + (int) mIndicatorMarginLeft + mIndicatorRect.left,
height - (int) mIndicatorHeight - (int) mIndicatorMarginBottom,
paddingLeft + mIndicatorRect.right - (int) mIndicatorMarginRight,
height - (int) mIndicatorMarginBottom);
} else {
mIndicatorDrawable.setBounds(paddingLeft + (int) mIndicatorMarginLeft + mIndicatorRect.left,
(int) mIndicatorMarginTop,
paddingLeft + mIndicatorRect.right - (int) mIndicatorMarginRight,
(int) mIndicatorHeight + (int) mIndicatorMarginTop);
}
mIndicatorDrawable.setCornerRadius(mIndicatorCornerRadius);
mIndicatorDrawable.draw(canvas);
}
}
}
//setter and getter
public void setCurrentTab(int currentTab) {
this.mCurrentTab = currentTab;
mViewPager.setCurrentItem(currentTab);
}
public void setCurrentTab(int currentTab, boolean smoothScroll) {
this.mCurrentTab = currentTab;
mViewPager.setCurrentItem(currentTab, smoothScroll);
}
public void setIndicatorStyle(int indicatorStyle) {
this.mIndicatorStyle = indicatorStyle;
invalidate();
}
public void setTabPadding(float tabPadding) {
this.mTabPadding = dp2px(tabPadding);
updateTabStyles();
}
public void setTabSpaceEqual(boolean tabSpaceEqual) {
this.mTabSpaceEqual = tabSpaceEqual;
updateTabStyles();
}
public void setTabWidth(float tabWidth) {
this.mTabWidth = dp2px(tabWidth);
updateTabStyles();
}
public void setIndicatorColor(int indicatorColor) {
this.mIndicatorColor = indicatorColor;
invalidate();
}
public void setIndicatorHeight(float indicatorHeight) {
this.mIndicatorHeight = dp2px(indicatorHeight);
invalidate();
}
public void setIndicatorWidth(float indicatorWidth) {
this.mIndicatorWidth = dp2px(indicatorWidth);
invalidate();
}
public void setIndicatorCornerRadius(float indicatorCornerRadius) {
this.mIndicatorCornerRadius = dp2px(indicatorCornerRadius);
invalidate();
}
public void setIndicatorGravity(int indicatorGravity) {
this.mIndicatorGravity = indicatorGravity;
invalidate();
}
public void setIndicatorMargin(float indicatorMarginLeft, float indicatorMarginTop,
float indicatorMarginRight, float indicatorMarginBottom) {
this.mIndicatorMarginLeft = dp2px(indicatorMarginLeft);
this.mIndicatorMarginTop = dp2px(indicatorMarginTop);
this.mIndicatorMarginRight = dp2px(indicatorMarginRight);
this.mIndicatorMarginBottom = dp2px(indicatorMarginBottom);
invalidate();
}
public void setIndicatorWidthEqualTitle(boolean indicatorWidthEqualTitle) {
this.mIndicatorWidthEqualTitle = indicatorWidthEqualTitle;
invalidate();
}
public void setUnderlineColor(int underlineColor) {
this.mUnderlineColor = underlineColor;
invalidate();
}
public void setUnderlineHeight(float underlineHeight) {
this.mUnderlineHeight = dp2px(underlineHeight);
invalidate();
}
public void setUnderlineGravity(int underlineGravity) {
this.mUnderlineGravity = underlineGravity;
invalidate();
}
public void setDividerColor(int dividerColor) {
this.mDividerColor = dividerColor;
invalidate();
}
public void setDividerWidth(float dividerWidth) {
this.mDividerWidth = dp2px(dividerWidth);
invalidate();
}
public void setDividerPadding(float dividerPadding) {
this.mDividerPadding = dp2px(dividerPadding);
invalidate();
}
public void setTextsize(float textsize) {
this.mTextsize = sp2px(textsize);
updateTabStyles();
}
public void setTextSelectColor(int textSelectColor) {
this.mTextSelectColor = textSelectColor;
updateTabStyles();
}
public void setTextUnselectColor(int textUnselectColor) {
this.mTextUnselectColor = textUnselectColor;
updateTabStyles();
}
public void setTextBold(int textBold) {
this.mTextBold = textBold;
updateTabStyles();
}
public void setTextAllCaps(boolean textAllCaps) {
this.mTextAllCaps = textAllCaps;
updateTabStyles();
}
public int getTabCount() {
return mTabCount;
}
public int getCurrentTab() {
return mCurrentTab;
}
public int getIndicatorStyle() {
return mIndicatorStyle;
}
public float getTabPadding() {
return mTabPadding;
}
public boolean isTabSpaceEqual() {
return mTabSpaceEqual;
}
public float getTabWidth() {
return mTabWidth;
}
public int getIndicatorColor() {
return mIndicatorColor;
}
public float getIndicatorHeight() {
return mIndicatorHeight;
}
public float getIndicatorWidth() {
return mIndicatorWidth;
}
public float getIndicatorCornerRadius() {
return mIndicatorCornerRadius;
}
public float getIndicatorMarginLeft() {
return mIndicatorMarginLeft;
}
public float getIndicatorMarginTop() {
return mIndicatorMarginTop;
}
public float getIndicatorMarginRight() {
return mIndicatorMarginRight;
}
public float getIndicatorMarginBottom() {
return mIndicatorMarginBottom;
}
public int getUnderlineColor() {
return mUnderlineColor;
}
public float getUnderlineHeight() {
return mUnderlineHeight;
}
public int getDividerColor() {
return mDividerColor;
}
public float getDividerWidth() {
return mDividerWidth;
}
public float getDividerPadding() {
return mDividerPadding;
}
public float getTextsize() {
return mTextsize;
}
public int getTextSelectColor() {
return mTextSelectColor;
}
public int getTextUnselectColor() {
return mTextUnselectColor;
}
public int getTextBold() {
return mTextBold;
}
public boolean isTextAllCaps() {
return mTextAllCaps;
}
public TextView getTitleView(int tab) {
View tabView = mTabsContainer.getChildAt(tab);
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
return tv_tab_title;
}
//setter and getter
// show MsgTipView
private Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private SparseArray<Boolean> mInitSetMap = new SparseArray<>();
/**
*
*
* @param position tab
* @param num num0,num0
*/
public void showMsg(int position, int num) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
UnreadMsgUtils.show(tipView, num);
if (mInitSetMap.get(position) != null && mInitSetMap.get(position)) {
return;
}
setMsgMargin(position, 4, 2);
mInitSetMap.put(position, true);
}
}
/**
*
*
* @param position tab
*/
public void showDot(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
showMsg(position, 0);
}
/** 隐藏未读消息 */
public void hideMsg(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
tipView.setVisibility(View.GONE);
}
}
/** 设置未读消息偏移,原点为文字的右上角.当控件高度固定,消息提示位置易控制,显示效果佳 */
public void setMsgMargin(int position, float leftPadding, float bottomPadding) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
if (tipView != null) {
TextView tv_tab_title = (TextView) tabView.findViewById(R.id.tv_tab_title);
mTextPaint.setTextSize(mTextsize);
float textWidth = mTextPaint.measureText(tv_tab_title.getText().toString());
float textHeight = mTextPaint.descent() - mTextPaint.ascent();
MarginLayoutParams lp = (MarginLayoutParams) tipView.getLayoutParams();
lp.leftMargin = mTabWidth >= 0 ? (int) (mTabWidth / 2 + textWidth / 2 + dp2px(leftPadding)) : (int) (mTabPadding + textWidth + dp2px(leftPadding));
lp.topMargin = mHeight > 0 ? (int) (mHeight - textHeight) / 2 - dp2px(bottomPadding) : 0;
tipView.setLayoutParams(lp);
}
}
/** 当前类只提供了少许设置未读消息属性的方法,可以通过该方法获取MsgView对象从而各种设置 */
public MsgView getMsgView(int position) {
if (position >= mTabCount) {
position = mTabCount - 1;
}
View tabView = mTabsContainer.getChildAt(position);
MsgView tipView = (MsgView) tabView.findViewById(R.id.rtv_msg_tip);
return tipView;
}
private OnTabSelectListener mListener;
public void setOnTabSelectListener(OnTabSelectListener listener) {
this.mListener = listener;
}
class InnerPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments = new ArrayList<>();
private String[] titles;
public InnerPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments, String[] titles) {
super(fm);
this.fragments = fragments;
this.titles = titles;
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// 覆写destroyItem并且空实现,这样每个Fragment中的视图就不会被销毁
// super.destroyItem(container, position, object);
}
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
}
@Override
protected Parcelable onSaveInstanceState() {
Bundle bundle = new Bundle();
bundle.putParcelable("instanceState", super.onSaveInstanceState());
bundle.putInt("mCurrentTab", mCurrentTab);
return bundle;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (state instanceof Bundle) {
Bundle bundle = (Bundle) state;
mCurrentTab = bundle.getInt("mCurrentTab");
state = bundle.getParcelable("instanceState");
if (mCurrentTab != 0 && mTabsContainer.getChildCount() > 0) {
updateTabSelection(mCurrentTab);
scrollToCurrentTab();
}
}
super.onRestoreInstanceState(state);
}
protected int dp2px(float dp) {
final float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
protected int sp2px(float sp) {
final float scale = this.mContext.getResources().getDisplayMetrics().scaledDensity;
return (int) (sp * scale + 0.5f);
}
}

@ -0,0 +1,13 @@
package com.flyco.tablayout.listener;
import android.support.annotation.DrawableRes;
public interface CustomTabEntity {
String getTabTitle();
@DrawableRes
int getTabSelectedIcon();
@DrawableRes
int getTabUnselectedIcon();
}

@ -0,0 +1,6 @@
package com.flyco.tablayout.listener;
public interface OnTabSelectListener {
void onTabSelect(int position);
void onTabReselect(int position);
}

@ -0,0 +1,55 @@
package com.flyco.tablayout.utils;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import java.util.ArrayList;
public class FragmentChangeManager {
private FragmentManager mFragmentManager;
private int mContainerViewId;
/** Fragment切换数组 */
private ArrayList<Fragment> mFragments;
/** 当前选中的Tab */
private int mCurrentTab;
public FragmentChangeManager(FragmentManager fm, int containerViewId, ArrayList<Fragment> fragments) {
this.mFragmentManager = fm;
this.mContainerViewId = containerViewId;
this.mFragments = fragments;
initFragments();
}
/** 初始化fragments */
private void initFragments() {
for (Fragment fragment : mFragments) {
mFragmentManager.beginTransaction().add(mContainerViewId, fragment).hide(fragment).commit();
}
setFragments(0);
}
/** 界面切换控制 */
public void setFragments(int index) {
for (int i = 0; i < mFragments.size(); i++) {
FragmentTransaction ft = mFragmentManager.beginTransaction();
Fragment fragment = mFragments.get(i);
if (i == index) {
ft.show(fragment);
} else {
ft.hide(fragment);
}
ft.commit();
}
mCurrentTab = index;
}
public int getCurrentTab() {
return mCurrentTab;
}
public Fragment getCurrentFragment() {
return mFragments.get(mCurrentTab);
}
}

@ -0,0 +1,58 @@
package com.flyco.tablayout.utils;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.RelativeLayout;
import com.flyco.tablayout.widget.MsgView;
/**
* View,:
* ,
* ,,
* ,99+
*/
public class UnreadMsgUtils {
public static void show(MsgView msgView, int num) {
if (msgView == null) {
return;
}
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) msgView.getLayoutParams();
DisplayMetrics dm = msgView.getResources().getDisplayMetrics();
msgView.setVisibility(View.VISIBLE);
if (num <= 0) {//圆点,设置默认宽高
msgView.setStrokeWidth(0);
msgView.setText("");
lp.width = (int) (5 * dm.density);
lp.height = (int) (5 * dm.density);
msgView.setLayoutParams(lp);
} else {
lp.height = (int) (18 * dm.density);
if (num > 0 && num < 10) {//圆
lp.width = (int) (18 * dm.density);
msgView.setText(num + "");
} else if (num > 9 && num < 100) {//圆角矩形,圆角是高度的一半,设置默认padding
lp.width = RelativeLayout.LayoutParams.WRAP_CONTENT;
msgView.setPadding((int) (6 * dm.density), 0, (int) (6 * dm.density), 0);
msgView.setText(num + "");
} else {//数字超过两位,显示99+
lp.width = RelativeLayout.LayoutParams.WRAP_CONTENT;
msgView.setPadding((int) (6 * dm.density), 0, (int) (6 * dm.density), 0);
msgView.setText("99+");
}
msgView.setLayoutParams(lp);
}
}
public static void setSize(MsgView rtv, int size) {
if (rtv == null) {
return;
}
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) rtv.getLayoutParams();
lp.width = size;
lp.height = size;
rtv.setLayoutParams(lp);
}
}

@ -0,0 +1,157 @@
package com.flyco.tablayout.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Build;
import android.util.AttributeSet;
import android.widget.TextView;
import com.flyco.tablayout.R;
/** 用于需要圆角矩形框背景的TextView的情况,减少直接使用TextView时引入的shape资源文件 */
public class MsgView extends TextView {
private Context context;
private GradientDrawable gd_background = new GradientDrawable();
private int backgroundColor;
private int cornerRadius;
private int strokeWidth;
private int strokeColor;
private boolean isRadiusHalfHeight;
private boolean isWidthHeightEqual;
public MsgView(Context context) {
this(context, null);
}
public MsgView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MsgView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
obtainAttributes(context, attrs);
}
private void obtainAttributes(Context context, AttributeSet attrs) {
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MsgView);
backgroundColor = ta.getColor(R.styleable.MsgView_mv_backgroundColor, Color.TRANSPARENT);
cornerRadius = ta.getDimensionPixelSize(R.styleable.MsgView_mv_cornerRadius, 0);
strokeWidth = ta.getDimensionPixelSize(R.styleable.MsgView_mv_strokeWidth, 0);
strokeColor = ta.getColor(R.styleable.MsgView_mv_strokeColor, Color.TRANSPARENT);
isRadiusHalfHeight = ta.getBoolean(R.styleable.MsgView_mv_isRadiusHalfHeight, false);
isWidthHeightEqual = ta.getBoolean(R.styleable.MsgView_mv_isWidthHeightEqual, false);
ta.recycle();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (isWidthHeightEqual() && getWidth() > 0 && getHeight() > 0) {
int max = Math.max(getWidth(), getHeight());
int measureSpec = MeasureSpec.makeMeasureSpec(max, MeasureSpec.EXACTLY);
super.onMeasure(measureSpec, measureSpec);
return;
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (isRadiusHalfHeight()) {
setCornerRadius(getHeight() / 2);
} else {
setBgSelector();
}
}
public void setBackgroundColor(int backgroundColor) {
this.backgroundColor = backgroundColor;
setBgSelector();
}
public void setCornerRadius(int cornerRadius) {
this.cornerRadius = dp2px(cornerRadius);
setBgSelector();
}
public void setStrokeWidth(int strokeWidth) {
this.strokeWidth = dp2px(strokeWidth);
setBgSelector();
}
public void setStrokeColor(int strokeColor) {
this.strokeColor = strokeColor;
setBgSelector();
}
public void setIsRadiusHalfHeight(boolean isRadiusHalfHeight) {
this.isRadiusHalfHeight = isRadiusHalfHeight;
setBgSelector();
}
public void setIsWidthHeightEqual(boolean isWidthHeightEqual) {
this.isWidthHeightEqual = isWidthHeightEqual;
setBgSelector();
}
public int getBackgroundColor() {
return backgroundColor;
}
public int getCornerRadius() {
return cornerRadius;
}
public int getStrokeWidth() {
return strokeWidth;
}
public int getStrokeColor() {
return strokeColor;
}
public boolean isRadiusHalfHeight() {
return isRadiusHalfHeight;
}
public boolean isWidthHeightEqual() {
return isWidthHeightEqual;
}
protected int dp2px(float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
protected int sp2px(float sp) {
final float scale = this.context.getResources().getDisplayMetrics().scaledDensity;
return (int) (sp * scale + 0.5f);
}
private void setDrawable(GradientDrawable gd, int color, int strokeColor) {
gd.setColor(color);
gd.setCornerRadius(cornerRadius);
gd.setStroke(strokeWidth, strokeColor);
}
public void setBgSelector() {
StateListDrawable bg = new StateListDrawable();
setDrawable(gd_background, backgroundColor, strokeColor);
bg.addState(new int[]{-android.R.attr.state_pressed}, gd_background);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {//16
setBackground(bg);
} else {
//noinspection deprecation
setBackgroundDrawable(bg);
}
}
}

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false">
<TextView
android:id="@+id/tv_tab_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:singleLine="true"/>
<com.flyco.tablayout.widget.MsgView
android:id="@+id/rtv_msg_tip"
xmlns:mv="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="11.5sp"
android:visibility="gone"
mv:mv_backgroundColor="#FD481F"
mv:mv_isRadiusHalfHeight="true"
mv:mv_strokeColor="#ffffff"
mv:mv_strokeWidth="1dp"/>
</RelativeLayout>

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false">
<LinearLayout
android:id="@+id/ll_tap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_tab_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"/>
<ImageView
android:id="@+id/iv_tab_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<com.flyco.tablayout.widget.MsgView
android:id="@+id/rtv_msg_tip"
xmlns:mv="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ll_tap"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="11.5sp"
android:visibility="gone"
mv:mv_backgroundColor="#FD481F"
mv:mv_isRadiusHalfHeight="true"
mv:mv_strokeColor="#ffffff"
mv:mv_strokeWidth="1dp"/>
</RelativeLayout>

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false">
<LinearLayout
android:id="@+id/ll_tap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_tab_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_tab_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
<com.flyco.tablayout.widget.MsgView
android:layout_toRightOf="@+id/ll_tap"
android:id="@+id/rtv_msg_tip"
xmlns:mv="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="11.5sp"
android:visibility="gone"
mv:mv_backgroundColor="#FD481F"
mv:mv_isRadiusHalfHeight="true"
mv:mv_strokeColor="#ffffff"
mv:mv_strokeWidth="1dp"/>
</RelativeLayout>

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false">
<LinearLayout
android:id="@+id/ll_tap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_tab_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"/>
<ImageView
android:id="@+id/iv_tab_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<com.flyco.tablayout.widget.MsgView
android:id="@+id/rtv_msg_tip"
xmlns:mv="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ll_tap"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="11.5sp"
android:visibility="gone"
mv:mv_backgroundColor="#FD481F"
mv:mv_isRadiusHalfHeight="true"
mv:mv_strokeColor="#ffffff"
mv:mv_strokeWidth="1dp"/>
</RelativeLayout>

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false">
<LinearLayout
android:id="@+id/ll_tap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_tab_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
<com.flyco.tablayout.widget.MsgView
android:layout_toRightOf="@+id/ll_tap"
android:id="@+id/rtv_msg_tip"
xmlns:mv="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="11.5sp"
android:visibility="gone"
mv:mv_backgroundColor="#FD481F"
mv:mv_isRadiusHalfHeight="true"
mv:mv_strokeColor="#ffffff"
mv:mv_strokeWidth="1dp"/>
</RelativeLayout>

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false">
<LinearLayout
android:id="@+id/ll_tap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_tab_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_tab_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
<com.flyco.tablayout.widget.MsgView
android:id="@+id/rtv_msg_tip"
xmlns:mv="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ll_tap"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="11.5sp"
android:visibility="gone"
mv:mv_backgroundColor="#FD481F"
mv:mv_isRadiusHalfHeight="true"
mv:mv_strokeColor="#ffffff"
mv:mv_strokeWidth="1dp"/>
</RelativeLayout>

@ -0,0 +1,225 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- indicator -->
<!-- 设置显示器颜色 -->
<attr name="tl_indicator_color" format="color"/>
<!-- 设置显示器高度 -->
<attr name="tl_indicator_height" format="dimension"/>
<!-- 设置显示器固定宽度 -->
<attr name="tl_indicator_width" format="dimension"/>
<!-- 设置显示器margin,当indicator_width大于0,无效 -->
<attr name="tl_indicator_margin_left" format="dimension"/>
<attr name="tl_indicator_margin_top" format="dimension"/>
<attr name="tl_indicator_margin_right" format="dimension"/>
<attr name="tl_indicator_margin_bottom" format="dimension"/>
<!-- 设置显示器圆角弧度-->
<attr name="tl_indicator_corner_radius" format="dimension"/>
<!-- 设置显示器上方还是下方,只对圆角矩形有用-->
<attr name="tl_indicator_gravity" format="enum">
<enum name="TOP" value="48"/>
<enum name="BOTTOM" value="80"/>
</attr>
<!-- 设置显示器为常规|三角形|背景色块|-->
<attr name="tl_indicator_style" format="enum">
<enum name="NORMAL" value="0"/>
<enum name="TRIANGLE" value="1"/>
<enum name="BLOCK" value="2"/>
</attr>
<!-- 设置显示器长度与title一样长,只有在STYLE_NORMAL并且indicatorWidth小于零有效-->
<attr name="tl_indicator_width_equal_title" format="boolean"/>
<!-- 设置显示器支持动画-->
<attr name="tl_indicator_anim_enable" format="boolean"/>
<!-- 设置显示器动画时间-->
<attr name="tl_indicator_anim_duration" format="integer"/>
<!-- 设置显示器支持动画回弹效果-->
<attr name="tl_indicator_bounce_enable" format="boolean"/>
<!-- underline -->
<!-- 设置下划线颜色 -->
<attr name="tl_underline_color" format="color"/>
<!-- 设置下划线高度 -->
<attr name="tl_underline_height" format="dimension"/>
<!-- 设置下划线上方还是下方-->
<attr name="tl_underline_gravity" format="enum">
<enum name="TOP" value="48"/>
<enum name="BOTTOM" value="80"/>
</attr>
<!-- divider -->
<!-- 设置分割线颜色 -->
<attr name="tl_divider_color" format="color"/>
<!-- 设置分割线宽度 -->
<attr name="tl_divider_width" format="dimension"/>
<!-- 设置分割线的paddingTop和paddingBottom -->
<attr name="tl_divider_padding" format="dimension"/>
<!-- tab -->
<!-- 设置tab的paddingLeft和paddingRight -->
<attr name="tl_tab_padding" format="dimension"/>
<!-- 设置tab大小等分 -->
<attr name="tl_tab_space_equal" format="boolean"/>
<!-- 设置tab固定大小 -->
<attr name="tl_tab_width" format="dimension"/>
<!-- title -->
<!-- 设置字体大小 -->
<attr name="tl_textsize" format="dimension"/>
<!-- 设置字体选中颜色 -->
<attr name="tl_textSelectColor" format="color"/>
<!-- 设置字体未选中颜色 -->
<attr name="tl_textUnselectColor" format="color"/>
<!-- 设置字体加粗 -->
<attr name="tl_textBold" format="enum">
<enum name="NONE" value="0"/>
<enum name="SELECT" value="1"/>
<enum name="BOTH" value="2"/>
</attr>
<!-- 设置字体全大写 -->
<attr name="tl_textAllCaps" format="boolean"/>
<declare-styleable name="SlidingTabLayout">
<!-- indicator -->
<attr name="tl_indicator_color"/>
<attr name="tl_indicator_height"/>
<attr name="tl_indicator_width"/>
<attr name="tl_indicator_margin_left"/>
<attr name="tl_indicator_margin_top"/>
<attr name="tl_indicator_margin_right"/>
<attr name="tl_indicator_margin_bottom"/>
<attr name="tl_indicator_corner_radius"/>
<attr name="tl_indicator_gravity"/>
<attr name="tl_indicator_style"/>
<attr name="tl_indicator_width_equal_title"/>
<!-- underline -->
<attr name="tl_underline_color"/>
<attr name="tl_underline_height"/>
<attr name="tl_underline_gravity"/>
<!-- divider -->
<attr name="tl_divider_color"/>
<attr name="tl_divider_width"/>
<attr name="tl_divider_padding"/>
<!-- tab -->
<attr name="tl_tab_padding"/>
<attr name="tl_tab_space_equal"/>
<attr name="tl_tab_width"/>
<!-- title -->
<attr name="tl_textsize"/>
<attr name="tl_textSelectColor"/>
<attr name="tl_textUnselectColor"/>
<attr name="tl_textBold"/>
<attr name="tl_textAllCaps"/>
</declare-styleable>
<declare-styleable name="CommonTabLayout">
<!-- indicator -->
<attr name="tl_indicator_color"/>
<attr name="tl_indicator_height"/>
<attr name="tl_indicator_width"/>
<attr name="tl_indicator_margin_left"/>
<attr name="tl_indicator_margin_top"/>
<attr name="tl_indicator_margin_right"/>
<attr name="tl_indicator_margin_bottom"/>
<attr name="tl_indicator_corner_radius"/>
<attr name="tl_indicator_gravity"/>
<attr name="tl_indicator_style"/>
<attr name="tl_indicator_anim_enable"/>
<attr name="tl_indicator_anim_duration"/>
<attr name="tl_indicator_bounce_enable"/>
<!-- underline -->
<attr name="tl_underline_color"/>
<attr name="tl_underline_height"/>
<attr name="tl_underline_gravity"/>
<!-- divider -->
<attr name="tl_divider_color"/>
<attr name="tl_divider_width"/>
<attr name="tl_divider_padding"/>
<!-- tab -->
<attr name="tl_tab_padding"/>
<attr name="tl_tab_space_equal"/>
<attr name="tl_tab_width"/>
<!-- title -->
<attr name="tl_textsize"/>
<attr name="tl_textSelectColor"/>
<attr name="tl_textUnselectColor"/>
<attr name="tl_textBold"/>
<attr name="tl_textAllCaps"/>
<!-- icon -->
<!-- 设置icon宽度 -->
<attr name="tl_iconWidth" format="dimension"/>
<!-- 设置icon高度 -->
<attr name="tl_iconHeight" format="dimension"/>
<!-- 设置icon是否可见 -->
<attr name="tl_iconVisible" format="boolean"/>
<!-- 设置icon显示位置,对应Gravity中常量值 -->
<attr name="tl_iconGravity" format="enum">
<enum name="LEFT" value="3"/>
<enum name="TOP" value="48"/>
<enum name="RIGHT" value="5"/>
<enum name="BOTTOM" value="80"/>
</attr>
<!-- 设置icon与文字间距 -->
<attr name="tl_iconMargin" format="dimension"/>
</declare-styleable>
<declare-styleable name="SegmentTabLayout">
<!-- indicator -->
<attr name="tl_indicator_color"/>
<attr name="tl_indicator_height"/>
<attr name="tl_indicator_margin_left"/>
<attr name="tl_indicator_margin_top"/>
<attr name="tl_indicator_margin_right"/>
<attr name="tl_indicator_margin_bottom"/>
<attr name="tl_indicator_corner_radius"/>
<attr name="tl_indicator_anim_enable"/>
<attr name="tl_indicator_anim_duration"/>
<attr name="tl_indicator_bounce_enable"/>
<!-- divider -->
<attr name="tl_divider_color"/>
<attr name="tl_divider_width"/>
<attr name="tl_divider_padding"/>
<!-- tab -->
<attr name="tl_tab_padding"/>
<attr name="tl_tab_space_equal"/>
<attr name="tl_tab_width"/>
<!-- title -->
<attr name="tl_textsize"/>
<attr name="tl_textSelectColor"/>
<attr name="tl_textUnselectColor"/>
<attr name="tl_textBold"/>
<attr name="tl_textAllCaps"/>
<attr name="tl_bar_color" format="color"/>
<attr name="tl_bar_stroke_color" format="color"/>
<attr name="tl_bar_stroke_width" format="dimension"/>
</declare-styleable>
<declare-styleable name="MsgView">
<!-- 圆角矩形背景色 -->
<attr name="mv_backgroundColor" format="color"/>
<!-- 圆角弧度,单位dp-->
<attr name="mv_cornerRadius" format="dimension"/>
<!-- 圆角弧度,单位dp-->
<attr name="mv_strokeWidth" format="dimension"/>
<!-- 圆角边框颜色-->
<attr name="mv_strokeColor" format="color"/>
<!-- 圆角弧度是高度一半-->
<attr name="mv_isRadiusHalfHeight" format="boolean"/>
<!-- 圆角矩形宽高相等,取较宽高中大值-->
<attr name="mv_isWidthHeightEqual" format="boolean"/>
</declare-styleable>
</resources>

@ -0,0 +1,22 @@
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:support-v4:23.3.0'
}

@ -0,0 +1,13 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.viewpagerindicator.test;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.viewpagerindicator.test";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = -1;
public static final String VERSION_NAME = "";
}

@ -0,0 +1,18 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.viewpagerindicator;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "com.viewpagerindicator";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "com.viewpagerindicator";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 65;
public static final String VERSION_NAME = "2.4.1";
}

@ -0,0 +1,13 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.viewpagerindicator;
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "com.viewpagerindicator";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 65;
public static final String VERSION_NAME = "2.4.1";
}

@ -0,0 +1,168 @@
/* 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.viewpagerindicator;
public final class R {
public static final class attr {
public static final int centered = 0x7f010000;
public static final int clipPadding = 0x7f01000b;
public static final int fadeDelay = 0x7f010017;
public static final int fadeLength = 0x7f010018;
public static final int fades = 0x7f010016;
public static final int fillColor = 0x7f010004;
public static final int footerColor = 0x7f01000c;
public static final int footerIndicatorHeight = 0x7f01000f;
public static final int footerIndicatorStyle = 0x7f01000e;
public static final int footerIndicatorUnderlinePadding = 0x7f010010;
public static final int footerLineHeight = 0x7f01000d;
public static final int footerPadding = 0x7f010011;
public static final int gapWidth = 0x7f01000a;
public static final int linePosition = 0x7f010012;
public static final int lineWidth = 0x7f010009;
public static final int pageColor = 0x7f010005;
public static final int radius = 0x7f010006;
public static final int selectedBold = 0x7f010013;
public static final int selectedColor = 0x7f010001;
public static final int snap = 0x7f010007;
public static final int strokeColor = 0x7f010008;
public static final int strokeWidth = 0x7f010002;
public static final int titlePadding = 0x7f010014;
public static final int topPadding = 0x7f010015;
public static final int unselectedColor = 0x7f010003;
public static final int vpiCirclePageIndicatorStyle = 0x7f010019;
public static final int vpiIconPageIndicatorStyle = 0x7f01001a;
public static final int vpiLinePageIndicatorStyle = 0x7f01001b;
public static final int vpiTabPageIndicatorStyle = 0x7f01001d;
public static final int vpiTitlePageIndicatorStyle = 0x7f01001c;
public static final int vpiUnderlinePageIndicatorStyle = 0x7f01001e;
}
public static final class bool {
public static final int default_circle_indicator_centered = 0x7f030000;
public static final int default_circle_indicator_snap = 0x7f030001;
public static final int default_line_indicator_centered = 0x7f030002;
public static final int default_title_indicator_selected_bold = 0x7f030003;
public static final int default_underline_indicator_fades = 0x7f030004;
}
public static final class color {
public static final int default_circle_indicator_fill_color = 0x7f040000;
public static final int default_circle_indicator_page_color = 0x7f040001;
public static final int default_circle_indicator_stroke_color = 0x7f040002;
public static final int default_line_indicator_selected_color = 0x7f040003;
public static final int default_line_indicator_unselected_color = 0x7f040004;
public static final int default_title_indicator_footer_color = 0x7f040005;
public static final int default_title_indicator_selected_color = 0x7f040006;
public static final int default_title_indicator_text_color = 0x7f040007;
public static final int default_underline_indicator_selected_color = 0x7f040008;
public static final int vpi__background_holo_dark = 0x7f040009;
public static final int vpi__background_holo_light = 0x7f04000a;
public static final int vpi__bright_foreground_disabled_holo_dark = 0x7f04000b;
public static final int vpi__bright_foreground_disabled_holo_light = 0x7f04000c;
public static final int vpi__bright_foreground_holo_dark = 0x7f04000d;
public static final int vpi__bright_foreground_holo_light = 0x7f04000e;
public static final int vpi__bright_foreground_inverse_holo_dark = 0x7f04000f;
public static final int vpi__bright_foreground_inverse_holo_light = 0x7f040010;
public static final int vpi__dark_theme = 0x7f040011;
public static final int vpi__light_theme = 0x7f040012;
}
public static final class dimen {
public static final int default_circle_indicator_radius = 0x7f050000;
public static final int default_circle_indicator_stroke_width = 0x7f050001;
public static final int default_line_indicator_gap_width = 0x7f050002;
public static final int default_line_indicator_line_width = 0x7f050003;
public static final int default_line_indicator_stroke_width = 0x7f050004;
public static final int default_title_indicator_clip_padding = 0x7f050005;
public static final int default_title_indicator_footer_indicator_height = 0x7f050006;
public static final int default_title_indicator_footer_indicator_underline_padding = 0x7f050007;
public static final int default_title_indicator_footer_line_height = 0x7f050008;
public static final int default_title_indicator_footer_padding = 0x7f050009;
public static final int default_title_indicator_text_size = 0x7f05000a;
public static final int default_title_indicator_title_padding = 0x7f05000b;
public static final int default_title_indicator_top_padding = 0x7f05000c;
}
public static final class drawable {
public static final int community_tab_subscript = 0x7f020000;
public static final int tab = 0x7f020001;
public static final int vpi__tab_indicator = 0x7f020002;
public static final int vpi__tab_selected_focused_holo = 0x7f020003;
public static final int vpi__tab_selected_holo = 0x7f020004;
public static final int vpi__tab_selected_pressed_holo = 0x7f020005;
public static final int vpi__tab_unselected_focused_holo = 0x7f020006;
public static final int vpi__tab_unselected_holo = 0x7f020007;
public static final int vpi__tab_unselected_pressed_holo = 0x7f020008;
public static final int vpi_text_tab_indicator = 0x7f020009;
}
public static final class id {
public static final int bottom = 0x7f080003;
public static final int none = 0x7f080000;
public static final int top = 0x7f080004;
public static final int triangle = 0x7f080001;
public static final int underline = 0x7f080002;
}
public static final class integer {
public static final int default_circle_indicator_orientation = 0x7f060000;
public static final int default_title_indicator_footer_indicator_style = 0x7f060001;
public static final int default_title_indicator_line_position = 0x7f060002;
public static final int default_underline_indicator_fade_delay = 0x7f060003;
public static final int default_underline_indicator_fade_length = 0x7f060004;
}
public static final class style {
public static final int TextAppearance_TabPageIndicator = 0x7f070000;
public static final int Theme_PageIndicatorDefaults = 0x7f070001;
public static final int Widget = 0x7f070002;
public static final int Widget_IconPageIndicator = 0x7f070003;
public static final int Widget_TabPageIndicator = 0x7f070004;
}
public static final class styleable {
public static final int[] CirclePageIndicator = { 0x010100c4, 0x010100d4, 0x7f010000, 0x7f010002, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008 };
public static final int CirclePageIndicator_android_background = 1;
public static final int CirclePageIndicator_android_orientation = 0;
public static final int CirclePageIndicator_centered = 2;
public static final int CirclePageIndicator_fillColor = 4;
public static final int CirclePageIndicator_pageColor = 5;
public static final int CirclePageIndicator_radius = 6;
public static final int CirclePageIndicator_snap = 7;
public static final int CirclePageIndicator_strokeColor = 8;
public static final int CirclePageIndicator_strokeWidth = 3;
public static final int[] LinePageIndicator = { 0x010100d4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010009, 0x7f01000a };
public static final int LinePageIndicator_android_background = 0;
public static final int LinePageIndicator_centered = 1;
public static final int LinePageIndicator_gapWidth = 6;
public static final int LinePageIndicator_lineWidth = 5;
public static final int LinePageIndicator_selectedColor = 2;
public static final int LinePageIndicator_strokeWidth = 3;
public static final int LinePageIndicator_unselectedColor = 4;
public static final int[] TitlePageIndicator = { 0x01010095, 0x01010098, 0x010100d4, 0x7f010001, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f, 0x7f010010, 0x7f010011, 0x7f010012, 0x7f010013, 0x7f010014, 0x7f010015 };
public static final int TitlePageIndicator_android_background = 2;
public static final int TitlePageIndicator_android_textColor = 1;
public static final int TitlePageIndicator_android_textSize = 0;
public static final int TitlePageIndicator_clipPadding = 4;
public static final int TitlePageIndicator_footerColor = 5;
public static final int TitlePageIndicator_footerIndicatorHeight = 8;
public static final int TitlePageIndicator_footerIndicatorStyle = 7;
public static final int TitlePageIndicator_footerIndicatorUnderlinePadding = 9;
public static final int TitlePageIndicator_footerLineHeight = 6;
public static final int TitlePageIndicator_footerPadding = 10;
public static final int TitlePageIndicator_linePosition = 11;
public static final int TitlePageIndicator_selectedBold = 12;
public static final int TitlePageIndicator_selectedColor = 3;
public static final int TitlePageIndicator_titlePadding = 13;
public static final int TitlePageIndicator_topPadding = 14;
public static final int[] UnderlinePageIndicator = { 0x010100d4, 0x7f010001, 0x7f010016, 0x7f010017, 0x7f010018 };
public static final int UnderlinePageIndicator_android_background = 0;
public static final int UnderlinePageIndicator_fadeDelay = 3;
public static final int UnderlinePageIndicator_fadeLength = 4;
public static final int UnderlinePageIndicator_fades = 2;
public static final int UnderlinePageIndicator_selectedColor = 1;
public static final int[] ViewPagerIndicator = { 0x7f010019, 0x7f01001a, 0x7f01001b, 0x7f01001c, 0x7f01001d, 0x7f01001e };
public static final int ViewPagerIndicator_vpiCirclePageIndicatorStyle = 0;
public static final int ViewPagerIndicator_vpiIconPageIndicatorStyle = 1;
public static final int ViewPagerIndicator_vpiLinePageIndicatorStyle = 2;
public static final int ViewPagerIndicator_vpiTabPageIndicatorStyle = 4;
public static final int ViewPagerIndicator_vpiTitlePageIndicatorStyle = 3;
public static final int ViewPagerIndicator_vpiUnderlinePageIndicatorStyle = 5;
}
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.viewpagerindicator"
android:versionCode="65"
android:versionName="2.4.1" > <!-- <uses-sdk android:minSdkVersion="4" /> -->
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
</manifest>

@ -0,0 +1 @@
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":65,"versionName":"2.4.1","enabled":true,"outputFile":"ViewPagerIndicator_library-debug.aar","fullName":"debug","baseName":"debug","dirName":""},"path":"AndroidManifest.xml","properties":{"packageId":"com.viewpagerindicator","split":""}}]

@ -0,0 +1,946 @@
[
{
"outputFile": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\incremental\\mergeDebugAndroidTestResources\\merged.dir\\values\\values.xml",
"map": [
{
"to": {
"startLine": 2,
"startColumn": 4,
"startOffset": 55,
"endColumn": 44,
"endOffset": 95
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 2,
"startColumn": 4,
"startOffset": 55,
"endColumn": 44,
"endOffset": 95
}
}
},
{
"to": {
"startLine": 3,
"startColumn": 4,
"startOffset": 100,
"endColumn": 47,
"endOffset": 143
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 3,
"startColumn": 4,
"startOffset": 100,
"endColumn": 47,
"endOffset": 143
}
}
},
{
"to": {
"startLine": 4,
"startColumn": 4,
"startOffset": 148,
"endColumn": 49,
"endOffset": 193
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 4,
"startColumn": 4,
"startOffset": 148,
"endColumn": 49,
"endOffset": 193
}
}
},
{
"to": {
"startLine": 5,
"startColumn": 4,
"startOffset": 198,
"endColumn": 49,
"endOffset": 243
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 5,
"startColumn": 4,
"startOffset": 198,
"endColumn": 49,
"endOffset": 243
}
}
},
{
"to": {
"startLine": 6,
"startColumn": 4,
"startOffset": 248,
"endColumn": 62,
"endOffset": 306
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 6,
"startColumn": 4,
"startOffset": 248,
"endColumn": 62,
"endOffset": 306
}
}
},
{
"to": {
"startLine": 7,
"startColumn": 4,
"startOffset": 311,
"endColumn": 59,
"endOffset": 366
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 7,
"startColumn": 4,
"startOffset": 311,
"endColumn": 59,
"endOffset": 366
}
}
},
{
"to": {
"startLine": 8,
"startColumn": 4,
"startOffset": 371,
"endColumn": 60,
"endOffset": 427
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 8,
"startColumn": 4,
"startOffset": 371,
"endColumn": 60,
"endOffset": 427
}
}
},
{
"to": {
"startLine": 9,
"startColumn": 4,
"startOffset": 432,
"endColumn": 66,
"endOffset": 494
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 9,
"startColumn": 4,
"startOffset": 432,
"endColumn": 66,
"endOffset": 494
}
}
},
{
"to": {
"startLine": 10,
"startColumn": 4,
"startOffset": 499,
"endColumn": 62,
"endOffset": 557
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 10,
"startColumn": 4,
"startOffset": 499,
"endColumn": 62,
"endOffset": 557
}
}
},
{
"to": {
"startLine": 11,
"startColumn": 4,
"startOffset": 562,
"endColumn": 71,
"endOffset": 629
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 11,
"startColumn": 4,
"startOffset": 562,
"endColumn": 71,
"endOffset": 629
}
}
},
{
"to": {
"startLine": 12,
"startColumn": 4,
"startOffset": 634,
"endColumn": 71,
"endOffset": 701
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 12,
"startColumn": 4,
"startOffset": 634,
"endColumn": 71,
"endOffset": 701
}
}
},
{
"to": {
"startLine": 13,
"startColumn": 4,
"startOffset": 706,
"endColumn": 73,
"endOffset": 775
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 13,
"startColumn": 4,
"startOffset": 706,
"endColumn": 73,
"endOffset": 775
}
}
},
{
"to": {
"startLine": 14,
"startColumn": 4,
"startOffset": 780,
"endColumn": 73,
"endOffset": 849
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 14,
"startColumn": 4,
"startOffset": 780,
"endColumn": 73,
"endOffset": 849
}
}
},
{
"to": {
"startLine": 15,
"startColumn": 4,
"startOffset": 854,
"endColumn": 75,
"endOffset": 925
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 15,
"startColumn": 4,
"startOffset": 854,
"endColumn": 75,
"endOffset": 925
}
}
},
{
"to": {
"startLine": 16,
"startColumn": 4,
"startOffset": 930,
"endColumn": 72,
"endOffset": 998
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 16,
"startColumn": 4,
"startOffset": 930,
"endColumn": 72,
"endOffset": 998
}
}
},
{
"to": {
"startLine": 17,
"startColumn": 4,
"startOffset": 1003,
"endColumn": 74,
"endOffset": 1073
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 17,
"startColumn": 4,
"startOffset": 1003,
"endColumn": 74,
"endOffset": 1073
}
}
},
{
"to": {
"startLine": 18,
"startColumn": 4,
"startOffset": 1078,
"endColumn": 70,
"endOffset": 1144
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 18,
"startColumn": 4,
"startOffset": 1078,
"endColumn": 70,
"endOffset": 1144
}
}
},
{
"to": {
"startLine": 19,
"startColumn": 4,
"startOffset": 1149,
"endColumn": 78,
"endOffset": 1223
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 19,
"startColumn": 4,
"startOffset": 1149,
"endColumn": 78,
"endOffset": 1223
}
}
},
{
"to": {
"startLine": 20,
"startColumn": 4,
"startOffset": 1228,
"endColumn": 61,
"endOffset": 1285
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 20,
"startColumn": 4,
"startOffset": 1228,
"endColumn": 61,
"endOffset": 1285
}
}
},
{
"to": {
"startLine": 21,
"startColumn": 4,
"startOffset": 1290,
"endColumn": 62,
"endOffset": 1348
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 21,
"startColumn": 4,
"startOffset": 1290,
"endColumn": 62,
"endOffset": 1348
}
}
},
{
"to": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1353,
"endColumn": 77,
"endOffset": 1426
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1353,
"endColumn": 77,
"endOffset": 1426
}
}
},
{
"to": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1431,
"endColumn": 78,
"endOffset": 1505
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1431,
"endColumn": 78,
"endOffset": 1505
}
}
},
{
"to": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1510,
"endColumn": 92,
"endOffset": 1598
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1510,
"endColumn": 92,
"endOffset": 1598
}
}
},
{
"to": {
"startLine": 25,
"startColumn": 4,
"startOffset": 1603,
"endColumn": 92,
"endOffset": 1691
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 25,
"startColumn": 4,
"startOffset": 1603,
"endColumn": 92,
"endOffset": 1691
}
}
},
{
"to": {
"startLine": 26,
"startColumn": 4,
"startOffset": 1696,
"endColumn": 107,
"endOffset": 1799
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 26,
"startColumn": 4,
"startOffset": 1696,
"endColumn": 107,
"endOffset": 1799
}
}
},
{
"to": {
"startLine": 27,
"startColumn": 4,
"startOffset": 1804,
"endColumn": 107,
"endOffset": 1907
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 27,
"startColumn": 4,
"startOffset": 1804,
"endColumn": 107,
"endOffset": 1907
}
}
},
{
"to": {
"startLine": 40,
"startColumn": 4,
"startOffset": 4217,
"endColumn": 61,
"endOffset": 4274
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 40,
"startColumn": 4,
"startOffset": 4217,
"endColumn": 61,
"endOffset": 4274
}
}
},
{
"to": {
"startLine": 41,
"startColumn": 4,
"startOffset": 4279,
"endColumn": 67,
"endOffset": 4342
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 41,
"startColumn": 4,
"startOffset": 4279,
"endColumn": 67,
"endOffset": 4342
}
}
},
{
"to": {
"startLine": 42,
"startColumn": 4,
"startOffset": 4347,
"endColumn": 62,
"endOffset": 4405
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 42,
"startColumn": 4,
"startOffset": 4347,
"endColumn": 62,
"endOffset": 4405
}
}
},
{
"to": {
"startLine": 43,
"startColumn": 4,
"startOffset": 4410,
"endColumn": 64,
"endOffset": 4470
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 43,
"startColumn": 4,
"startOffset": 4410,
"endColumn": 64,
"endOffset": 4470
}
}
},
{
"to": {
"startLine": 44,
"startColumn": 4,
"startOffset": 4475,
"endColumn": 65,
"endOffset": 4536
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 44,
"startColumn": 4,
"startOffset": 4475,
"endColumn": 65,
"endOffset": 4536
}
}
},
{
"to": {
"startLine": 45,
"startColumn": 4,
"startOffset": 4541,
"endColumn": 66,
"endOffset": 4603
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 45,
"startColumn": 4,
"startOffset": 4541,
"endColumn": 66,
"endOffset": 4603
}
}
},
{
"to": {
"startLine": 46,
"startColumn": 4,
"startOffset": 4608,
"endColumn": 77,
"endOffset": 4681
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 46,
"startColumn": 4,
"startOffset": 4608,
"endColumn": 77,
"endOffset": 4681
}
}
},
{
"to": {
"startLine": 47,
"startColumn": 4,
"startOffset": 4686,
"endColumn": 89,
"endOffset": 4771
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 47,
"startColumn": 4,
"startOffset": 4686,
"endColumn": 89,
"endOffset": 4771
}
}
},
{
"to": {
"startLine": 48,
"startColumn": 4,
"startOffset": 4776,
"endColumn": 72,
"endOffset": 4844
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 48,
"startColumn": 4,
"startOffset": 4776,
"endColumn": 72,
"endOffset": 4844
}
}
},
{
"to": {
"startLine": 49,
"startColumn": 4,
"startOffset": 4849,
"endColumn": 68,
"endOffset": 4913
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 49,
"startColumn": 4,
"startOffset": 4849,
"endColumn": 68,
"endOffset": 4913
}
}
},
{
"to": {
"startLine": 50,
"startColumn": 4,
"startOffset": 4918,
"endColumn": 64,
"endOffset": 4978
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 50,
"startColumn": 4,
"startOffset": 4918,
"endColumn": 64,
"endOffset": 4978
}
}
},
{
"to": {
"startLine": 51,
"startColumn": 4,
"startOffset": 4983,
"endColumn": 67,
"endOffset": 5046
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 51,
"startColumn": 4,
"startOffset": 4983,
"endColumn": 67,
"endOffset": 5046
}
}
},
{
"to": {
"startLine": 52,
"startColumn": 4,
"startOffset": 5051,
"endColumn": 65,
"endOffset": 5112
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 52,
"startColumn": 4,
"startOffset": 5051,
"endColumn": 65,
"endOffset": 5112
}
}
},
{
"to": {
"startLine": 53,
"startColumn": 4,
"startOffset": 5117,
"endColumn": 68,
"endOffset": 5181
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 53,
"startColumn": 4,
"startOffset": 5117,
"endColumn": 68,
"endOffset": 5181
}
}
},
{
"to": {
"startLine": 54,
"startColumn": 4,
"startOffset": 5186,
"endColumn": 78,
"endOffset": 5260
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 54,
"startColumn": 4,
"startOffset": 5186,
"endColumn": 78,
"endOffset": 5260
}
}
},
{
"to": {
"startLine": 55,
"startColumn": 4,
"startOffset": 5265,
"endColumn": 69,
"endOffset": 5330
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 55,
"startColumn": 4,
"startOffset": 5265,
"endColumn": 69,
"endOffset": 5330
}
}
},
{
"to": {
"startLine": 56,
"startColumn": 4,
"startOffset": 5335,
"endColumn": 72,
"endOffset": 5403
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 56,
"startColumn": 4,
"startOffset": 5335,
"endColumn": 72,
"endOffset": 5403
}
}
},
{
"to": {
"startLine": 57,
"startColumn": 4,
"startOffset": 5408,
"endColumn": 73,
"endOffset": 5477
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 57,
"startColumn": 4,
"startOffset": 5408,
"endColumn": 73,
"endOffset": 5477
}
}
},
{
"to": {
"startLine": 58,
"startColumn": 4,
"startOffset": 5482,
"endLine": 61,
"endColumn": 12,
"endOffset": 5677
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 58,
"startColumn": 4,
"startOffset": 5482,
"endLine": 61,
"endColumn": 12,
"endOffset": 5677
}
}
},
{
"to": {
"startLine": 62,
"startColumn": 4,
"startOffset": 5682,
"endLine": 65,
"endColumn": 12,
"endOffset": 5930
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 62,
"startColumn": 4,
"startOffset": 5682,
"endLine": 65,
"endColumn": 12,
"endOffset": 5930
}
}
},
{
"to": {
"startLine": 66,
"startColumn": 4,
"startOffset": 5935,
"endColumn": 26,
"endOffset": 5957
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 66,
"startColumn": 4,
"startOffset": 5935,
"endColumn": 26,
"endOffset": 5957
}
}
},
{
"to": {
"startLine": 67,
"startColumn": 4,
"startOffset": 5962,
"endLine": 70,
"endColumn": 12,
"endOffset": 6147
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 67,
"startColumn": 4,
"startOffset": 5962,
"endLine": 70,
"endColumn": 12,
"endOffset": 6147
}
}
},
{
"to": {
"startLine": 71,
"startColumn": 4,
"startOffset": 6152,
"endLine": 82,
"endColumn": 12,
"endOffset": 6828
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
"position": {
"startLine": 71,
"startColumn": 4,
"startOffset": 6152,
"endLine": 82,
"endColumn": 12,
"endOffset": 6828
}
}
}
]
}
]

@ -0,0 +1,10 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\color\\vpi__light_theme.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\color\\vpi__light_theme.xml"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\color\\vpi__dark_theme.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\color\\vpi__dark_theme.xml"
}
]

@ -0,0 +1,34 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\tab.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\tab.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\community_tab_subscript.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\community_tab_subscript.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\vpi__tab_selected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-hdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\vpi__tab_selected_pressed_holo.9.png"
}
]

@ -0,0 +1,26 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-mdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-mdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-mdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-mdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-mdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\vpi__tab_selected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-mdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\vpi__tab_selected_holo.9.png"
}
]

@ -0,0 +1,26 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-xhdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-xhdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\vpi__tab_selected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-xhdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-xhdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-xhdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-xhdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\vpi__tab_selected_pressed_holo.9.png"
}
]

@ -0,0 +1,10 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable\\vpi__tab_indicator.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable\\vpi__tab_indicator.xml"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable\\vpi_text_tab_indicator.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\bundles\\debug\\res\\drawable\\vpi_text_tab_indicator.xml"
}
]

@ -0,0 +1,946 @@
[
{
"outputFile": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\incremental\\mergeDebugResources\\merged.dir\\values\\values.xml",
"map": [
{
"to": {
"startLine": 2,
"startColumn": 4,
"startOffset": 55,
"endColumn": 44,
"endOffset": 95
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 33,
"startColumn": 4,
"startOffset": 1498,
"endColumn": 45,
"endOffset": 1539
}
}
},
{
"to": {
"startLine": 3,
"startColumn": 4,
"startOffset": 100,
"endColumn": 47,
"endOffset": 143
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 34,
"startColumn": 4,
"startOffset": 1544,
"endColumn": 48,
"endOffset": 1588
}
}
},
{
"to": {
"startLine": 4,
"startColumn": 4,
"startOffset": 148,
"endColumn": 49,
"endOffset": 193
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 35,
"startColumn": 4,
"startOffset": 1593,
"endColumn": 50,
"endOffset": 1639
}
}
},
{
"to": {
"startLine": 5,
"startColumn": 4,
"startOffset": 198,
"endColumn": 49,
"endOffset": 243
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 36,
"startColumn": 4,
"startOffset": 1644,
"endColumn": 50,
"endOffset": 1690
}
}
},
{
"to": {
"startLine": 6,
"startColumn": 4,
"startOffset": 248,
"endColumn": 62,
"endOffset": 306
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 17,
"startColumn": 4,
"startOffset": 668,
"endColumn": 62,
"endOffset": 726
}
}
},
{
"to": {
"startLine": 7,
"startColumn": 4,
"startOffset": 311,
"endColumn": 59,
"endOffset": 366
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1006,
"endColumn": 59,
"endOffset": 1061
}
}
},
{
"to": {
"startLine": 8,
"startColumn": 4,
"startOffset": 371,
"endColumn": 60,
"endOffset": 427
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 31,
"startColumn": 4,
"startOffset": 1553,
"endColumn": 60,
"endOffset": 1609
}
}
},
{
"to": {
"startLine": 9,
"startColumn": 4,
"startOffset": 432,
"endColumn": 66,
"endOffset": 494
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 42,
"startColumn": 4,
"startOffset": 2289,
"endColumn": 66,
"endOffset": 2351
}
}
},
{
"to": {
"startLine": 10,
"startColumn": 4,
"startOffset": 499,
"endColumn": 62,
"endOffset": 557
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 48,
"startColumn": 4,
"startOffset": 2627,
"endColumn": 62,
"endOffset": 2685
}
}
},
{
"to": {
"startLine": 11,
"startColumn": 4,
"startOffset": 562,
"endColumn": 71,
"endOffset": 629
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 18,
"startColumn": 4,
"startOffset": 731,
"endColumn": 71,
"endOffset": 798
}
}
},
{
"to": {
"startLine": 12,
"startColumn": 4,
"startOffset": 634,
"endColumn": 71,
"endOffset": 701
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 19,
"startColumn": 4,
"startOffset": 803,
"endColumn": 71,
"endOffset": 870
}
}
},
{
"to": {
"startLine": 13,
"startColumn": 4,
"startOffset": 706,
"endColumn": 73,
"endOffset": 775
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1066,
"endColumn": 73,
"endOffset": 1135
}
}
},
{
"to": {
"startLine": 14,
"startColumn": 4,
"startOffset": 780,
"endColumn": 73,
"endOffset": 849
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 29,
"startColumn": 4,
"startOffset": 1403,
"endColumn": 73,
"endOffset": 1472
}
}
},
{
"to": {
"startLine": 15,
"startColumn": 4,
"startOffset": 854,
"endColumn": 75,
"endOffset": 925
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 30,
"startColumn": 4,
"startOffset": 1477,
"endColumn": 75,
"endOffset": 1548
}
}
},
{
"to": {
"startLine": 16,
"startColumn": 4,
"startOffset": 930,
"endColumn": 72,
"endOffset": 998
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 34,
"startColumn": 4,
"startOffset": 1682,
"endColumn": 72,
"endOffset": 1750
}
}
},
{
"to": {
"startLine": 17,
"startColumn": 4,
"startOffset": 1003,
"endColumn": 74,
"endOffset": 1073
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 41,
"startColumn": 4,
"startOffset": 2214,
"endColumn": 74,
"endOffset": 2284
}
}
},
{
"to": {
"startLine": 18,
"startColumn": 4,
"startOffset": 1078,
"endColumn": 70,
"endOffset": 1144
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 43,
"startColumn": 4,
"startOffset": 2356,
"endColumn": 70,
"endOffset": 2422
}
}
},
{
"to": {
"startLine": 19,
"startColumn": 4,
"startOffset": 1149,
"endColumn": 78,
"endOffset": 1223
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 51,
"startColumn": 4,
"startOffset": 2837,
"endColumn": 78,
"endOffset": 2911
}
}
},
{
"to": {
"startLine": 20,
"startColumn": 4,
"startOffset": 1228,
"endColumn": 61,
"endOffset": 1285
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 17,
"startColumn": 4,
"startOffset": 668,
"endColumn": 61,
"endOffset": 725
}
}
},
{
"to": {
"startLine": 21,
"startColumn": 4,
"startOffset": 1290,
"endColumn": 62,
"endOffset": 1348
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 18,
"startColumn": 4,
"startOffset": 730,
"endColumn": 62,
"endOffset": 788
}
}
},
{
"to": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1353,
"endColumn": 77,
"endOffset": 1426
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 21,
"startColumn": 4,
"startOffset": 979,
"endColumn": 77,
"endOffset": 1052
}
}
},
{
"to": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1431,
"endColumn": 78,
"endOffset": 1505
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1057,
"endColumn": 78,
"endOffset": 1131
}
}
},
{
"to": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1510,
"endColumn": 92,
"endOffset": 1598
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 19,
"startColumn": 4,
"startOffset": 793,
"endColumn": 92,
"endOffset": 881
}
}
},
{
"to": {
"startLine": 25,
"startColumn": 4,
"startOffset": 1603,
"endColumn": 92,
"endOffset": 1691
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 20,
"startColumn": 4,
"startOffset": 886,
"endColumn": 92,
"endOffset": 974
}
}
},
{
"to": {
"startLine": 26,
"startColumn": 4,
"startOffset": 1696,
"endColumn": 107,
"endOffset": 1799
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1136,
"endColumn": 107,
"endOffset": 1239
}
}
},
{
"to": {
"startLine": 27,
"startColumn": 4,
"startOffset": 1804,
"endColumn": 107,
"endOffset": 1907
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1244,
"endColumn": 107,
"endOffset": 1347
}
}
},
{
"to": {
"startLine": 40,
"startColumn": 4,
"startOffset": 4217,
"endColumn": 61,
"endOffset": 4274
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 21,
"startColumn": 4,
"startOffset": 944,
"endColumn": 61,
"endOffset": 1001
}
}
},
{
"to": {
"startLine": 41,
"startColumn": 4,
"startOffset": 4279,
"endColumn": 67,
"endOffset": 4342
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1140,
"endColumn": 67,
"endOffset": 1203
}
}
},
{
"to": {
"startLine": 42,
"startColumn": 4,
"startOffset": 4347,
"endColumn": 62,
"endOffset": 4405
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 27,
"startColumn": 4,
"startOffset": 1274,
"endColumn": 62,
"endOffset": 1332
}
}
},
{
"to": {
"startLine": 43,
"startColumn": 4,
"startOffset": 4410,
"endColumn": 64,
"endOffset": 4470
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 26,
"startColumn": 4,
"startOffset": 1209,
"endColumn": 64,
"endOffset": 1269
}
}
},
{
"to": {
"startLine": 44,
"startColumn": 4,
"startOffset": 4475,
"endColumn": 65,
"endOffset": 4536
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 28,
"startColumn": 4,
"startOffset": 1337,
"endColumn": 65,
"endOffset": 1398
}
}
},
{
"to": {
"startLine": 45,
"startColumn": 4,
"startOffset": 4541,
"endColumn": 66,
"endOffset": 4603
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 33,
"startColumn": 4,
"startOffset": 1615,
"endColumn": 66,
"endOffset": 1677
}
}
},
{
"to": {
"startLine": 46,
"startColumn": 4,
"startOffset": 4608,
"endColumn": 77,
"endOffset": 4681
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 37,
"startColumn": 4,
"startOffset": 1907,
"endColumn": 77,
"endOffset": 1980
}
}
},
{
"to": {
"startLine": 47,
"startColumn": 4,
"startOffset": 4686,
"endColumn": 89,
"endOffset": 4771
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 38,
"startColumn": 4,
"startOffset": 1985,
"endColumn": 89,
"endOffset": 2070
}
}
},
{
"to": {
"startLine": 48,
"startColumn": 4,
"startOffset": 4776,
"endColumn": 72,
"endOffset": 4844
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 35,
"startColumn": 4,
"startOffset": 1755,
"endColumn": 72,
"endOffset": 1823
}
}
},
{
"to": {
"startLine": 49,
"startColumn": 4,
"startOffset": 4849,
"endColumn": 68,
"endOffset": 4913
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 39,
"startColumn": 4,
"startOffset": 2075,
"endColumn": 68,
"endOffset": 2139
}
}
},
{
"to": {
"startLine": 50,
"startColumn": 4,
"startOffset": 4918,
"endColumn": 64,
"endOffset": 4978
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 44,
"startColumn": 4,
"startOffset": 2427,
"endColumn": 64,
"endOffset": 2487
}
}
},
{
"to": {
"startLine": 51,
"startColumn": 4,
"startOffset": 4983,
"endColumn": 67,
"endOffset": 5046
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 45,
"startColumn": 4,
"startOffset": 2492,
"endColumn": 67,
"endOffset": 2555
}
}
},
{
"to": {
"startLine": 52,
"startColumn": 4,
"startOffset": 5051,
"endColumn": 65,
"endOffset": 5112
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 46,
"startColumn": 4,
"startOffset": 2560,
"endColumn": 65,
"endOffset": 2621
}
}
},
{
"to": {
"startLine": 53,
"startColumn": 4,
"startOffset": 5117,
"endColumn": 68,
"endOffset": 5181
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 20,
"startColumn": 4,
"startOffset": 875,
"endColumn": 68,
"endOffset": 939
}
}
},
{
"to": {
"startLine": 54,
"startColumn": 4,
"startOffset": 5186,
"endColumn": 78,
"endOffset": 5260
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 36,
"startColumn": 4,
"startOffset": 1828,
"endColumn": 78,
"endOffset": 1902
}
}
},
{
"to": {
"startLine": 55,
"startColumn": 4,
"startOffset": 5265,
"endColumn": 69,
"endOffset": 5330
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 40,
"startColumn": 4,
"startOffset": 2144,
"endColumn": 69,
"endOffset": 2209
}
}
},
{
"to": {
"startLine": 56,
"startColumn": 4,
"startOffset": 5335,
"endColumn": 72,
"endOffset": 5403
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 49,
"startColumn": 4,
"startOffset": 2690,
"endColumn": 72,
"endOffset": 2758
}
}
},
{
"to": {
"startLine": 57,
"startColumn": 4,
"startOffset": 5408,
"endColumn": 73,
"endOffset": 5477
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 50,
"startColumn": 4,
"startOffset": 2763,
"endColumn": 73,
"endOffset": 2832
}
}
},
{
"to": {
"startLine": 58,
"startColumn": 4,
"startOffset": 5482,
"endLine": 61,
"endColumn": 12,
"endOffset": 5677
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 37,
"startColumn": 4,
"startOffset": 1639,
"endLine": 40,
"endColumn": 12,
"endOffset": 1834
}
}
},
{
"to": {
"startLine": 62,
"startColumn": 4,
"startOffset": 5682,
"endLine": 65,
"endColumn": 12,
"endOffset": 5930
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 17,
"startColumn": 4,
"startOffset": 668,
"endLine": 20,
"endColumn": 12,
"endOffset": 916
}
}
},
{
"to": {
"startLine": 66,
"startColumn": 4,
"startOffset": 5935,
"endColumn": 26,
"endOffset": 5957
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 22,
"startColumn": 4,
"startOffset": 922,
"endColumn": 33,
"endOffset": 951
}
}
},
{
"to": {
"startLine": 67,
"startColumn": 4,
"startOffset": 5962,
"endLine": 70,
"endColumn": 12,
"endOffset": 6147
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 42,
"startColumn": 4,
"startOffset": 1840,
"endLine": 45,
"endColumn": 12,
"endOffset": 2025
}
}
},
{
"to": {
"startLine": 71,
"startColumn": 4,
"startOffset": 6152,
"endLine": 82,
"endColumn": 12,
"endOffset": 6828
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 24,
"startColumn": 4,
"startOffset": 957,
"endLine": 35,
"endColumn": 12,
"endOffset": 1633
}
}
}
]
}
]

@ -0,0 +1,10 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\color\\vpi__light_theme.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\color\\vpi__light_theme.xml"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\color\\vpi__dark_theme.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\color\\vpi__dark_theme.xml"
}
]

@ -0,0 +1,34 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\community_tab_subscript.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\community_tab_subscript.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\tab.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\tab.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_selected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_selected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-hdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_unselected_holo.9.png"
}
]

@ -0,0 +1,26 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-mdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-mdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-mdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_selected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-mdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-mdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_selected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-mdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_unselected_pressed_holo.9.png"
}
]

@ -0,0 +1,26 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-xhdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-xhdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_selected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-xhdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-xhdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-xhdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable-xhdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_selected_holo.9.png"
}
]

@ -0,0 +1,10 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable\\vpi_text_tab_indicator.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable\\vpi_text_tab_indicator.xml"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\debug\\drawable\\vpi__tab_indicator.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable\\vpi__tab_indicator.xml"
}
]

@ -0,0 +1,946 @@
[
{
"outputFile": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\incremental\\mergeReleaseResources\\merged.dir\\values\\values.xml",
"map": [
{
"to": {
"startLine": 2,
"startColumn": 4,
"startOffset": 55,
"endColumn": 44,
"endOffset": 95
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 33,
"startColumn": 4,
"startOffset": 1498,
"endColumn": 45,
"endOffset": 1539
}
}
},
{
"to": {
"startLine": 3,
"startColumn": 4,
"startOffset": 100,
"endColumn": 47,
"endOffset": 143
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 34,
"startColumn": 4,
"startOffset": 1544,
"endColumn": 48,
"endOffset": 1588
}
}
},
{
"to": {
"startLine": 4,
"startColumn": 4,
"startOffset": 148,
"endColumn": 49,
"endOffset": 193
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 35,
"startColumn": 4,
"startOffset": 1593,
"endColumn": 50,
"endOffset": 1639
}
}
},
{
"to": {
"startLine": 5,
"startColumn": 4,
"startOffset": 198,
"endColumn": 49,
"endOffset": 243
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__attrs.xml",
"position": {
"startLine": 36,
"startColumn": 4,
"startOffset": 1644,
"endColumn": 50,
"endOffset": 1690
}
}
},
{
"to": {
"startLine": 6,
"startColumn": 4,
"startOffset": 248,
"endColumn": 62,
"endOffset": 306
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 17,
"startColumn": 4,
"startOffset": 668,
"endColumn": 62,
"endOffset": 726
}
}
},
{
"to": {
"startLine": 7,
"startColumn": 4,
"startOffset": 311,
"endColumn": 59,
"endOffset": 366
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1006,
"endColumn": 59,
"endOffset": 1061
}
}
},
{
"to": {
"startLine": 8,
"startColumn": 4,
"startOffset": 371,
"endColumn": 60,
"endOffset": 427
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 31,
"startColumn": 4,
"startOffset": 1553,
"endColumn": 60,
"endOffset": 1609
}
}
},
{
"to": {
"startLine": 9,
"startColumn": 4,
"startOffset": 432,
"endColumn": 66,
"endOffset": 494
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 42,
"startColumn": 4,
"startOffset": 2289,
"endColumn": 66,
"endOffset": 2351
}
}
},
{
"to": {
"startLine": 10,
"startColumn": 4,
"startOffset": 499,
"endColumn": 62,
"endOffset": 557
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 48,
"startColumn": 4,
"startOffset": 2627,
"endColumn": 62,
"endOffset": 2685
}
}
},
{
"to": {
"startLine": 11,
"startColumn": 4,
"startOffset": 562,
"endColumn": 71,
"endOffset": 629
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 18,
"startColumn": 4,
"startOffset": 731,
"endColumn": 71,
"endOffset": 798
}
}
},
{
"to": {
"startLine": 12,
"startColumn": 4,
"startOffset": 634,
"endColumn": 71,
"endOffset": 701
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 19,
"startColumn": 4,
"startOffset": 803,
"endColumn": 71,
"endOffset": 870
}
}
},
{
"to": {
"startLine": 13,
"startColumn": 4,
"startOffset": 706,
"endColumn": 73,
"endOffset": 775
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1066,
"endColumn": 73,
"endOffset": 1135
}
}
},
{
"to": {
"startLine": 14,
"startColumn": 4,
"startOffset": 780,
"endColumn": 73,
"endOffset": 849
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 29,
"startColumn": 4,
"startOffset": 1403,
"endColumn": 73,
"endOffset": 1472
}
}
},
{
"to": {
"startLine": 15,
"startColumn": 4,
"startOffset": 854,
"endColumn": 75,
"endOffset": 925
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 30,
"startColumn": 4,
"startOffset": 1477,
"endColumn": 75,
"endOffset": 1548
}
}
},
{
"to": {
"startLine": 16,
"startColumn": 4,
"startOffset": 930,
"endColumn": 72,
"endOffset": 998
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 34,
"startColumn": 4,
"startOffset": 1682,
"endColumn": 72,
"endOffset": 1750
}
}
},
{
"to": {
"startLine": 17,
"startColumn": 4,
"startOffset": 1003,
"endColumn": 74,
"endOffset": 1073
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 41,
"startColumn": 4,
"startOffset": 2214,
"endColumn": 74,
"endOffset": 2284
}
}
},
{
"to": {
"startLine": 18,
"startColumn": 4,
"startOffset": 1078,
"endColumn": 70,
"endOffset": 1144
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 43,
"startColumn": 4,
"startOffset": 2356,
"endColumn": 70,
"endOffset": 2422
}
}
},
{
"to": {
"startLine": 19,
"startColumn": 4,
"startOffset": 1149,
"endColumn": 78,
"endOffset": 1223
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 51,
"startColumn": 4,
"startOffset": 2837,
"endColumn": 78,
"endOffset": 2911
}
}
},
{
"to": {
"startLine": 20,
"startColumn": 4,
"startOffset": 1228,
"endColumn": 61,
"endOffset": 1285
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 17,
"startColumn": 4,
"startOffset": 668,
"endColumn": 61,
"endOffset": 725
}
}
},
{
"to": {
"startLine": 21,
"startColumn": 4,
"startOffset": 1290,
"endColumn": 62,
"endOffset": 1348
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 18,
"startColumn": 4,
"startOffset": 730,
"endColumn": 62,
"endOffset": 788
}
}
},
{
"to": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1353,
"endColumn": 77,
"endOffset": 1426
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 21,
"startColumn": 4,
"startOffset": 979,
"endColumn": 77,
"endOffset": 1052
}
}
},
{
"to": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1431,
"endColumn": 78,
"endOffset": 1505
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 22,
"startColumn": 4,
"startOffset": 1057,
"endColumn": 78,
"endOffset": 1131
}
}
},
{
"to": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1510,
"endColumn": 92,
"endOffset": 1598
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 19,
"startColumn": 4,
"startOffset": 793,
"endColumn": 92,
"endOffset": 881
}
}
},
{
"to": {
"startLine": 25,
"startColumn": 4,
"startOffset": 1603,
"endColumn": 92,
"endOffset": 1691
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 20,
"startColumn": 4,
"startOffset": 886,
"endColumn": 92,
"endOffset": 974
}
}
},
{
"to": {
"startLine": 26,
"startColumn": 4,
"startOffset": 1696,
"endColumn": 107,
"endOffset": 1799
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 23,
"startColumn": 4,
"startOffset": 1136,
"endColumn": 107,
"endOffset": 1239
}
}
},
{
"to": {
"startLine": 27,
"startColumn": 4,
"startOffset": 1804,
"endColumn": 107,
"endOffset": 1907
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__colors.xml",
"position": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1244,
"endColumn": 107,
"endOffset": 1347
}
}
},
{
"to": {
"startLine": 40,
"startColumn": 4,
"startOffset": 4217,
"endColumn": 61,
"endOffset": 4274
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 21,
"startColumn": 4,
"startOffset": 944,
"endColumn": 61,
"endOffset": 1001
}
}
},
{
"to": {
"startLine": 41,
"startColumn": 4,
"startOffset": 4279,
"endColumn": 67,
"endOffset": 4342
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 24,
"startColumn": 4,
"startOffset": 1140,
"endColumn": 67,
"endOffset": 1203
}
}
},
{
"to": {
"startLine": 42,
"startColumn": 4,
"startOffset": 4347,
"endColumn": 62,
"endOffset": 4405
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 27,
"startColumn": 4,
"startOffset": 1274,
"endColumn": 62,
"endOffset": 1332
}
}
},
{
"to": {
"startLine": 43,
"startColumn": 4,
"startOffset": 4410,
"endColumn": 64,
"endOffset": 4470
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 26,
"startColumn": 4,
"startOffset": 1209,
"endColumn": 64,
"endOffset": 1269
}
}
},
{
"to": {
"startLine": 44,
"startColumn": 4,
"startOffset": 4475,
"endColumn": 65,
"endOffset": 4536
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 28,
"startColumn": 4,
"startOffset": 1337,
"endColumn": 65,
"endOffset": 1398
}
}
},
{
"to": {
"startLine": 45,
"startColumn": 4,
"startOffset": 4541,
"endColumn": 66,
"endOffset": 4603
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 33,
"startColumn": 4,
"startOffset": 1615,
"endColumn": 66,
"endOffset": 1677
}
}
},
{
"to": {
"startLine": 46,
"startColumn": 4,
"startOffset": 4608,
"endColumn": 77,
"endOffset": 4681
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 37,
"startColumn": 4,
"startOffset": 1907,
"endColumn": 77,
"endOffset": 1980
}
}
},
{
"to": {
"startLine": 47,
"startColumn": 4,
"startOffset": 4686,
"endColumn": 89,
"endOffset": 4771
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 38,
"startColumn": 4,
"startOffset": 1985,
"endColumn": 89,
"endOffset": 2070
}
}
},
{
"to": {
"startLine": 48,
"startColumn": 4,
"startOffset": 4776,
"endColumn": 72,
"endOffset": 4844
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 35,
"startColumn": 4,
"startOffset": 1755,
"endColumn": 72,
"endOffset": 1823
}
}
},
{
"to": {
"startLine": 49,
"startColumn": 4,
"startOffset": 4849,
"endColumn": 68,
"endOffset": 4913
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 39,
"startColumn": 4,
"startOffset": 2075,
"endColumn": 68,
"endOffset": 2139
}
}
},
{
"to": {
"startLine": 50,
"startColumn": 4,
"startOffset": 4918,
"endColumn": 64,
"endOffset": 4978
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 44,
"startColumn": 4,
"startOffset": 2427,
"endColumn": 64,
"endOffset": 2487
}
}
},
{
"to": {
"startLine": 51,
"startColumn": 4,
"startOffset": 4983,
"endColumn": 67,
"endOffset": 5046
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 45,
"startColumn": 4,
"startOffset": 2492,
"endColumn": 67,
"endOffset": 2555
}
}
},
{
"to": {
"startLine": 52,
"startColumn": 4,
"startOffset": 5051,
"endColumn": 65,
"endOffset": 5112
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 46,
"startColumn": 4,
"startOffset": 2560,
"endColumn": 65,
"endOffset": 2621
}
}
},
{
"to": {
"startLine": 53,
"startColumn": 4,
"startOffset": 5117,
"endColumn": 68,
"endOffset": 5181
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 20,
"startColumn": 4,
"startOffset": 875,
"endColumn": 68,
"endOffset": 939
}
}
},
{
"to": {
"startLine": 54,
"startColumn": 4,
"startOffset": 5186,
"endColumn": 78,
"endOffset": 5260
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 36,
"startColumn": 4,
"startOffset": 1828,
"endColumn": 78,
"endOffset": 1902
}
}
},
{
"to": {
"startLine": 55,
"startColumn": 4,
"startOffset": 5265,
"endColumn": 69,
"endOffset": 5330
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 40,
"startColumn": 4,
"startOffset": 2144,
"endColumn": 69,
"endOffset": 2209
}
}
},
{
"to": {
"startLine": 56,
"startColumn": 4,
"startOffset": 5335,
"endColumn": 72,
"endOffset": 5403
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 49,
"startColumn": 4,
"startOffset": 2690,
"endColumn": 72,
"endOffset": 2758
}
}
},
{
"to": {
"startLine": 57,
"startColumn": 4,
"startOffset": 5408,
"endColumn": 73,
"endOffset": 5477
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__defaults.xml",
"position": {
"startLine": 50,
"startColumn": 4,
"startOffset": 2763,
"endColumn": 73,
"endOffset": 2832
}
}
},
{
"to": {
"startLine": 58,
"startColumn": 4,
"startOffset": 5482,
"endLine": 61,
"endColumn": 12,
"endOffset": 5677
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 37,
"startColumn": 4,
"startOffset": 1639,
"endLine": 40,
"endColumn": 12,
"endOffset": 1834
}
}
},
{
"to": {
"startLine": 62,
"startColumn": 4,
"startOffset": 5682,
"endLine": 65,
"endColumn": 12,
"endOffset": 5930
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 17,
"startColumn": 4,
"startOffset": 668,
"endLine": 20,
"endColumn": 12,
"endOffset": 916
}
}
},
{
"to": {
"startLine": 66,
"startColumn": 4,
"startOffset": 5935,
"endColumn": 26,
"endOffset": 5957
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 22,
"startColumn": 4,
"startOffset": 922,
"endColumn": 33,
"endOffset": 951
}
}
},
{
"to": {
"startLine": 67,
"startColumn": 4,
"startOffset": 5962,
"endLine": 70,
"endColumn": 12,
"endOffset": 6147
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 42,
"startColumn": 4,
"startOffset": 1840,
"endLine": 45,
"endColumn": 12,
"endOffset": 2025
}
}
},
{
"to": {
"startLine": 71,
"startColumn": 4,
"startOffset": 6152,
"endLine": 82,
"endColumn": 12,
"endOffset": 6828
},
"from": {
"file": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\values\\vpi__styles.xml",
"position": {
"startLine": 24,
"startColumn": 4,
"startOffset": 957,
"endLine": 35,
"endColumn": 12,
"endOffset": 1633
}
}
}
]
}
]

@ -0,0 +1,10 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\color\\vpi__dark_theme.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\color\\vpi__dark_theme.xml"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\color\\vpi__light_theme.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\color\\vpi__light_theme.xml"
}
]

@ -0,0 +1,34 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_selected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_selected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\community_tab_subscript.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\community_tab_subscript.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-hdpi-v4\\tab.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-hdpi\\tab.png"
}
]

@ -0,0 +1,26 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-mdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_selected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-mdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-mdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-mdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_selected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-mdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-mdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-mdpi\\vpi__tab_unselected_focused_holo.9.png"
}
]

@ -0,0 +1,26 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-xhdpi-v4\\vpi__tab_unselected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_unselected_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-xhdpi-v4\\vpi__tab_selected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_selected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-xhdpi-v4\\vpi__tab_selected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_selected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-xhdpi-v4\\vpi__tab_unselected_focused_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_unselected_focused_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-xhdpi-v4\\vpi__tab_unselected_pressed_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_unselected_pressed_holo.9.png"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable-xhdpi-v4\\vpi__tab_selected_holo.9.png",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable-xhdpi\\vpi__tab_selected_holo.9.png"
}
]

@ -0,0 +1,10 @@
[
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable\\vpi__tab_indicator.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable\\vpi__tab_indicator.xml"
},
{
"merged": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\build\\intermediates\\res\\merged\\release\\drawable\\vpi_text_tab_indicator.xml",
"source": "C:\\Users\\Administrator\\Desktop\\mobile\\ShoppingMall2\\ViewPagerIndicator_library\\src\\main\\res\\drawable\\vpi_text_tab_indicator.xml"
}
]

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.viewpagerindicator"
android:versionCode="65"
android:versionName="2.4.1" > <!-- <uses-sdk android:minSdkVersion="4" /> -->
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
</manifest>

@ -0,0 +1,140 @@
int attr centered 0x7f010000
int attr clipPadding 0x7f01000b
int attr fadeDelay 0x7f010017
int attr fadeLength 0x7f010018
int attr fades 0x7f010016
int attr fillColor 0x7f010004
int attr footerColor 0x7f01000c
int attr footerIndicatorHeight 0x7f01000f
int attr footerIndicatorStyle 0x7f01000e
int attr footerIndicatorUnderlinePadding 0x7f010010
int attr footerLineHeight 0x7f01000d
int attr footerPadding 0x7f010011
int attr gapWidth 0x7f01000a
int attr linePosition 0x7f010012
int attr lineWidth 0x7f010009
int attr pageColor 0x7f010005
int attr radius 0x7f010006
int attr selectedBold 0x7f010013
int attr selectedColor 0x7f010001
int attr snap 0x7f010007
int attr strokeColor 0x7f010008
int attr strokeWidth 0x7f010002
int attr titlePadding 0x7f010014
int attr topPadding 0x7f010015
int attr unselectedColor 0x7f010003
int attr vpiCirclePageIndicatorStyle 0x7f010019
int attr vpiIconPageIndicatorStyle 0x7f01001a
int attr vpiLinePageIndicatorStyle 0x7f01001b
int attr vpiTabPageIndicatorStyle 0x7f01001d
int attr vpiTitlePageIndicatorStyle 0x7f01001c
int attr vpiUnderlinePageIndicatorStyle 0x7f01001e
int bool default_circle_indicator_centered 0x7f030000
int bool default_circle_indicator_snap 0x7f030001
int bool default_line_indicator_centered 0x7f030002
int bool default_title_indicator_selected_bold 0x7f030003
int bool default_underline_indicator_fades 0x7f030004
int color default_circle_indicator_fill_color 0x7f040000
int color default_circle_indicator_page_color 0x7f040001
int color default_circle_indicator_stroke_color 0x7f040002
int color default_line_indicator_selected_color 0x7f040003
int color default_line_indicator_unselected_color 0x7f040004
int color default_title_indicator_footer_color 0x7f040005
int color default_title_indicator_selected_color 0x7f040006
int color default_title_indicator_text_color 0x7f040007
int color default_underline_indicator_selected_color 0x7f040008
int color vpi__background_holo_dark 0x7f040009
int color vpi__background_holo_light 0x7f04000a
int color vpi__bright_foreground_disabled_holo_dark 0x7f04000b
int color vpi__bright_foreground_disabled_holo_light 0x7f04000c
int color vpi__bright_foreground_holo_dark 0x7f04000d
int color vpi__bright_foreground_holo_light 0x7f04000e
int color vpi__bright_foreground_inverse_holo_dark 0x7f04000f
int color vpi__bright_foreground_inverse_holo_light 0x7f040010
int color vpi__dark_theme 0x7f040011
int color vpi__light_theme 0x7f040012
int dimen default_circle_indicator_radius 0x7f050000
int dimen default_circle_indicator_stroke_width 0x7f050001
int dimen default_line_indicator_gap_width 0x7f050002
int dimen default_line_indicator_line_width 0x7f050003
int dimen default_line_indicator_stroke_width 0x7f050004
int dimen default_title_indicator_clip_padding 0x7f050005
int dimen default_title_indicator_footer_indicator_height 0x7f050006
int dimen default_title_indicator_footer_indicator_underline_padding 0x7f050007
int dimen default_title_indicator_footer_line_height 0x7f050008
int dimen default_title_indicator_footer_padding 0x7f050009
int dimen default_title_indicator_text_size 0x7f05000a
int dimen default_title_indicator_title_padding 0x7f05000b
int dimen default_title_indicator_top_padding 0x7f05000c
int drawable community_tab_subscript 0x7f020000
int drawable tab 0x7f020001
int drawable vpi__tab_indicator 0x7f020002
int drawable vpi__tab_selected_focused_holo 0x7f020003
int drawable vpi__tab_selected_holo 0x7f020004
int drawable vpi__tab_selected_pressed_holo 0x7f020005
int drawable vpi__tab_unselected_focused_holo 0x7f020006
int drawable vpi__tab_unselected_holo 0x7f020007
int drawable vpi__tab_unselected_pressed_holo 0x7f020008
int drawable vpi_text_tab_indicator 0x7f020009
int id bottom 0x7f080003
int id none 0x7f080000
int id top 0x7f080004
int id triangle 0x7f080001
int id underline 0x7f080002
int integer default_circle_indicator_orientation 0x7f060000
int integer default_title_indicator_footer_indicator_style 0x7f060001
int integer default_title_indicator_line_position 0x7f060002
int integer default_underline_indicator_fade_delay 0x7f060003
int integer default_underline_indicator_fade_length 0x7f060004
int style TextAppearance_TabPageIndicator 0x7f070000
int style Theme_PageIndicatorDefaults 0x7f070001
int style Widget 0x7f070002
int style Widget_IconPageIndicator 0x7f070003
int style Widget_TabPageIndicator 0x7f070004
int[] styleable CirclePageIndicator { 0x010100c4, 0x010100d4, 0x7f010000, 0x7f010002, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008 }
int styleable CirclePageIndicator_android_background 1
int styleable CirclePageIndicator_android_orientation 0
int styleable CirclePageIndicator_centered 2
int styleable CirclePageIndicator_fillColor 4
int styleable CirclePageIndicator_pageColor 5
int styleable CirclePageIndicator_radius 6
int styleable CirclePageIndicator_snap 7
int styleable CirclePageIndicator_strokeColor 8
int styleable CirclePageIndicator_strokeWidth 3
int[] styleable LinePageIndicator { 0x010100d4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010009, 0x7f01000a }
int styleable LinePageIndicator_android_background 0
int styleable LinePageIndicator_centered 1
int styleable LinePageIndicator_gapWidth 6
int styleable LinePageIndicator_lineWidth 5
int styleable LinePageIndicator_selectedColor 2
int styleable LinePageIndicator_strokeWidth 3
int styleable LinePageIndicator_unselectedColor 4
int[] styleable TitlePageIndicator { 0x01010095, 0x01010098, 0x010100d4, 0x7f010001, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f, 0x7f010010, 0x7f010011, 0x7f010012, 0x7f010013, 0x7f010014, 0x7f010015 }
int styleable TitlePageIndicator_android_background 2
int styleable TitlePageIndicator_android_textColor 1
int styleable TitlePageIndicator_android_textSize 0
int styleable TitlePageIndicator_clipPadding 4
int styleable TitlePageIndicator_footerColor 5
int styleable TitlePageIndicator_footerIndicatorHeight 8
int styleable TitlePageIndicator_footerIndicatorStyle 7
int styleable TitlePageIndicator_footerIndicatorUnderlinePadding 9
int styleable TitlePageIndicator_footerLineHeight 6
int styleable TitlePageIndicator_footerPadding 10
int styleable TitlePageIndicator_linePosition 11
int styleable TitlePageIndicator_selectedBold 12
int styleable TitlePageIndicator_selectedColor 3
int styleable TitlePageIndicator_titlePadding 13
int styleable TitlePageIndicator_topPadding 14
int[] styleable UnderlinePageIndicator { 0x010100d4, 0x7f010001, 0x7f010016, 0x7f010017, 0x7f010018 }
int styleable UnderlinePageIndicator_android_background 0
int styleable UnderlinePageIndicator_fadeDelay 3
int styleable UnderlinePageIndicator_fadeLength 4
int styleable UnderlinePageIndicator_fades 2
int styleable UnderlinePageIndicator_selectedColor 1
int[] styleable ViewPagerIndicator { 0x7f010019, 0x7f01001a, 0x7f01001b, 0x7f01001c, 0x7f01001d, 0x7f01001e }
int styleable ViewPagerIndicator_vpiCirclePageIndicatorStyle 0
int styleable ViewPagerIndicator_vpiIconPageIndicatorStyle 1
int styleable ViewPagerIndicator_vpiLinePageIndicatorStyle 2
int styleable ViewPagerIndicator_vpiTabPageIndicatorStyle 4
int styleable ViewPagerIndicator_vpiTitlePageIndicatorStyle 3
int styleable ViewPagerIndicator_vpiUnderlinePageIndicatorStyle 5

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/vpi__bright_foreground_disabled_holo_dark"/>
<item android:state_window_focused="false" android:color="@color/vpi__bright_foreground_holo_dark"/>
<item android:state_pressed="true" android:color="@color/vpi__bright_foreground_holo_dark"/>
<item android:state_selected="true" android:color="@color/vpi__bright_foreground_holo_dark"/>
<!--item android:state_activated="true" android:color="@color/vpi__bright_foreground_holo_dark"/-->
<item android:color="@color/vpi__bright_foreground_holo_dark"/> <!-- not selected -->
</selector>

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/vpi__bright_foreground_disabled_holo_light"/>
<item android:state_window_focused="false" android:color="@color/vpi__bright_foreground_holo_light"/>
<item android:state_pressed="true" android:color="@color/vpi__bright_foreground_holo_light"/>
<item android:state_selected="true" android:color="@color/vpi__bright_foreground_holo_light"/>
<!--item android:state_activated="true" android:color="@color/vpi__bright_foreground_holo_light"/-->
<item android:color="@color/vpi__bright_foreground_holo_light"/> <!-- not selected -->
</selector>

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2008 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="false" android:state_selected="false" />
<item android:drawable="@drawable/tab" android:state_focused="false" android:state_pressed="false" android:state_selected="true" />
<!-- Focused states -->
<item android:drawable="@android:color/transparent" android:state_focused="true" android:state_pressed="false" android:state_selected="false" />
<item android:drawable="@drawable/tab" android:state_focused="true" android:state_pressed="false" android:state_selected="true" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="true" android:state_selected="false" />
<item android:drawable="@drawable/tab" android:state_focused="false" android:state_pressed="true" android:state_selected="true" />
<!-- Focused states -->
<item android:drawable="@android:color/transparent" android:state_focused="true" android:state_pressed="true" android:state_selected="false" />
<item android:drawable="@drawable/tab" android:state_focused="true" android:state_pressed="true" android:state_selected="true" />
</selector>

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2008 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:color="#4d4d4d" android:state_focused="false" android:state_pressed="false" android:state_selected="false" />
<item android:color="#ff4040" android:state_focused="false" android:state_pressed="false" android:state_selected="true" />
<!-- Focused states -->
<item android:color="#4d4d4d" android:state_focused="true" android:state_pressed="false" android:state_selected="false" />
<item android:color="#ff4040" android:state_focused="true" android:state_pressed="false" android:state_selected="true" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:color="#4d4d4d" android:state_focused="false" android:state_pressed="true" android:state_selected="false" />
<item android:color="#ff4040" android:state_focused="false" android:state_pressed="true" android:state_selected="true" />
<!-- Focused states -->
<item android:color="#4d4d4d" android:state_focused="true" android:state_pressed="true" android:state_selected="false" />
<item android:color="#ff4040" android:state_focused="true" android:state_pressed="true" android:state_selected="true" />
</selector>

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr format="boolean" name="centered"/>
<attr format="color" name="selectedColor"/>
<attr format="dimension" name="strokeWidth"/>
<attr format="color" name="unselectedColor"/>
<bool name="default_circle_indicator_centered">true</bool>
<bool name="default_circle_indicator_snap">false</bool>
<bool name="default_line_indicator_centered">true</bool>
<bool name="default_title_indicator_selected_bold">true</bool>
<bool name="default_underline_indicator_fades">true</bool>
<color name="default_circle_indicator_fill_color">#FFFFFFFF</color>
<color name="default_circle_indicator_page_color">#00000000</color>
<color name="default_circle_indicator_stroke_color">#FFDDDDDD</color>
<color name="default_line_indicator_selected_color">#FF33B5E5</color>
<color name="default_line_indicator_unselected_color">#FFBBBBBB</color>
<color name="default_title_indicator_footer_color">#FF33B5E5</color>
<color name="default_title_indicator_selected_color">#FFFFFFFF</color>
<color name="default_title_indicator_text_color">#BBFFFFFF</color>
<color name="default_underline_indicator_selected_color">#FF33B5E5</color>
<color name="vpi__background_holo_dark">#ff000000</color>
<color name="vpi__background_holo_light">#fff3f3f3</color>
<color name="vpi__bright_foreground_disabled_holo_dark">#ff4c4c4c</color>
<color name="vpi__bright_foreground_disabled_holo_light">#ffb2b2b2</color>
<color name="vpi__bright_foreground_holo_dark">@color/vpi__background_holo_light</color>
<color name="vpi__bright_foreground_holo_light">@color/vpi__background_holo_dark</color>
<color name="vpi__bright_foreground_inverse_holo_dark">@color/vpi__bright_foreground_holo_light</color>
<color name="vpi__bright_foreground_inverse_holo_light">@color/vpi__bright_foreground_holo_dark</color>
<declare-styleable name="CirclePageIndicator"><attr name="centered"/><attr format="color" name="fillColor"/><attr format="color" name="pageColor"/><attr name="android:orientation"/><attr format="dimension" name="radius"/><attr format="boolean" name="snap"/><attr format="color" name="strokeColor"/><attr name="strokeWidth"/><attr name="android:background"/></declare-styleable>
<declare-styleable name="LinePageIndicator"><attr name="centered"/><attr name="unselectedColor"/><attr name="selectedColor"/><attr format="dimension" name="lineWidth"/><attr name="strokeWidth"/><attr format="dimension" name="gapWidth"/><attr name="android:background"/></declare-styleable>
<declare-styleable name="TitlePageIndicator"><attr format="dimension" name="clipPadding"/><attr format="color" name="footerColor"/><attr format="dimension" name="footerLineHeight"/><attr name="footerIndicatorStyle">
<enum name="none" value="0"/>
<enum name="triangle" value="1"/>
<enum name="underline" value="2"/>
</attr><attr format="dimension" name="footerIndicatorHeight"/><attr format="dimension" name="footerIndicatorUnderlinePadding"/><attr format="dimension" name="footerPadding"/><attr name="linePosition">
<enum name="bottom" value="0"/>
<enum name="top" value="1"/>
</attr><attr name="selectedColor"/><attr format="boolean" name="selectedBold"/><attr name="android:textColor"/><attr name="android:textSize"/><attr format="dimension" name="titlePadding"/><attr format="dimension" name="topPadding"/><attr name="android:background"/></declare-styleable>
<declare-styleable name="UnderlinePageIndicator"><attr format="boolean" name="fades"/><attr format="integer" name="fadeDelay"/><attr format="integer" name="fadeLength"/><attr name="selectedColor"/><attr name="android:background"/></declare-styleable>
<declare-styleable name="ViewPagerIndicator"><attr format="reference" name="vpiCirclePageIndicatorStyle"/><attr format="reference" name="vpiIconPageIndicatorStyle"/><attr format="reference" name="vpiLinePageIndicatorStyle"/><attr format="reference" name="vpiTitlePageIndicatorStyle"/><attr format="reference" name="vpiTabPageIndicatorStyle"/><attr format="reference" name="vpiUnderlinePageIndicatorStyle"/></declare-styleable>
<dimen name="default_circle_indicator_radius">3dp</dimen>
<dimen name="default_circle_indicator_stroke_width">1dp</dimen>
<dimen name="default_line_indicator_gap_width">4dp</dimen>
<dimen name="default_line_indicator_line_width">12dp</dimen>
<dimen name="default_line_indicator_stroke_width">1dp</dimen>
<dimen name="default_title_indicator_clip_padding">4dp</dimen>
<dimen name="default_title_indicator_footer_indicator_height">4dp</dimen>
<dimen name="default_title_indicator_footer_indicator_underline_padding">20dp</dimen>
<dimen name="default_title_indicator_footer_line_height">2dp</dimen>
<dimen name="default_title_indicator_footer_padding">7dp</dimen>
<dimen name="default_title_indicator_text_size">15dp</dimen>
<dimen name="default_title_indicator_title_padding">5dp</dimen>
<dimen name="default_title_indicator_top_padding">7dp</dimen>
<integer name="default_circle_indicator_orientation">0</integer>
<integer name="default_title_indicator_footer_indicator_style">2</integer>
<integer name="default_title_indicator_line_position">0</integer>
<integer name="default_underline_indicator_fade_delay">300</integer>
<integer name="default_underline_indicator_fade_length">400</integer>
<style name="TextAppearance.TabPageIndicator" parent="Widget">
<item name="android:textStyle">bold</item>
<item name="android:textColor">@color/vpi__dark_theme</item>
</style>
<style name="Theme.PageIndicatorDefaults" parent="android:Theme">
<item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item>
<item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item>
</style>
<style name="Widget"/>
<style name="Widget.IconPageIndicator" parent="Widget">
<item name="android:layout_marginLeft">6dp</item>
<item name="android:layout_marginRight">6dp</item>
</style>
<style name="Widget.TabPageIndicator" parent="Widget">
<item name="android:gravity">center</item>
<item name="android:background">@drawable/vpi__tab_indicator</item>
<item name="android:paddingLeft">22dip</item>
<item name="android:paddingRight">22dip</item>
<item name="android:paddingTop">12dp</item>
<item name="android:paddingBottom">12dp</item>
<item name="android:textAppearance">@style/TextAppearance.TabPageIndicator</item>
<item name="android:textSize">16sp</item>
<item name="android:maxLines">1</item>
<item name="android:textColor">@drawable/vpi_text_tab_indicator</item>
</style>
</resources>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.viewpagerindicator"
android:versionCode="65"
android:versionName="2.4.1" > <!-- <uses-sdk android:minSdkVersion="4" /> -->
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
</manifest>

@ -0,0 +1,140 @@
int attr centered 0x7f010000
int attr clipPadding 0x7f01000b
int attr fadeDelay 0x7f010017
int attr fadeLength 0x7f010018
int attr fades 0x7f010016
int attr fillColor 0x7f010004
int attr footerColor 0x7f01000c
int attr footerIndicatorHeight 0x7f01000f
int attr footerIndicatorStyle 0x7f01000e
int attr footerIndicatorUnderlinePadding 0x7f010010
int attr footerLineHeight 0x7f01000d
int attr footerPadding 0x7f010011
int attr gapWidth 0x7f01000a
int attr linePosition 0x7f010012
int attr lineWidth 0x7f010009
int attr pageColor 0x7f010005
int attr radius 0x7f010006
int attr selectedBold 0x7f010013
int attr selectedColor 0x7f010001
int attr snap 0x7f010007
int attr strokeColor 0x7f010008
int attr strokeWidth 0x7f010002
int attr titlePadding 0x7f010014
int attr topPadding 0x7f010015
int attr unselectedColor 0x7f010003
int attr vpiCirclePageIndicatorStyle 0x7f010019
int attr vpiIconPageIndicatorStyle 0x7f01001a
int attr vpiLinePageIndicatorStyle 0x7f01001b
int attr vpiTabPageIndicatorStyle 0x7f01001d
int attr vpiTitlePageIndicatorStyle 0x7f01001c
int attr vpiUnderlinePageIndicatorStyle 0x7f01001e
int bool default_circle_indicator_centered 0x7f030000
int bool default_circle_indicator_snap 0x7f030001
int bool default_line_indicator_centered 0x7f030002
int bool default_title_indicator_selected_bold 0x7f030003
int bool default_underline_indicator_fades 0x7f030004
int color default_circle_indicator_fill_color 0x7f040000
int color default_circle_indicator_page_color 0x7f040001
int color default_circle_indicator_stroke_color 0x7f040002
int color default_line_indicator_selected_color 0x7f040003
int color default_line_indicator_unselected_color 0x7f040004
int color default_title_indicator_footer_color 0x7f040005
int color default_title_indicator_selected_color 0x7f040006
int color default_title_indicator_text_color 0x7f040007
int color default_underline_indicator_selected_color 0x7f040008
int color vpi__background_holo_dark 0x7f040009
int color vpi__background_holo_light 0x7f04000a
int color vpi__bright_foreground_disabled_holo_dark 0x7f04000b
int color vpi__bright_foreground_disabled_holo_light 0x7f04000c
int color vpi__bright_foreground_holo_dark 0x7f04000d
int color vpi__bright_foreground_holo_light 0x7f04000e
int color vpi__bright_foreground_inverse_holo_dark 0x7f04000f
int color vpi__bright_foreground_inverse_holo_light 0x7f040010
int color vpi__dark_theme 0x7f040011
int color vpi__light_theme 0x7f040012
int dimen default_circle_indicator_radius 0x7f050000
int dimen default_circle_indicator_stroke_width 0x7f050001
int dimen default_line_indicator_gap_width 0x7f050002
int dimen default_line_indicator_line_width 0x7f050003
int dimen default_line_indicator_stroke_width 0x7f050004
int dimen default_title_indicator_clip_padding 0x7f050005
int dimen default_title_indicator_footer_indicator_height 0x7f050006
int dimen default_title_indicator_footer_indicator_underline_padding 0x7f050007
int dimen default_title_indicator_footer_line_height 0x7f050008
int dimen default_title_indicator_footer_padding 0x7f050009
int dimen default_title_indicator_text_size 0x7f05000a
int dimen default_title_indicator_title_padding 0x7f05000b
int dimen default_title_indicator_top_padding 0x7f05000c
int drawable community_tab_subscript 0x7f020000
int drawable tab 0x7f020001
int drawable vpi__tab_indicator 0x7f020002
int drawable vpi__tab_selected_focused_holo 0x7f020003
int drawable vpi__tab_selected_holo 0x7f020004
int drawable vpi__tab_selected_pressed_holo 0x7f020005
int drawable vpi__tab_unselected_focused_holo 0x7f020006
int drawable vpi__tab_unselected_holo 0x7f020007
int drawable vpi__tab_unselected_pressed_holo 0x7f020008
int drawable vpi_text_tab_indicator 0x7f020009
int id bottom 0x7f080003
int id none 0x7f080000
int id top 0x7f080004
int id triangle 0x7f080001
int id underline 0x7f080002
int integer default_circle_indicator_orientation 0x7f060000
int integer default_title_indicator_footer_indicator_style 0x7f060001
int integer default_title_indicator_line_position 0x7f060002
int integer default_underline_indicator_fade_delay 0x7f060003
int integer default_underline_indicator_fade_length 0x7f060004
int style TextAppearance_TabPageIndicator 0x7f070000
int style Theme_PageIndicatorDefaults 0x7f070001
int style Widget 0x7f070002
int style Widget_IconPageIndicator 0x7f070003
int style Widget_TabPageIndicator 0x7f070004
int[] styleable CirclePageIndicator { 0x010100c4, 0x010100d4, 0x7f010000, 0x7f010002, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008 }
int styleable CirclePageIndicator_android_background 1
int styleable CirclePageIndicator_android_orientation 0
int styleable CirclePageIndicator_centered 2
int styleable CirclePageIndicator_fillColor 4
int styleable CirclePageIndicator_pageColor 5
int styleable CirclePageIndicator_radius 6
int styleable CirclePageIndicator_snap 7
int styleable CirclePageIndicator_strokeColor 8
int styleable CirclePageIndicator_strokeWidth 3
int[] styleable LinePageIndicator { 0x010100d4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010009, 0x7f01000a }
int styleable LinePageIndicator_android_background 0
int styleable LinePageIndicator_centered 1
int styleable LinePageIndicator_gapWidth 6
int styleable LinePageIndicator_lineWidth 5
int styleable LinePageIndicator_selectedColor 2
int styleable LinePageIndicator_strokeWidth 3
int styleable LinePageIndicator_unselectedColor 4
int[] styleable TitlePageIndicator { 0x01010095, 0x01010098, 0x010100d4, 0x7f010001, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f, 0x7f010010, 0x7f010011, 0x7f010012, 0x7f010013, 0x7f010014, 0x7f010015 }
int styleable TitlePageIndicator_android_background 2
int styleable TitlePageIndicator_android_textColor 1
int styleable TitlePageIndicator_android_textSize 0
int styleable TitlePageIndicator_clipPadding 4
int styleable TitlePageIndicator_footerColor 5
int styleable TitlePageIndicator_footerIndicatorHeight 8
int styleable TitlePageIndicator_footerIndicatorStyle 7
int styleable TitlePageIndicator_footerIndicatorUnderlinePadding 9
int styleable TitlePageIndicator_footerLineHeight 6
int styleable TitlePageIndicator_footerPadding 10
int styleable TitlePageIndicator_linePosition 11
int styleable TitlePageIndicator_selectedBold 12
int styleable TitlePageIndicator_selectedColor 3
int styleable TitlePageIndicator_titlePadding 13
int styleable TitlePageIndicator_topPadding 14
int[] styleable UnderlinePageIndicator { 0x010100d4, 0x7f010001, 0x7f010016, 0x7f010017, 0x7f010018 }
int styleable UnderlinePageIndicator_android_background 0
int styleable UnderlinePageIndicator_fadeDelay 3
int styleable UnderlinePageIndicator_fadeLength 4
int styleable UnderlinePageIndicator_fades 2
int styleable UnderlinePageIndicator_selectedColor 1
int[] styleable ViewPagerIndicator { 0x7f010019, 0x7f01001a, 0x7f01001b, 0x7f01001c, 0x7f01001d, 0x7f01001e }
int styleable ViewPagerIndicator_vpiCirclePageIndicatorStyle 0
int styleable ViewPagerIndicator_vpiIconPageIndicatorStyle 1
int styleable ViewPagerIndicator_vpiLinePageIndicatorStyle 2
int styleable ViewPagerIndicator_vpiTabPageIndicatorStyle 4
int styleable ViewPagerIndicator_vpiTitlePageIndicatorStyle 3
int styleable ViewPagerIndicator_vpiUnderlinePageIndicatorStyle 5

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/vpi__bright_foreground_disabled_holo_dark"/>
<item android:state_window_focused="false" android:color="@color/vpi__bright_foreground_holo_dark"/>
<item android:state_pressed="true" android:color="@color/vpi__bright_foreground_holo_dark"/>
<item android:state_selected="true" android:color="@color/vpi__bright_foreground_holo_dark"/>
<!--item android:state_activated="true" android:color="@color/vpi__bright_foreground_holo_dark"/-->
<item android:color="@color/vpi__bright_foreground_holo_dark"/> <!-- not selected -->
</selector>

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/vpi__bright_foreground_disabled_holo_light"/>
<item android:state_window_focused="false" android:color="@color/vpi__bright_foreground_holo_light"/>
<item android:state_pressed="true" android:color="@color/vpi__bright_foreground_holo_light"/>
<item android:state_selected="true" android:color="@color/vpi__bright_foreground_holo_light"/>
<!--item android:state_activated="true" android:color="@color/vpi__bright_foreground_holo_light"/-->
<item android:color="@color/vpi__bright_foreground_holo_light"/> <!-- not selected -->
</selector>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save