[
  {
    "path": "CNiao5Shop.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module external.linked.project.id=\"CNiao5Shop\" external.linked.project.path=\"$MODULE_DIR$\" external.root.project.path=\"$MODULE_DIR$\" external.system.id=\"GRADLE\" external.system.module.group=\"\" external.system.module.version=\"unspecified\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"java-gradle\" name=\"Java-Gradle\">\n      <configuration>\n        <option name=\"BUILD_FOLDER_PATH\" value=\"$MODULE_DIR$/build\" />\n        <option name=\"BUILDABLE\" value=\"false\" />\n      </configuration>\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_7\" inherit-compiler-output=\"true\">\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\">\n      <excludeFolder url=\"file://$MODULE_DIR$/.gradle\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n  </component>\n</module>"
  },
  {
    "path": "README.md",
    "content": "\n**h2声明：**<br/>\n 此源码是菜鸟窝企业项目课程[《菜鸟商城》](http://www.cniao5.com/clazz/view/10073.html)的源码\n 我花了1000+大洋学习此课程获取到的，我分享源码出来未来大家方便学习，所以源码只限于学习用途，如用作商业用途与本人无关\n\n\n**交流QQ群：** 374899552\n\n**下载：**<br/>\n课程地址：[《菜鸟商城》](http://www.cniao5.com/clazz/view/10073.html)<br/>\n视频下载地址:http://pan.baidu.com/s/1dExm8lr  密码：c93f\n\n**【运行效果】**<br/>\n\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/13.order.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/14.pay_success.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/18.myorder.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/1.home.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/2.hot.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/3.category_all.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/4.cart.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/5.cart_del.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/6.list.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/7.list2.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/8.detail.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/9.detail_shared.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/10.login.png\" width=\"460\" height=\"768\"/>\n\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/11.login_next.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/15.login.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/10.login.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/16.addr_list.png\" width=\"460\" height=\"768\"/>\n<img src=\"https://github.com/yxs666/cniao5-shop/blob/master/screenshot/17.addr_add.png\" width=\"460\" height=\"768\"/>"
  },
  {
    "path": "app/.gitignore",
    "content": "/build\n"
  },
  {
    "path": "app/app.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module external.linked.project.id=\":app\" external.linked.project.path=\"$MODULE_DIR$\" external.root.project.path=\"$MODULE_DIR$/..\" external.system.id=\"GRADLE\" external.system.module.group=\"CNiao5Shop\" external.system.module.version=\"unspecified\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"android-gradle\" name=\"Android-Gradle\">\n      <configuration>\n        <option name=\"GRADLE_PROJECT_PATH\" value=\":app\" />\n      </configuration>\n    </facet>\n    <facet type=\"android\" name=\"Android\">\n      <configuration>\n        <option name=\"SELECTED_BUILD_VARIANT\" value=\"debug\" />\n        <option name=\"SELECTED_TEST_ARTIFACT\" value=\"_android_test_\" />\n        <option name=\"ASSEMBLE_TASK_NAME\" value=\"assembleDebug\" />\n        <option name=\"COMPILE_JAVA_TASK_NAME\" value=\"compileDebugSources\" />\n        <option name=\"ASSEMBLE_TEST_TASK_NAME\" value=\"assembleDebugAndroidTest\" />\n        <option name=\"COMPILE_JAVA_TEST_TASK_NAME\" value=\"compileDebugAndroidTestSources\" />\n        <afterSyncTasks>\n          <task>generateDebugAndroidTestSources</task>\n          <task>generateDebugSources</task>\n        </afterSyncTasks>\n        <option name=\"ALLOW_USER_CONFIGURATION\" value=\"false\" />\n        <option name=\"MANIFEST_FILE_RELATIVE_PATH\" value=\"/src/main/AndroidManifest.xml\" />\n        <option name=\"RES_FOLDER_RELATIVE_PATH\" value=\"/src/main/res\" />\n        <option name=\"RES_FOLDERS_RELATIVE_PATH\" value=\"file://$MODULE_DIR$/src/main/res\" />\n        <option name=\"ASSETS_FOLDER_RELATIVE_PATH\" value=\"/src/main/assets\" />\n      </configuration>\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_7\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/build/intermediates/classes/debug\" />\n    <output-test url=\"file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug\" />\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/r/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/aidl/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/buildConfig/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/rs/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/rs/debug\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/generated/debug\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/r/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/res\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/resources\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/assets\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/aidl\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/java\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/jni\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/rs\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/assets\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/bundles\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/classes\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dependency-cache\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dex\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dex-cache\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/cardview-v7/23.0.1/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/23.0.1/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.0.1/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.cjj.materialrefeshlayout/library/1.3.0/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.daimajia.slider/library/1.1.5/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/drawee/0.6.0/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/fbcore/0.6.0/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/fresco/0.6.0/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/imagepipeline-okhttp/0.6.0/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/imagepipeline/0.6.0/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.github.d-max/spots-dialog/0.4/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/com.jiechic.library/xUtils/2.6.14/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/exploded-aar/de.hdodenhof/circleimageview/2.0.0/jars\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/incremental\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/jacoco\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/javaResources\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/libs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/lint\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/manifests\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/ndk\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/pre-dexed\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/proguard\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/res\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/rs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/symbols\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/outputs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/tmp\" />\n    </content>\n    <orderEntry type=\"jdk\" jdkName=\"Android API 23 Platform\" jdkType=\"Android SDK\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"fbcore-0.6.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"spots-dialog-0.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"circleimageview-2.0.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"drawee-0.6.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"picasso-2.5.2\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"library-1.3.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"support-v4-23.0.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"gson-2.3.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"cardview-v7-23.0.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"design-23.0.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"appcompat-v7-23.0.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"okhttp-2.5.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"okio-1.6.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"imagepipeline-0.6.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"fresco-0.6.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"xUtils-2.6.14\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"imagepipeline-okhttp-0.6.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"library-1.1.5\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"bolts-android-1.1.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"library-2.4.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"support-annotations-23.0.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"recyclerview-v7-23.0.1\" level=\"project\" />\n    <orderEntry type=\"module\" module-name=\"sharesdk\" exported=\"\" />\n  </component>\n</module>"
  },
  {
    "path": "app/build.gradle",
    "content": "apply plugin: 'com.android.application'\n\nandroid {\n    compileSdkVersion 23\n    buildToolsVersion \"23.0.1\"\n\n    defaultConfig {\n        applicationId \"cniao5.com.cniao5shop\"\n        minSdkVersion 15\n        targetSdkVersion 23\n        versionCode 1\n        versionName \"1.0\"\n    }\n    buildTypes {\n        release {\n            minifyEnabled false\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\n        }\n    }\n}\n\ndependencies {\n    compile fileTree(dir: 'libs', include: ['*.jar'])\n    compile 'com.android.support:appcompat-v7:23.0.1'\n    compile 'com.android.support:recyclerview-v7:23.0.1'\n    compile 'com.jiechic.library:xUtils:2.6.14'\n    compile 'com.nineoldandroids:library:2.4.0'\n    compile 'com.daimajia.slider:library:1.1.5@aar'\n    compile 'com.android.support:cardview-v7:23.0.1'\n    compile 'com.squareup.picasso:picasso:2.5.2'\n    compile 'com.squareup.okhttp:okhttp:2.5.0'\n    compile 'com.google.code.gson:gson:2.3.1'\n    compile 'com.github.d-max:spots-dialog:0.4@aar'\n    compile 'com.facebook.fresco:fresco:0.6.0+'\n    compile 'com.facebook.fresco:imagepipeline-okhttp:0.6.0+'\n    compile 'com.cjj.materialrefeshlayout:library:1.3.0'\n    compile 'com.android.support:design:23.0.1'\n    compile 'de.hdodenhof:circleimageview:2.0.0'\n    compile project(':sharesdk')\n}\n"
  },
  {
    "path": "app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /Users/Ivan/soft/dev/android/android-sdk-macosx/tools/proguard/proguard-android.txt\n# You can edit the include path and order by changing the proguardFiles\n# directive in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# Add any project specific keep options here:\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n"
  },
  {
    "path": "app/src/androidTest/java/cniao5/com/cniao5shop/ApplicationTest.java",
    "content": "package cniao5.com.cniao5shop;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <a href=\"http://d.android.com/tools/testing/testing_android.html\">Testing Fundamentals</a>\n */\npublic class ApplicationTest extends ApplicationTestCase<Application> {\n    public ApplicationTest() {\n        super(Application.class);\n    }\n}"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"cniao5.com.cniao5shop\" >\n\n    <!-- if you want to load images from the internet -->\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n\n    <!-- if you want to load images from a file OR from the internet -->\n    <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" />\n\n   <uses-permission android:name=\"android.permission.GET_TASKS\" />\n\n    <uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />\n    <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />\n    <uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" />\n    <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />\n    <uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />\n    <uses-permission android:name=\"android.permission.MANAGE_ACCOUNTS\"/>\n    <uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>\n    <!-- 蓝牙分享所需的权限 -->\n    <uses-permission android:name=\"android.permission.BLUETOOTH\" />\n    <uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />\n\n    <application\n        android:name=\".CniaoApplication\"\n        android:allowBackup=\"true\"\n        android:icon=\"@mipmap/ic_launcher\"\n        android:label=\"@string/app_name\"\n        android:theme=\"@style/AppTheme\" >\n        <activity\n            android:name=\".MainActivity\"\n            android:label=\"@string/app_name\" >\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\" />\n\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n\n        <!-- <activity android:name=\".TestActvity\"></activity> -->\n        <activity android:name=\".WareListActivity\" />\n        <activity\n            android:name=\".WareDetailActivity\"\n            android:label=\"@string/title_activity_ware_detail\" >\n        </activity>\n\n\n        <activity\n            android:name=\"com.mob.tools.MobUIShell\"\n            android:theme=\"@android:style/Theme.Translucent.NoTitleBar\"\n            android:configChanges=\"keyboardHidden|orientation|screenSize\"\n            android:screenOrientation=\"portrait\"\n            android:windowSoftInputMode=\"stateHidden|adjustResize\" >\n            <intent-filter>\n                <data android:scheme=\"tencent100371282\" />\n                <action android:name=\"android.intent.action.VIEW\" />\n                <category android:name=\"android.intent.category.BROWSABLE\" />\n                <category android:name=\"android.intent.category.DEFAULT\" />\n            </intent-filter>\n        </activity>\n    </application>\n\n</manifest>\n"
  },
  {
    "path": "app/src/main/assets/ShareSDK.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<DevInfor>\r\n    <!--\r\n    \t说明：\r\n    \t\r\n    \t1、表格中的第一项\r\n    \t\t<ShareSDK \r\n        \t\tAppKey=\"api20\" />\r\n    \t是必须的，其中的AppKey是您在ShareSDK上注册的开发者帐号的AppKey\r\n    \t\r\n    \t2、所有集成到您项目的平台都应该为其在表格中填写相对应的开发者信息，以新浪微博为例：\r\n    \t    <SinaWeibo\r\n                Id=\"1\"\r\n                SortId=\"1\"\r\n                AppKey=\"568898243\"\r\n                AppSecret=\"38a4f8204cc784f81f9f0daaf31e02e3\"\r\n                RedirectUrl=\"http://www.mob.com\"\r\n                Enable=\"true\" />\r\n    \t其中的SortId是此平台在分享列表中的位置，由开发者自行定义，可以是任何整型数字，数值越大\r\n    \t越靠后AppKey、AppSecret和RedirectUrl是您在新浪微博上注册开发者信息和应用后得到的信息\r\n    \tId是一个保留的识别符，整型，ShareSDK不使用此字段，供您在自己的项目中当作平台的识别符。\r\n    \tEnable字段表示此平台是否有效，布尔值，默认为true，如果Enable为false，即便平台的jar包\r\n    \t已经添加到应用中，平台实例依然不可获取。\r\n    \t\r\n    \t各个平台注册应用信息的地址如下：\r\n\t\t\t新浪微博        http://open.weibo.com\r\n\t\t\t腾讯微博        http://dev.t.qq.com\r\n\t\t\tQQ空间          http://connect.qq.com/intro/login/\r\n\t\t\t微信好友        http://open.weixin.qq.com\r\n\t\t\tFacebook       https://developers.facebook.com\r\n\t\t\tTwitter        https://dev.twitter.com\r\n\t\t\t人人网          http://dev.renren.com\r\n\t\t\t开心网          http://open.kaixin001.com\r\n\t\t\t搜狐微博        http://open.t.sohu.com\r\n\t\t\t网易微博        http://open.t.163.com\r\n\t\t\t豆瓣           http://developers.douban.com\r\n\t\t\t\r\n\t\t\t有道云笔记      http://note.youdao.com/open/developguide.html#app\r\n\t\t\t印象笔记        https://dev.evernote.com/\r\n\t\t\tLinkedin       https://developer.linkedin.com\r\n\t\t\tFourSquare     https://developer.foursquare.com/\r\n\t\t\t搜狐随身看      https://open.sohu.com/\r\n\t\t\tFlickr         http://www.flickr.com/services/\r\n\t\t\tPinterest      http://developers.pinterest.com/\r\n\t\t\tTumblr         http://www.tumblr.com/developers\r\n\t\t\tDropbox        https://www.dropbox.com/developers\r\n\t\t\tInstagram      http://instagram.com/developer#\r\n\t\t\tVKontakte      http://vk.com/dev\r\n\t\t\t易信好友        http://open.yixin.im/\r\n\t\t\t明道\t           http://open.mingdao.com/\r\n\t\t\tLine           http://media.line.me/zh-hant/\r\n\t\t\tPocket         http://getpocket.com/developer/apps/new\r\n    -->\r\n    \r\n    <ShareSDK \r\n        AppKey = \"androidv1101\"/> <!-- 修改成你在sharesdk后台注册的应用的appkey\"-->\r\n    \r\n    <!-- ShareByAppClient标识是否使用微博客户端分享，默认是false -->\r\n    <SinaWeibo\r\n        Id=\"1\"\r\n        SortId=\"4\"\r\n        AppKey=\"568898243\"\r\n        AppSecret=\"38a4f8204cc784f81f9f0daaf31e02e3\"\r\n        RedirectUrl=\"http://www.sharesdk.cn\"\r\n        ShareByAppClient=\"false\"\r\n        Enable=\"true\" />\r\n\r\n    <TencentWeibo\r\n        Id=\"2\" \r\n        SortId=\"2\"\r\n        AppKey=\"801307650\"\r\n        AppSecret=\"ae36f4ee3946e1cbb98d6965b0b2ff5c\"\r\n        RedirectUri=\"http://sharesdk.cn\"\r\n        Enable=\"true\" />\r\n\r\n    <!-- ShareByAppClient标识是否使用微博客户端分享，默认是false -->\r\n    <QZone\r\n        Id=\"3\"\r\n        SortId=\"3\"\r\n        AppId=\"100371282\"\r\n        AppKey=\"aed9b0303e3ed1e27bae87c33761161d\"\r\n        ShareByAppClient=\"false\"\r\n        Enable=\"true\" />\r\n    \r\n    <!-- \r\n    \tWechat微信和WechatMoments微信朋友圈的appid是一样的；\r\n    \r\n                       注意：开发者不能用我们这两个平台的appid,否则分享不了\r\n    \r\n       \t  微信测试的时候，微信测试需要先签名打包出apk,\r\n\t\tsample测试微信，要先签名打包，keystore在sample项目中，密码123456\r\n\t\t\r\n\t\tBypassApproval是绕过审核的标记，设置为true后AppId将被忽略，故不经过\r\n\t\t审核的应用也可以执行分享，但是仅限于分享文字和图片，不能分享其他类型，\r\n\t\t默认值为false。此外，微信收藏不支持此字段。\r\n\t-->\r\n    <Wechat\r\n        Id=\"4\"\r\n        SortId=\"1\"\r\n        AppId=\"wx4868b35061f87885\"\r\n        AppSecret=\"64020361b8ec4c99936c0e3999a9f249\"\r\n        BypassApproval=\"false\"\r\n        Enable=\"true\" />\r\n    \r\n    <WechatMoments\r\n        Id=\"5\"\r\n        SortId=\"5\"\r\n        AppId=\"wx4868b35061f87885\"\r\n        AppSecret=\"64020361b8ec4c99936c0e3999a9f249\"\r\n        BypassApproval=\"false\"\r\n        Enable=\"true\" />\r\n        \r\n\t<WechatFavorite\r\n        Id=\"6\"\r\n        SortId=\"6\"\r\n        AppId=\"wx4868b35061f87885\"\r\n        AppSecret=\"64020361b8ec4c99936c0e3999a9f249\"\r\n        Enable=\"true\" />\r\n    \r\n\t<!-- ShareByAppClient标识是否使用微博客户端分享，默认是false -->\r\n\t<QQ\r\n        Id=\"7\"\r\n        SortId=\"7\"\r\n        AppId=\"100371282\"\r\n        AppKey=\"aed9b0303e3ed1e27bae87c33761161d\"\r\n        ShareByAppClient=\"true\"\r\n        Enable=\"true\" />\r\n    \r\n    <Facebook\r\n        Id=\"8\"\r\n        SortId=\"8\"\r\n        ConsumerKey=\"107704292745179\"\r\n        ConsumerSecret=\"38053202e1a5fe26c80c753071f0b573\"\r\n        RedirectUrl=\"http://mob.com\"\r\n        Enable=\"true\" />\r\n\r\n    <Twitter\r\n        Id=\"9\"\r\n        SortId=\"9\"\r\n        ConsumerKey=\"LRBM0H75rWrU9gNHvlEAA2aOy\"\r\n        ConsumerSecret=\"gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G\"\r\n        CallbackUrl=\"http://mob.com\"\r\n        Enable=\"true\" />\r\n    \r\n    <Renren\r\n        Id=\"10\"\r\n        SortId=\"10\"\r\n        AppId=\"226427\"\r\n        ApiKey=\"fc5b8aed373c4c27a05b712acba0f8c3\"\r\n        SecretKey=\"f29df781abdd4f49beca5a2194676ca4\"\r\n        Enable=\"true\" />\r\n    \r\n    <KaiXin\r\n        Id=\"11\"\r\n        SortId=\"11\"\r\n        AppKey=\"358443394194887cee81ff5890870c7c\"\r\n        AppSecret=\"da32179d859c016169f66d90b6db2a23\"\r\n        RedirectUri=\"http://www.sharesdk.cn\"\r\n        Enable=\"true\" />\r\n    \r\n    <Email\r\n        Id=\"12\" \r\n        SortId=\"12\"\r\n        Enable=\"true\" />\r\n    \r\n    <ShortMessage\r\n        Id=\"13\" \r\n        SortId=\"13\"\r\n        Enable=\"true\" />\r\n    \r\n    <Douban\r\n        Id=\"16\"\r\n        SortId=\"16\"\r\n        ApiKey=\"031a96a3aa8b28af094fc3eaffa17a0d\"\r\n        Secret=\"2e675e730571b75d\"\r\n        RedirectUri=\"http://mob.com\"\r\n        Enable=\"true\" />\r\n    \r\n    <YouDao\r\n        Id=\"17\"\r\n        SortId=\"17\"\r\n        HostType=\"product\"\r\n        ConsumerKey=\"dcde25dca105bcc36884ed4534dab940\"\r\n        ConsumerSecret=\"d98217b4020e7f1874263795f44838fe\"\r\n        RedirectUri=\"http://www.sharesdk.cn/\"\r\n        Enable=\"true\" />\r\n        \r\n\t<SohuSuishenkan\r\n        Id=\"18\"\r\n        SortId=\"18\"\r\n        AppKey=\"e16680a815134504b746c86e08a19db0\"\r\n        AppSecret=\"b8eec53707c3976efc91614dd16ef81c\"\r\n        RedirectUri=\"http://sharesdk.cn\"\r\n        Enable=\"true\" />\r\n        \r\n    <!-- \r\n    \t在中国大陆，印象笔记有两个服务器，一个是沙箱（sandbox），一个是生产服务器（china）。\r\n    \t一般你注册应用，它会先让你使用sandbox，当你完成测试以后，可以到\r\n    \thttp://dev.yinxiang.com/support/上激活你的ConsumerKey，激活成功后，修改HostType\r\n    \t为china就好了。至于如果您申请的是国际版的印象笔记（Evernote），则其生产服务器类型为\r\n    \t“product”。\r\n    \t\r\n    \t如果目标设备上已经安装了印象笔记客户端，ShareSDK允许应用调用本地API来完成分享，但\r\n    \t是需要将应用信息中的“ShareByAppClient”设置为true，此字段默认值为false。\r\n    -->\r\n    <Evernote\r\n        Id=\"19\"\r\n        SortId=\"19\"\r\n        HostType=\"sandbox\"\r\n    \tConsumerKey=\"sharesdk-7807\"\r\n\t\tConsumerSecret=\"d05bf86993836004\"\r\n\t\tShareByAppClient=\"false\"\r\n\t\tEnable=\"true\" />\r\n    \r\n    <LinkedIn\r\n    \tId=\"20\"\r\n        SortId=\"20\"\r\n        ApiKey=\"ejo5ibkye3vo\"\r\n        SecretKey=\"cC7B2jpxITqPLZ5M\" \r\n        RedirectUrl=\"http://sharesdk.cn\"\r\n        Enable=\"true\" />\r\n    \r\n     <GooglePlus\r\n    \tId=\"21\"\r\n        SortId=\"21\"\r\n        Enable=\"true\" />\r\n     \r\n     <FourSquare\r\n    \tId=\"22\"\r\n        SortId=\"22\"\r\n        ClientID=\"G0ZI20FM30SJAJTX2RIBGD05QV1NE2KVIM2SPXML2XUJNXEU\"\r\n        ClientSecret=\"3XHQNSMMHIFBYOLWEPONNV4DOTCDBQH0AEMVGCBG0MZ32XNU\"\r\n        RedirectUrl=\"http://www.sharesdk.cn\"\r\n        Enable=\"true\" />\r\n        \r\n\t<Pinterest\r\n    \tId=\"23\"\r\n        SortId=\"23\"\r\n        ClientId=\"1432928\"\r\n        Enable=\"true\" />\r\n     \r\n     <Flickr\r\n     \tId=\"24\"\r\n        SortId=\"24\"\r\n        ApiKey=\"33d833ee6b6fca49943363282dd313dd\"\r\n        ApiSecret=\"3a2c5b42a8fbb8bb\"\r\n        RedirectUri=\"http://www.sharesdk.cn\"\r\n        Enable=\"true\" />\r\n        \r\n    <Tumblr\r\n        Id=\"25\"\r\n        SortId=\"25\"\r\n        OAuthConsumerKey=\"2QUXqO9fcgGdtGG1FcvML6ZunIQzAEL8xY6hIaxdJnDti2DYwM\"\r\n\t\tSecretKey=\"3Rt0sPFj7u2g39mEVB3IBpOzKnM3JnTtxX2bao2JKk4VV1gtNo\"\r\n\t\tCallbackUrl=\"http://sharesdk.cn\"\r\n        Enable=\"true\" />\r\n \r\n\t<Dropbox\r\n        Id=\"26\"\r\n        SortId=\"26\"\r\n        AppKey=\"i5vw2mex1zcgjcj\" \r\n\t\tAppSecret=\"3i9xifsgb4omr0s\"\r\n\t\tRedirectUri=\"https://www.sharesdk.cn\"\r\n        Enable=\"true\" />\r\n        \r\n    <VKontakte \r\n    \tId=\"27\"\r\n        SortId=\"27\"\r\n        ApplicationId=\"3921561\"\r\n        Enable=\"true\" />\r\n        \r\n    <Instagram \r\n    \tId=\"28\"\r\n        SortId=\"28\"\r\n        ClientId=\"ff68e3216b4f4f989121aa1c2962d058\"\r\n\t\tClientSecret=\"1b2e82f110264869b3505c3fe34e31a1\"\r\n\t\tRedirectUri=\"http://sharesdk.cn\"\r\n        Enable=\"true\" />\r\n    \r\n    <!-- \r\n    \tYixin易信和YixinMoments易信朋友圈的appid是一样的；\r\n    \r\n                       注意：开发者不能用我们这两个平台的appid,否则分享不了\r\n    \r\n       \t 易信测试的时候需要先签名打包出apk,\r\n\t\tsample测试易信，要先签名打包，keystore在sample项目中，密码123456\r\n\t\t\r\n\t\tBypassApproval是绕过审核的标记，设置为true后AppId将被忽略，故不经过\r\n\t\t审核的应用也可以执行分享，但是仅限于分享文字或图片，不能分享其他类型，\r\n\t\t默认值为false。\r\n\t-->\r\n\t<Yixin \r\n    \tId=\"29\"\r\n        SortId=\"29\"\r\n        AppId=\"yx0d9a9f9088ea44d78680f3274da1765f\"\r\n        BypassApproval=\"true\"\r\n        Enable=\"true\" />\r\n\t\r\n\t<YixinMoments\r\n    \tId=\"30\"\r\n        SortId=\"30\"\r\n        AppId=\"yx0d9a9f9088ea44d78680f3274da1765f\"\r\n        BypassApproval=\"true\"\r\n        Enable=\"true\" />\r\n\r\n\t<Mingdao\r\n    \tId=\"31\"\r\n        SortId=\"31\"\r\n        AppKey=\"EEEE9578D1D431D3215D8C21BF5357E3\"\r\n        AppSecret=\"5EDE59F37B3EFA8F65EEFB9976A4E933\"\r\n        RedirectUri=\"http://sharesdk.cn\"\r\n        Enable=\"true\" />\r\n\t\r\n\t<Line\r\n\t    Id=\"32\"\r\n        SortId=\"32\"\r\n        Enable=\"true\" />\r\n\t\r\n\t<KakaoTalk\r\n\t    Id=\"33\"\r\n        SortId=\"33\"\r\n        AppKey=\"48d3f524e4a636b08d81b3ceb50f1003\"\r\n        Enable=\"true\" />\r\n\t\r\n\t<KakaoStory\r\n\t    Id=\"34\"\r\n        SortId=\"34\"\r\n        AppKey=\"48d3f524e4a636b08d81b3ceb50f1003\"\r\n        Enable=\"true\" />\r\n\r\n    <WhatsApp\r\n        Id=\"35\"\r\n        SortId=\"35\"\r\n        Enable=\"true\" />\r\n    \r\n    <Bluetooth\r\n        Id=\"36\"\r\n        SortId=\"36\"\r\n        Enable=\"false\" />\r\n\r\n    <Pocket\r\n        Id=\"37\"\r\n        SortId=\"37\"\r\n        ConsumerKey=\"32741-389c565043c49947ba7edf05\"\r\n        Enable=\"true\" />\r\n    \r\n    <Instapaper\r\n        Id=\"38\"\r\n        SortId=\"38\"\r\n        ConsumerKey=\"4rDJORmcOcSAZL1YpqGHRI605xUvrLbOhkJ07yO0wWrYrc61FA\"\r\n        ConsumerSecret=\"GNr1GespOQbrm8nvd7rlUsyRQsIo3boIbMguAl9gfpdL0aKZWe\"\r\n        Enable=\"true\" />\r\n    \r\n    <FacebookMessenger\r\n        Id=\"39\"\r\n        SortId=\"39\"\r\n        ConsumerKey=\"107704292745179\"\r\n        ConsumerSecret=\"38053202e1a5fe26c80c753071f0b573\"\r\n        RedirectUrl=\"http://mob.com\"\r\n        Enable=\"true\" />\r\n    \r\n     <Alipay\r\n        Id=\"52\"\r\n        SortId=\"52\"  \r\n        AppId=\"2015072400185895\"\r\n        Enable=\"true\"/>\r\n</DevInfor>"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/CniaoApplication.java",
    "content": "package cniao5.com.cniao5shop;\n\nimport android.app.Application;\n\nimport com.facebook.drawee.backends.pipeline.Fresco;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class CniaoApplication extends Application {\n\n    @Override\n    public void onCreate() {\n        super.onCreate();\n\n        Fresco.initialize(this);\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/Contants.java",
    "content": "package cniao5.com.cniao5shop;\n\n\npublic class Contants {\n\n\n\n    public static final String  COMPAINGAIN_ID=\"compaigin_id\";\n    public static final String  WARE=\"ware\";\n\n\n    public static class API{\n\n\n        public static final String BASE_URL=\"http://112.124.22.238:8081/course_api/\";\n\n        public static final String CAMPAIGN_HOME=BASE_URL + \"campaign/recommend\";\n\n        public static final String BANNER=BASE_URL +\"banner/query\";\n\n\n        public static final String WARES_HOT=BASE_URL + \"wares/hot\";\n        public static final String WARES_LIST=BASE_URL +\"wares/list\";\n        public static final String WARES_CAMPAIN_LIST=BASE_URL +\"wares/campaign/list\";\n        public static final String WARES_DETAIL=BASE_URL +\"wares/detail.html\";\n\n        public static final String CATEGORY_LIST=BASE_URL +\"category/list\";\n\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/MainActivity.java",
    "content": "package cniao5.com.cniao5shop;\n\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.support.v7.app.AppCompatActivity;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.widget.ImageView;\nimport android.widget.LinearLayout;\nimport android.widget.TabHost;\nimport android.widget.TextView;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.bean.Tab;\nimport cniao5.com.cniao5shop.fragment.CartFragment;\nimport cniao5.com.cniao5shop.fragment.CategoryFragment;\nimport cniao5.com.cniao5shop.fragment.HomeFragment;\nimport cniao5.com.cniao5shop.fragment.HotFragment;\nimport cniao5.com.cniao5shop.fragment.MineFragment;\nimport cniao5.com.cniao5shop.widget.FragmentTabHost;\n\npublic class MainActivity extends AppCompatActivity {\n\n\n\n    private LayoutInflater mInflater;\n\n    private FragmentTabHost mTabhost;\n\n    private CartFragment cartFragment;\n\n    private List<Tab> mTabs = new ArrayList<>(5);\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n\n        initTab();\n\n    }\n\n\n\n    private void initTab() {\n\n\n        Tab tab_home = new Tab(HomeFragment.class,R.string.home,R.drawable.selector_icon_home);\n        Tab tab_hot = new Tab(HotFragment.class,R.string.hot,R.drawable.selector_icon_hot);\n        Tab tab_category = new Tab(CategoryFragment.class,R.string.catagory,R.drawable.selector_icon_category);\n        Tab tab_cart = new Tab(CartFragment.class,R.string.cart,R.drawable.selector_icon_cart);\n        Tab tab_mine = new Tab(MineFragment.class,R.string.mine,R.drawable.selector_icon_mine);\n\n        mTabs.add(tab_home);\n        mTabs.add(tab_hot);\n        mTabs.add(tab_category);\n        mTabs.add(tab_cart);\n        mTabs.add(tab_mine);\n\n\n\n        mInflater = LayoutInflater.from(this);\n        mTabhost = (FragmentTabHost) this.findViewById(android.R.id.tabhost);\n        mTabhost.setup(this,getSupportFragmentManager(),R.id.realtabcontent);\n\n        for (Tab tab : mTabs){\n\n            TabHost.TabSpec tabSpec = mTabhost.newTabSpec(getString(tab.getTitle()));\n\n            tabSpec.setIndicator(buildIndicator(tab));\n\n            mTabhost.addTab(tabSpec,tab.getFragment(),null);\n\n        }\n\n        mTabhost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {\n            @Override\n            public void onTabChanged(String tabId) {\n\n                if(tabId==getString(R.string.cart)){\n\n                    refData();\n                }\n\n            }\n        });\n\n        mTabhost.getTabWidget().setShowDividers(LinearLayout.SHOW_DIVIDER_NONE);\n        mTabhost.setCurrentTab(0);\n\n\n    }\n\n\n    private void refData(){\n\n        if(cartFragment == null){\n\n            Fragment fragment =  getSupportFragmentManager().findFragmentByTag(getString(R.string.cart));\n            if(fragment !=null){\n                cartFragment= (CartFragment) fragment;\n                cartFragment.refData();\n            }\n        }\n        else{\n            cartFragment.refData();\n\n        }\n    }\n\n\n    private  View buildIndicator(Tab tab){\n\n\n        View view =mInflater.inflate(R.layout.tab_indicator,null);\n        ImageView img = (ImageView) view.findViewById(R.id.icon_tab);\n        TextView text = (TextView) view.findViewById(R.id.txt_indicator);\n\n        img.setBackgroundResource(tab.getIcon());\n        text.setText(tab.getTitle());\n\n        return  view;\n    }\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/WareDetailActivity.java",
    "content": "package cniao5.com.cniao5shop;\n\nimport android.content.Context;\nimport android.os.Bundle;\nimport android.support.v7.app.AppCompatActivity;\nimport android.view.View;\nimport android.webkit.JavascriptInterface;\nimport android.webkit.WebSettings;\nimport android.webkit.WebView;\nimport android.webkit.WebViewClient;\n\nimport com.lidroid.xutils.ViewUtils;\nimport com.lidroid.xutils.view.annotation.ViewInject;\n\nimport java.io.Serializable;\n\nimport cn.sharesdk.framework.ShareSDK;\nimport cn.sharesdk.onekeyshare.OnekeyShare;\nimport cniao5.com.cniao5shop.bean.Wares;\nimport cniao5.com.cniao5shop.utils.CartProvider;\nimport cniao5.com.cniao5shop.utils.ToastUtils;\nimport cniao5.com.cniao5shop.widget.CNiaoToolBar;\nimport dmax.dialog.SpotsDialog;\n\npublic class WareDetailActivity extends AppCompatActivity implements View.OnClickListener {\n\n\n    @ViewInject(R.id.webView)\n    private WebView mWebView;\n\n    @ViewInject(R.id.toolbar)\n    private CNiaoToolBar mToolBar;\n\n    private Wares mWare;\n\n    private WebAppInterface mAppInterfce;\n\n    private CartProvider cartProvider;\n\n    private SpotsDialog mDialog;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_ware_detail);\n        ViewUtils.inject(this);\n\n\n        Serializable serializable = getIntent().getSerializableExtra(Contants.WARE);\n        if(serializable ==null)\n            this.finish();\n\n\n        mDialog = new SpotsDialog(this,\"loading....\");\n        mDialog.show();\n\n\n        mWare = (Wares) serializable;\n        cartProvider = new CartProvider(this);\n\n        initToolBar();\n        initWebView();\n\n    }\n\n\n    private void initWebView(){\n\n        WebSettings settings = mWebView.getSettings();\n\n        settings.setJavaScriptEnabled(true);\n        settings.setBlockNetworkImage(false);\n        settings.setAppCacheEnabled(true);\n\n\n        mWebView.loadUrl(Contants.API.WARES_DETAIL);\n\n        mAppInterfce = new WebAppInterface(this);\n        mWebView.addJavascriptInterface(mAppInterfce,\"appInterface\");\n        mWebView.setWebViewClient(new WC());\n\n\n    }\n\n\n\n    private void initToolBar(){\n\n\n        mToolBar.setNavigationOnClickListener(this);\n        mToolBar.setRightButtonText(\"分享\");\n\n        mToolBar.setRightButtonOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n\n                showShare();\n            }\n        });\n\n    }\n\n\n    private void showShare() {\n        ShareSDK.initSDK(this);\n\n\n        OnekeyShare oks = new OnekeyShare();\n        //关闭sso授权\n        oks.disableSSOWhenAuthorize();\n\n// 分享时Notification的图标和文字  2.5.9以后的版本不调用此方法\n        //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));\n        // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用\n        oks.setTitle(getString(R.string.share));\n\n        // titleUrl是标题的网络链接，仅在人人网和QQ空间使用\n        oks.setTitleUrl(\"http://www.cniao5.com\");\n\n        // text是分享文本，所有平台都需要这个字段\n        oks.setText(mWare.getName());\n\n        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数\n//        oks.setImagePath(\"/sdcard/test.jpg\");//确保SDcard下面存在此张图片\n        oks.setImageUrl(mWare.getImgUrl());\n\n        // url仅在微信（包括好友和朋友圈）中使用\n        oks.setUrl(\"http://www.cniao5.com\");\n        // comment是我对这条分享的评论，仅在人人网和QQ空间使用\n        oks.setComment(mWare.getName());\n\n        // site是分享此内容的网站名称，仅在QQ空间使用\n        oks.setSite(getString(R.string.app_name));\n\n        // siteUrl是分享此内容的网站地址，仅在QQ空间使用\n        oks.setSiteUrl(\"http://www.cniao5.com\");\n\n// 启动分享GUI\n        oks.show(this);\n    }\n\n    @Override\n    protected void onDestroy() {\n        super.onDestroy();\n\n        ShareSDK.stopSDK(this);\n    }\n\n    @Override\n    public void onClick(View v) {\n        this.finish();\n    }\n\n\n\n    class  WC extends WebViewClient{\n\n\n        @Override\n        public void onPageFinished(WebView view, String url) {\n            super.onPageFinished(view, url);\n\n\n            if(mDialog !=null && mDialog.isShowing())\n                mDialog.dismiss();\n\n            mAppInterfce.showDetail();\n\n\n        }\n    }\n\n\n\n\n    class WebAppInterface{\n\n\n        private Context mContext;\n        public WebAppInterface(Context context){\n            mContext = context;\n        }\n\n        @JavascriptInterface\n        public  void showDetail(){\n\n\n            runOnUiThread(new Runnable() {\n                @Override\n                public void run() {\n\n                    mWebView.loadUrl(\"javascript:showDetail(\"+mWare.getId()+\")\");\n\n                }\n            });\n        }\n\n\n        @JavascriptInterface\n        public void buy(long id){\n\n            cartProvider.put(mWare);\n            ToastUtils.show(mContext,\"已添加到购物车\");\n\n        }\n\n        @JavascriptInterface\n        public void addFavorites(long id){\n\n\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/WareListActivity.java",
    "content": "package cniao5.com.cniao5shop;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.design.widget.TabLayout;\nimport android.support.v7.app.AppCompatActivity;\nimport android.support.v7.widget.DefaultItemAnimator;\nimport android.support.v7.widget.GridLayoutManager;\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.View;\nimport android.widget.TextView;\n\nimport com.cjj.MaterialRefreshLayout;\nimport com.google.gson.reflect.TypeToken;\nimport com.lidroid.xutils.ViewUtils;\nimport com.lidroid.xutils.view.annotation.ViewInject;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.adapter.BaseAdapter;\nimport cniao5.com.cniao5shop.adapter.HWAdatper;\nimport cniao5.com.cniao5shop.adapter.decoration.DividerItemDecoration;\nimport cniao5.com.cniao5shop.bean.Page;\nimport cniao5.com.cniao5shop.bean.Wares;\nimport cniao5.com.cniao5shop.utils.Pager;\nimport cniao5.com.cniao5shop.widget.CNiaoToolBar;\n\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class WareListActivity extends AppCompatActivity  implements Pager.OnPageListener<Wares>,TabLayout.OnTabSelectedListener,View.OnClickListener {\n\n    private static final String TAG = \"WareListActivity\";\n\n    public static final int TAG_DEFAULT=0;\n    public static final int TAG_SALE=1;\n    public static final int TAG_PRICE=2;\n\n    public static final int ACTION_LIST=1;\n    public static final int ACTION_GIRD=2;\n\n\n\n\n    @ViewInject(R.id.tab_layout)\n    private TabLayout mTablayout;\n\n    @ViewInject(R.id.txt_summary)\n    private TextView mTxtSummary;\n\n\n    @ViewInject(R.id.recycler_view)\n    private RecyclerView mRecyclerview_wares;\n\n    @ViewInject(R.id.refresh_layout)\n    private MaterialRefreshLayout mRefreshLayout;\n\n    @ViewInject(R.id.toolbar)\n    private CNiaoToolBar mToolbar;\n\n\n    private int orderBy = 0;\n    private long campaignId = 0;\n\n\n    private HWAdatper mWaresAdapter;\n\n\n    private   Pager pager;\n\n\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        setContentView(R.layout.activity_warelist);\n        ViewUtils.inject(this);\n\n        initToolBar();\n\n        campaignId=getIntent().getLongExtra(Contants.COMPAINGAIN_ID,0);\n\n        initTab();\n\n        getData();\n\n\n    }\n\n\n    private void initToolBar(){\n\n        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                WareListActivity.this.finish();\n            }\n        });\n\n\n        mToolbar.setRightButtonIcon(R.drawable.icon_grid_32);\n        mToolbar.getRightButton().setTag(ACTION_LIST);\n\n\n        mToolbar.setRightButtonOnClickListener(this);\n\n\n    }\n\n\n    private void getData(){\n\n\n       pager= Pager.newBuilder().setUrl(Contants.API.WARES_CAMPAIN_LIST)\n                .putParam(\"campaignId\",campaignId)\n                .putParam(\"orderBy\",orderBy)\n                .setRefreshLayout(mRefreshLayout)\n                .setLoadMore(true)\n                .setOnPageListener(this)\n                .build(this,new TypeToken<Page<Wares>>(){}.getType());\n\n        pager.request();\n\n    }\n\n\n\n    private void initTab(){\n\n\n       TabLayout.Tab tab= mTablayout.newTab();\n        tab.setText(\"默认\");\n        tab.setTag(TAG_DEFAULT);\n\n        mTablayout.addTab(tab);\n\n\n\n        tab= mTablayout.newTab();\n        tab.setText(\"价格\");\n        tab.setTag(TAG_PRICE);\n\n        mTablayout.addTab(tab);\n\n        tab= mTablayout.newTab();\n        tab.setText(\"销量\");\n        tab.setTag(TAG_SALE);\n\n        mTablayout.addTab(tab);\n\n\n        mTablayout.setOnTabSelectedListener(this);\n\n\n    }\n\n\n    @Override\n    public void load(List<Wares> datas, int totalPage, int totalCount) {\n\n        mTxtSummary.setText(\"共有\"+totalCount+\"件商品\");\n\n        if (mWaresAdapter == null) {\n            mWaresAdapter = new HWAdatper(this, datas);\n            mWaresAdapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() {\n                @Override\n                public void onItemClick(View view, int position) {\n                    Wares wares = mWaresAdapter.getItem(position);\n\n                    Intent intent = new Intent(WareListActivity.this, WareDetailActivity.class);\n\n                    intent.putExtra(Contants.WARE,wares);\n                    startActivity(intent);\n                }\n            });\n            mRecyclerview_wares.setAdapter(mWaresAdapter);\n            mRecyclerview_wares.setLayoutManager(new LinearLayoutManager(this));\n            mRecyclerview_wares.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));\n            mRecyclerview_wares.setItemAnimator(new DefaultItemAnimator());\n        } else {\n            mWaresAdapter.refreshData(datas);\n        }\n\n    }\n\n    @Override\n    public void refresh(List<Wares> datas, int totalPage, int totalCount) {\n\n        mWaresAdapter.refreshData(datas);\n        mRecyclerview_wares.scrollToPosition(0);\n    }\n\n    @Override\n    public void loadMore(List<Wares> datas, int totalPage, int totalCount) {\n        mWaresAdapter.loadMoreData(datas);\n    }\n\n\n    @Override\n    public void onTabSelected(TabLayout.Tab tab) {\n\n        orderBy = (int) tab.getTag();\n        pager.putParam(\"orderBy\",orderBy);\n        pager.request();\n    }\n\n    @Override\n    public void onTabUnselected(TabLayout.Tab tab) {\n\n    }\n\n    @Override\n    public void onTabReselected(TabLayout.Tab tab) {\n\n    }\n\n    @Override\n    public void onClick(View v) {\n\n        int action = (int) v.getTag();\n\n        if(ACTION_LIST == action){\n\n            mToolbar.setRightButtonIcon(R.drawable.icon_list_32);\n            mToolbar.getRightButton().setTag(ACTION_GIRD);\n\n            mWaresAdapter.resetLayout(R.layout.template_grid_wares);\n\n\n           mRecyclerview_wares.setLayoutManager(new GridLayoutManager(this,2));\n\n        }\n        else if(ACTION_GIRD == action){\n\n\n            mToolbar.setRightButtonIcon(R.drawable.icon_grid_32);\n            mToolbar.getRightButton().setTag(ACTION_LIST);\n\n            mWaresAdapter.resetLayout(R.layout.template_hot_wares);\n\n            mRecyclerview_wares.setLayoutManager(new LinearLayoutManager(this));\n        }\n\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/BaseAdapter.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.content.Context;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\n\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.util.List;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic abstract class BaseAdapter<T,H extends  BaseViewHolder> extends RecyclerView.Adapter<BaseViewHolder>{\n\n\n\n    protected static final String TAG = BaseAdapter.class.getSimpleName();\n\n    protected final Context context;\n\n    protected  int layoutResId;\n\n    protected List<T> datas;\n\n\n    private OnItemClickListener mOnItemClickListener = null;\n\n\n\n    public  interface OnItemClickListener {\n        void onItemClick(View view, int position);\n    }\n\n\n\n    public BaseAdapter(Context context, int layoutResId) {\n        this(context, layoutResId, null);\n    }\n\n\n    public BaseAdapter(Context context, int layoutResId, List<T> datas) {\n        this.datas = datas == null ? new ArrayList<T>() : datas;\n        this.context = context;\n        this.layoutResId = layoutResId;\n    }\n\n\n\n\n    @Override\n    public BaseViewHolder onCreateViewHolder(ViewGroup viewGroup,  int viewType) {\n        View view = LayoutInflater.from(viewGroup.getContext()).inflate(layoutResId, viewGroup, false);\n        BaseViewHolder vh = new BaseViewHolder(view,mOnItemClickListener);\n        return vh;\n    }\n\n    @Override\n    public void onBindViewHolder(BaseViewHolder viewHoder,  int position) {\n        T item = getItem(position);\n        convert((H)viewHoder, item);\n    }\n\n\n\n    @Override\n    public int getItemCount() {\n        if(datas==null || datas.size()<=0)\n            return 0;\n\n        return datas.size();\n    }\n\n\n    public T getItem(int position) {\n        if (position >= datas.size()) return null;\n        return datas.get(position);\n    }\n\n\n    public void clear(){\n//        int itemCount = datas.size();\n//        datas.clear();\n//        this.notifyItemRangeRemoved(0,itemCount);\n\n        for (Iterator it=datas.iterator();it.hasNext();){\n\n            T t = (T) it.next();\n            int position = datas.indexOf(t);\n            it.remove();\n            notifyItemRemoved(position);\n        }\n    }\n\n    /**\n     * 从列表中删除某项\n     * @param t\n     */\n    public  void removeItem(T t){\n\n        int position = datas.indexOf(t);\n        datas.remove(position);\n        notifyItemRemoved(position);\n    }\n\n\n\n\n    public List<T> getDatas(){\n\n        return  datas;\n    }\n\n\n\n\n    public void addData(List<T> datas){\n\n        addData(0,datas);\n    }\n\n    public void addData(int position,List<T> list){\n\n        if(list !=null && list.size()>0) {\n\n            for (T t:list) {\n                datas.add(position, t);\n                notifyItemInserted(position);\n            }\n\n        }\n    }\n\n\n\n    public void refreshData(List<T> list){\n\n        if(list !=null && list.size()>0){\n\n            clear();\n            int size = list.size();\n            for (int i=0;i<size;i++){\n                datas.add(i,list.get(i));\n                notifyItemInserted(i);\n            }\n\n        }\n    }\n\n    public void loadMoreData(List<T> list){\n\n        if(list !=null && list.size()>0){\n\n            int size = list.size();\n            int begin = datas.size();\n            for (int i=0;i<size;i++){\n                datas.add(list.get(i));\n                notifyItemInserted(i+begin);\n            }\n\n        }\n\n    }\n\n\n\n    /**\n     * Implement this method and use the helper to adapt the view to the given item.\n     * @param viewHoder A fully initialized helper.\n     * @param item   The item that needs to be displayed.\n     */\n    protected abstract void convert(H viewHoder, T item);\n\n\n\n\n    public void setOnItemClickListener(OnItemClickListener listener) {\n        this.mOnItemClickListener = listener;\n\n    }\n\n\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/BaseViewHolder.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.support.v7.widget.RecyclerView;\nimport android.util.SparseArray;\nimport android.view.View;\nimport android.widget.Button;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class BaseViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {\n\n\n    private SparseArray<View> views;\n\n    private BaseAdapter.OnItemClickListener mOnItemClickListener ;\n\n    public BaseViewHolder(View itemView,BaseAdapter.OnItemClickListener onItemClickListener){\n        super(itemView);\n        itemView.setOnClickListener(this);\n\n        this.mOnItemClickListener =onItemClickListener;\n        this.views = new SparseArray<View>();\n    }\n\n    public TextView getTextView(int viewId) {\n        return retrieveView(viewId);\n    }\n\n    public Button getButton(int viewId) {\n        return retrieveView(viewId);\n    }\n\n    public ImageView getImageView(int viewId) {\n        return retrieveView(viewId);\n    }\n\n    public View getView(int viewId) {\n        return retrieveView(viewId);\n    }\n\n\n    protected <T extends View> T retrieveView(int viewId) {\n        View view = views.get(viewId);\n        if (view == null) {\n            view = itemView.findViewById(viewId);\n            views.put(viewId, view);\n        }\n        return (T) view;\n    }\n\n    @Override\n    public void onClick(View v) {\n        if (mOnItemClickListener != null) {\n            mOnItemClickListener.onItemClick(v,getLayoutPosition());\n        }\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/CartAdapter.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.content.Context;\nimport android.net.Uri;\nimport android.text.Html;\nimport android.view.View;\nimport android.widget.CheckBox;\nimport android.widget.TextView;\n\nimport com.facebook.drawee.view.SimpleDraweeView;\n\nimport java.util.Iterator;\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.bean.ShoppingCart;\nimport cniao5.com.cniao5shop.utils.CartProvider;\nimport cniao5.com.cniao5shop.widget.NumberAddSubView;\n\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class CartAdapter extends SimpleAdapter<ShoppingCart> implements BaseAdapter.OnItemClickListener {\n\n\n    public static final String TAG=\"CartAdapter\";\n\n\n\n\n\n    private CheckBox checkBox;\n    private TextView textView;\n\n    private CartProvider cartProvider;\n\n\n    public CartAdapter(Context context, List<ShoppingCart> datas, final CheckBox checkBox,TextView tv) {\n        super(context, R.layout.template_cart, datas);\n\n        setCheckBox(checkBox);\n        setTextView(tv);\n\n        cartProvider = new CartProvider(context);\n\n        setOnItemClickListener(this);\n\n        showTotalPrice();\n\n\n    }\n\n\n    @Override\n    protected void convert(BaseViewHolder viewHoder, final ShoppingCart item) {\n\n        viewHoder.getTextView(R.id.text_title).setText(item.getName());\n        viewHoder.getTextView(R.id.text_price).setText(\"￥\"+item.getPrice());\n        SimpleDraweeView draweeView = (SimpleDraweeView) viewHoder.getView(R.id.drawee_view);\n        draweeView.setImageURI(Uri.parse(item.getImgUrl()));\n\n        CheckBox checkBox = (CheckBox) viewHoder.getView(R.id.checkbox);\n        checkBox.setChecked(item.isChecked());\n\n\n        NumberAddSubView numberAddSubView = (NumberAddSubView) viewHoder.getView(R.id.num_control);\n\n        numberAddSubView.setValue(item.getCount());\n\n        numberAddSubView.setOnButtonClickListener(new NumberAddSubView.OnButtonClickListener() {\n            @Override\n            public void onButtonAddClick(View view, int value) {\n\n                item.setCount(value);\n                cartProvider.update(item);\n                showTotalPrice();\n\n\n            }\n\n            @Override\n            public void onButtonSubClick(View view, int value) {\n\n                item.setCount(value);\n                cartProvider.update(item);\n                showTotalPrice();\n            }\n        });\n\n\n    }\n\n\n    private  float getTotalPrice(){\n\n        float sum=0;\n        if(!isNull())\n            return sum;\n\n        for (ShoppingCart cart:\n                datas) {\n            if(cart.isChecked())\n                sum += cart.getCount()*cart.getPrice();\n        }\n\n        return sum;\n    }\n\n\n\n    public void showTotalPrice(){\n\n        float total = getTotalPrice();\n\n        textView.setText(Html.fromHtml(\"合计 ￥<span style='color:#eb4f38'>\" + total + \"</span>\"), TextView.BufferType.SPANNABLE);\n    }\n\n\n\n    private boolean isNull(){\n\n        return (datas !=null && datas.size()>0);\n    }\n\n\n    @Override\n    public void onItemClick(View view, int position) {\n\n       ShoppingCart cart =  getItem(position);\n        cart.setIsChecked(!cart.isChecked());\n        notifyItemChanged(position);\n\n        checkListen();\n        showTotalPrice();\n\n    }\n\n\n    private void checkListen() {\n\n\n        int count = 0;\n        int checkNum = 0;\n        if (datas != null) {\n            count = datas.size();\n\n            for (ShoppingCart cart : datas) {\n                if (!cart.isChecked()) {\n                    checkBox.setChecked(false);\n                    break;\n                } else {\n                    checkNum = checkNum + 1;\n                }\n            }\n\n            if (count == checkNum) {\n                checkBox.setChecked(true);\n            }\n\n        }\n    }\n\n\n    public void checkAll_None(boolean isChecked){\n\n\n        if(!isNull())\n            return ;\n\n\n        int i=0;\n        for (ShoppingCart cart :datas){\n            cart.setIsChecked(isChecked);\n            notifyItemChanged(i);\n            i++;\n        }\n\n\n    }\n\n\n\n    public void delCart(){\n\n\n        if(!isNull())\n            return ;\n\n//        for (ShoppingCart cart : datas){\n//\n//            if(cart.isChecked()){\n//                int position = datas.indexOf(cart);\n//                cartProvider.delete(cart);\n//                datas.remove(cart);\n//                notifyItemRemoved(position);\n//            }\n//        }\n\n\n        for(Iterator iterator = datas.iterator();iterator.hasNext();){\n\n            ShoppingCart cart = (ShoppingCart) iterator.next();\n            if(cart.isChecked()){\n                int position = datas.indexOf(cart);\n                cartProvider.delete(cart);\n                iterator.remove();\n                notifyItemRemoved(position);\n            }\n\n        }\n\n\n\n\n    }\n\n\n\n\n\n    public void setTextView(TextView textview){\n        this.textView = textview;\n    }\n\n    public void setCheckBox(CheckBox ck){\n        this.checkBox = ck;\n\n        checkBox.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n\n                checkAll_None(checkBox.isChecked());\n                showTotalPrice();\n\n            }\n        });\n    }\n\n\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/CategoryAdapter.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.content.Context;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.bean.Category;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class CategoryAdapter extends SimpleAdapter<Category> {\n\n\n    public CategoryAdapter(Context context, List<Category> datas) {\n        super(context, R.layout.template_single_text, datas);\n    }\n\n    @Override\n    protected void convert(BaseViewHolder viewHoder, Category item) {\n\n\n        viewHoder.getTextView(R.id.textView).setText(item.getName());\n\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/HWAdatper.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.content.Context;\nimport android.net.Uri;\nimport android.view.View;\nimport android.widget.Button;\n\nimport com.facebook.drawee.view.SimpleDraweeView;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.bean.Wares;\nimport cniao5.com.cniao5shop.utils.CartProvider;\nimport cniao5.com.cniao5shop.utils.ToastUtils;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class HWAdatper extends SimpleAdapter<Wares> {\n\n\n    CartProvider provider ;\n\n    public HWAdatper(Context context, List<Wares> datas) {\n        super(context, R.layout.template_hot_wares, datas);\n\n        provider = new CartProvider(context);\n    }\n\n    @Override\n    protected void convert(BaseViewHolder viewHolder, final Wares wares) {\n        SimpleDraweeView draweeView = (SimpleDraweeView) viewHolder.getView(R.id.drawee_view);\n        draweeView.setImageURI(Uri.parse(wares.getImgUrl()));\n\n        viewHolder.getTextView(R.id.text_title).setText(wares.getName());\n        viewHolder.getTextView(R.id.text_price).setText(\"￥ \"+wares.getPrice());\n\n        Button button =viewHolder.getButton(R.id.btn_add);\n        if(button !=null) {\n            button.setOnClickListener(new View.OnClickListener() {\n                @Override\n                public void onClick(View v) {\n\n                    provider.put(wares);\n\n                    ToastUtils.show(context, \"已添加到购物车\");\n                }\n            });\n        }\n\n    }\n\n\n\n\n    public void  resetLayout(int layoutId){\n\n\n        this.layoutResId  = layoutId;\n\n        notifyItemRangeChanged(0,getDatas().size());\n\n\n    }\n\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/HomeCatgoryAdapter.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.animation.Animator;\nimport android.animation.AnimatorListenerAdapter;\nimport android.animation.ObjectAnimator;\nimport android.content.Context;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport com.squareup.picasso.Picasso;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.bean.Campaign;\nimport cniao5.com.cniao5shop.bean.HomeCampaign;\n\n/**\n * Created by Ivan on 15/9/30.\n */\npublic class HomeCatgoryAdapter extends RecyclerView.Adapter<HomeCatgoryAdapter.ViewHolder> {\n\n\n\n    private  static int VIEW_TYPE_L=0;\n    private  static int VIEW_TYPE_R=1;\n\n    private LayoutInflater mInflater;\n\n\n\n    private List<HomeCampaign> mDatas;\n\n    private  Context mContext;\n\n\n    private  OnCampaignClickListener mListener;\n\n\n    public HomeCatgoryAdapter(List<HomeCampaign> datas,Context context){\n        mDatas = datas;\n        this.mContext = context;\n    }\n\n\n\n    public void setOnCampaignClickListener(OnCampaignClickListener listener){\n\n        this.mListener = listener;\n    }\n\n    @Override\n    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {\n\n\n        mInflater = LayoutInflater.from(viewGroup.getContext());\n        if(type == VIEW_TYPE_R){\n\n            return  new ViewHolder(mInflater.inflate(R.layout.template_home_cardview2,viewGroup,false));\n        }\n\n        return  new ViewHolder(mInflater.inflate(R.layout.template_home_cardview,viewGroup,false));\n    }\n\n    @Override\n    public void onBindViewHolder(ViewHolder viewHolder, int i) {\n\n\n        HomeCampaign homeCampaign = mDatas.get(i);\n        viewHolder.textTitle.setText(homeCampaign.getTitle());\n\n        Picasso.with(mContext).load(homeCampaign.getCpOne().getImgUrl()).into(viewHolder.imageViewBig);\n        Picasso.with(mContext).load(homeCampaign.getCpTwo().getImgUrl()).into(viewHolder.imageViewSmallTop);\n        Picasso.with(mContext).load(homeCampaign.getCpThree().getImgUrl()).into(viewHolder.imageViewSmallBottom);\n\n    }\n\n    @Override\n    public int getItemCount() {\n        return mDatas.size();\n    }\n\n\n    @Override\n    public int getItemViewType(int position) {\n\n        if(position % 2==0){\n            return  VIEW_TYPE_R;\n        }\n        else return VIEW_TYPE_L;\n\n\n    }\n\n      class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{\n\n\n        TextView textTitle;\n        ImageView imageViewBig;\n        ImageView imageViewSmallTop;\n        ImageView imageViewSmallBottom;\n\n        public ViewHolder(View itemView) {\n            super(itemView);\n\n\n            textTitle = (TextView) itemView.findViewById(R.id.text_title);\n            imageViewBig = (ImageView) itemView.findViewById(R.id.imgview_big);\n            imageViewSmallTop = (ImageView) itemView.findViewById(R.id.imgview_small_top);\n            imageViewSmallBottom = (ImageView) itemView.findViewById(R.id.imgview_small_bottom);\n\n\n            imageViewBig.setOnClickListener(this);\n            imageViewSmallTop.setOnClickListener(this);\n            imageViewSmallBottom.setOnClickListener(this);\n        }\n\n        @Override\n        public void onClick(View v) {\n\n\n            if(mListener !=null){\n\n                anim(v);\n\n            }\n\n\n        }\n\n          private  void anim(final View v){\n\n              ObjectAnimator animator =  ObjectAnimator.ofFloat(v, \"rotationX\", 0.0F, 360.0F)\n                      .setDuration(200);\n              animator.addListener(new AnimatorListenerAdapter() {\n                  @Override\n                  public void onAnimationEnd(Animator animation) {\n\n                      HomeCampaign campaign = mDatas.get(getLayoutPosition());\n\n                      switch (v.getId()){\n\n                          case  R.id.imgview_big:\n                              mListener.onClick(v, campaign.getCpOne());\n                              break;\n\n                          case  R.id.imgview_small_top:\n                              mListener.onClick(v, campaign.getCpTwo());\n                              break;\n\n                          case R.id.imgview_small_bottom:\n                              mListener.onClick(v,campaign.getCpThree());\n                              break;\n\n                      }\n\n                  }\n              });\n              animator.start();\n          }\n    }\n\n\n    public  interface OnCampaignClickListener{\n\n\n        void onClick(View view,Campaign campaign);\n\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/HotWaresAdapter.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.net.Uri;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.TextView;\n\nimport com.facebook.drawee.view.SimpleDraweeView;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.bean.Wares;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class HotWaresAdapter extends RecyclerView.Adapter<HotWaresAdapter.ViewHolder>  {\n\n\n\n    private List<Wares> mDatas;\n\n    private LayoutInflater mInflater;\n\n    public HotWaresAdapter(List<Wares> wares){\n\n        mDatas = wares;\n\n\n    }\n\n\n    @Override\n    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {\n        mInflater = LayoutInflater.from(parent.getContext());\n        View view = mInflater.inflate(R.layout.template_hot_wares,null);\n        return new ViewHolder(view);\n    }\n\n    @Override\n    public void onBindViewHolder(ViewHolder holder, int position) {\n\n        Wares wares = getData(position);\n\n        holder.draweeView.setImageURI(Uri.parse(wares.getImgUrl()));\n        holder.textTitle.setText(wares.getName());\n        holder.textPrice.setText(\"￥\"+wares.getPrice());\n\n\n    }\n\n\n    public Wares getData(int position){\n\n        return mDatas.get(position);\n    }\n\n\n    public List<Wares> getDatas(){\n\n        return  mDatas;\n    }\n    public void clearData(){\n\n        mDatas.clear();\n        notifyItemRangeRemoved(0,mDatas.size());\n    }\n\n    public void addData(List<Wares> datas){\n\n        addData(0,datas);\n    }\n\n    public void addData(int position,List<Wares> datas){\n\n        if(datas !=null && datas.size()>0) {\n\n            mDatas.addAll(datas);\n            notifyItemRangeChanged(position, mDatas.size());\n        }\n\n    }\n\n\n    @Override\n    public int getItemCount() {\n\n        if(mDatas!=null && mDatas.size()>0)\n            return mDatas.size();\n\n        return 0;\n    }\n\n\n\n    class ViewHolder extends RecyclerView.ViewHolder{\n\n\n        SimpleDraweeView draweeView;\n        TextView textTitle;\n        TextView textPrice;\n\n\n        public ViewHolder(View itemView) {\n            super(itemView);\n\n\n            draweeView = (SimpleDraweeView) itemView.findViewById(R.id.drawee_view);\n            textTitle= (TextView) itemView.findViewById(R.id.text_title);\n            textPrice= (TextView) itemView.findViewById(R.id.text_price);\n        }\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/SimpleAdapter.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.content.Context;\n\nimport java.util.List;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic abstract class SimpleAdapter<T> extends BaseAdapter<T,BaseViewHolder> {\n\n    public SimpleAdapter(Context context, int layoutResId) {\n        super(context, layoutResId);\n    }\n\n    public SimpleAdapter(Context context, int layoutResId, List<T> datas) {\n        super(context, layoutResId, datas);\n    }\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/WaresAdapter.java",
    "content": "package cniao5.com.cniao5shop.adapter;\n\nimport android.content.Context;\nimport android.net.Uri;\nimport com.facebook.drawee.view.SimpleDraweeView;\nimport java.util.List;\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.bean.Wares;\n\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class WaresAdapter extends SimpleAdapter<Wares> {\n\n\n\n    public WaresAdapter(Context context, List<Wares> datas) {\n        super(context, R.layout.template_grid_wares, datas);\n    }\n\n    @Override\n    protected void convert(BaseViewHolder viewHoder, Wares item) {\n\n        viewHoder.getTextView(R.id.text_title).setText(item.getName());\n        viewHoder.getTextView(R.id.text_price).setText(\"￥\"+item.getPrice());\n        SimpleDraweeView draweeView = (SimpleDraweeView) viewHoder.getView(R.id.drawee_view);\n        draweeView.setImageURI(Uri.parse(item.getImgUrl()));\n    }\n\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/decoration/CardViewtemDecortion.java",
    "content": "package cniao5.com.cniao5shop.adapter.decoration;\n\nimport android.graphics.Canvas;\nimport android.graphics.Rect;\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.View;\n\n\npublic class CardViewtemDecortion extends RecyclerView.ItemDecoration {\n\n    @Override\n    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {\n        super.onDraw(c, parent, state);\n    }\n\n    @Override\n    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {\n        super.onDrawOver(c, parent, state);\n    }\n\n    @Override\n    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {\n\n        int layoutOrientation = getOrientation(parent);\n        if (layoutOrientation == LinearLayoutManager.VERTICAL) {\n            outRect.top = 10;\n            outRect.left=5;\n            outRect.right=5;\n        } else if(layoutOrientation == LinearLayoutManager.HORIZONTAL) {\n            outRect.left = 5;\n        }\n    }\n\n    private int getOrientation(RecyclerView parent) {\n        if (parent.getLayoutManager() instanceof LinearLayoutManager) {\n            LinearLayoutManager layoutManager = (LinearLayoutManager) parent.getLayoutManager();\n            return layoutManager.getOrientation();\n        } else throw new IllegalStateException(\"DividerItemDecoration can only be used with a LinearLayoutManager.\");\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/decoration/DividerGridItemDecoration.java",
    "content": "package cniao5.com.cniao5shop.adapter.decoration;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport android.graphics.Canvas;\nimport android.graphics.Rect;\nimport android.graphics.drawable.Drawable;\nimport android.support.v7.widget.GridLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.support.v7.widget.RecyclerView.LayoutManager;\nimport android.support.v7.widget.RecyclerView.State;\nimport android.support.v7.widget.StaggeredGridLayoutManager;\nimport android.view.View;\n\n/**\n * \n * @author zhy\n * \n */\npublic class DividerGridItemDecoration extends RecyclerView.ItemDecoration\n{\n\n\tprivate static final int[] ATTRS = new int[] { android.R.attr.listDivider };\n\tprivate Drawable mDivider;\n\n\tpublic DividerGridItemDecoration(Context context)\n\t{\n\t\tfinal TypedArray a = context.obtainStyledAttributes(ATTRS);\n\t\tmDivider = a.getDrawable(0);\n\t\ta.recycle();\n\t}\n\n\t@Override\n\tpublic void onDraw(Canvas c, RecyclerView parent, State state)\n\t{\n\n\t\tdrawHorizontal(c, parent);\n\t\tdrawVertical(c, parent);\n\n\t}\n\n\tprivate int getSpanCount(RecyclerView parent)\n\t{\n\t\t// 列数\n\t\tint spanCount = -1;\n\t\tLayoutManager layoutManager = parent.getLayoutManager();\n\t\tif (layoutManager instanceof GridLayoutManager)\n\t\t{\n\n\t\t\tspanCount = ((GridLayoutManager) layoutManager).getSpanCount();\n\t\t} else if (layoutManager instanceof StaggeredGridLayoutManager)\n\t\t{\n\t\t\tspanCount = ((StaggeredGridLayoutManager) layoutManager)\n\t\t\t\t\t.getSpanCount();\n\t\t}\n\t\treturn spanCount;\n\t}\n\n\tpublic void drawHorizontal(Canvas c, RecyclerView parent)\n\t{\n\t\tint childCount = parent.getChildCount();\n\t\tfor (int i = 0; i < childCount; i++)\n\t\t{\n\t\t\tfinal View child = parent.getChildAt(i);\n\t\t\tfinal RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child\n\t\t\t\t\t.getLayoutParams();\n\t\t\tfinal int left = child.getLeft() - params.leftMargin;\n\t\t\tfinal int right = child.getRight() + params.rightMargin\n\t\t\t\t\t+ mDivider.getIntrinsicWidth();\n\t\t\tfinal int top = child.getBottom() + params.bottomMargin;\n\t\t\tfinal int bottom = top + mDivider.getIntrinsicHeight();\n\t\t\tmDivider.setBounds(left, top, right, bottom);\n\t\t\tmDivider.draw(c);\n\t\t}\n\t}\n\n\tpublic void drawVertical(Canvas c, RecyclerView parent)\n\t{\n\t\tfinal int childCount = parent.getChildCount();\n\t\tfor (int i = 0; i < childCount; i++)\n\t\t{\n\t\t\tfinal View child = parent.getChildAt(i);\n\n\t\t\tfinal RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child\n\t\t\t\t\t.getLayoutParams();\n\t\t\tfinal int top = child.getTop() - params.topMargin;\n\t\t\tfinal int bottom = child.getBottom() + params.bottomMargin;\n\t\t\tfinal int left = child.getRight() + params.rightMargin;\n\t\t\tfinal int right = left + mDivider.getIntrinsicWidth();\n\n\t\t\tmDivider.setBounds(left, top, right, bottom);\n\t\t\tmDivider.draw(c);\n\t\t}\n\t}\n\n\tprivate boolean isLastColum(RecyclerView parent, int pos, int spanCount,\n\t\t\tint childCount)\n\t{\n\t\tLayoutManager layoutManager = parent.getLayoutManager();\n\t\tif (layoutManager instanceof GridLayoutManager)\n\t\t{\n\t\t\tif ((pos + 1) % spanCount == 0)// 如果是最后一列，则不需要绘制右边\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (layoutManager instanceof StaggeredGridLayoutManager)\n\t\t{\n\t\t\tint orientation = ((StaggeredGridLayoutManager) layoutManager)\n\t\t\t\t\t.getOrientation();\n\t\t\tif (orientation == StaggeredGridLayoutManager.VERTICAL)\n\t\t\t{\n\t\t\t\tif ((pos + 1) % spanCount == 0)// 如果是最后一列，则不需要绘制右边\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else\n\t\t\t{\n\t\t\t\tchildCount = childCount - childCount % spanCount;\n\t\t\t\tif (pos >= childCount)// 如果是最后一列，则不需要绘制右边\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate boolean isLastRaw(RecyclerView parent, int pos, int spanCount,\n\t\t\tint childCount)\n\t{\n\t\tLayoutManager layoutManager = parent.getLayoutManager();\n\t\tif (layoutManager instanceof GridLayoutManager)\n\t\t{\n\t\t\tchildCount = childCount - childCount % spanCount;\n\t\t\tif (pos >= childCount)// 如果是最后一行，则不需要绘制底部\n\t\t\t\treturn true;\n\t\t} else if (layoutManager instanceof StaggeredGridLayoutManager)\n\t\t{\n\t\t\tint orientation = ((StaggeredGridLayoutManager) layoutManager)\n\t\t\t\t\t.getOrientation();\n\t\t\t// StaggeredGridLayoutManager 且纵向滚动\n\t\t\tif (orientation == StaggeredGridLayoutManager.VERTICAL)\n\t\t\t{\n\t\t\t\tchildCount = childCount - childCount % spanCount;\n\t\t\t\t// 如果是最后一行，则不需要绘制底部\n\t\t\t\tif (pos >= childCount)\n\t\t\t\t\treturn true;\n\t\t\t} else\n\t\t\t// StaggeredGridLayoutManager 且横向滚动\n\t\t\t{\n\t\t\t\t// 如果是最后一行，则不需要绘制底部\n\t\t\t\tif ((pos + 1) % spanCount == 0)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t@Override\n\tpublic void getItemOffsets(Rect outRect, int itemPosition,\n\t\t\tRecyclerView parent)\n\t{\n\t\tint spanCount = getSpanCount(parent);\n\t\tint childCount = parent.getAdapter().getItemCount();\n\t\tif (isLastRaw(parent, itemPosition, spanCount, childCount))// 如果是最后一行，则不需要绘制底部\n\t\t{\n\t\t\toutRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);\n\t\t} else if (isLastColum(parent, itemPosition, spanCount, childCount))// 如果是最后一列，则不需要绘制右边\n\t\t{\n\t\t\toutRect.set(0, 0, 0, mDivider.getIntrinsicHeight());\n\t\t} else\n\t\t{\n\t\t\toutRect.set(0, 0, mDivider.getIntrinsicWidth(),\n\t\t\t\t\tmDivider.getIntrinsicHeight());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/adapter/decoration/DividerItemDecoration.java",
    "content": "package cniao5.com.cniao5shop.adapter.decoration;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport android.graphics.Canvas;\nimport android.graphics.Rect;\nimport android.graphics.drawable.Drawable;\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.View;\n\n\npublic class DividerItemDecoration extends RecyclerView.ItemDecoration {\n\n    private static final int[] ATTRS = new int[]{\n            android.R.attr.listDivider\n    };\n\n    public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;\n\n    public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;\n\n    private Drawable mDivider;\n\n    private int mOrientation;\n\n    public DividerItemDecoration(Context context, int orientation) {\n        final TypedArray a = context.obtainStyledAttributes(ATTRS);\n        mDivider = a.getDrawable(0);\n        a.recycle();\n        setOrientation(orientation);\n    }\n\n    public void setOrientation(int orientation) {\n        if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {\n            throw new IllegalArgumentException(\"invalid orientation\");\n        }\n        mOrientation = orientation;\n    }\n\n    @Override\n    public void onDraw(Canvas c, RecyclerView parent) {\n//        Log.v(\"recyclerview - itemdecoration\", \"onDraw()\");\n\n        if (mOrientation == VERTICAL_LIST) {\n            drawVertical(c, parent);\n        } else {\n            drawHorizontal(c, parent);\n        }\n\n    }\n\n    public void drawVertical(Canvas c, RecyclerView parent) {\n        final int left = parent.getPaddingLeft();\n        final int right = parent.getWidth() - parent.getPaddingRight();\n\n        final int childCount = parent.getChildCount();\n        for (int i = 0; i < childCount; i++) {\n            final View child = parent.getChildAt(i);\n            android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext());\n            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child\n                    .getLayoutParams();\n            final int top = child.getBottom() + params.bottomMargin;\n            final int bottom = top + mDivider.getIntrinsicHeight();\n            mDivider.setBounds(left, top, right, bottom);\n            mDivider.draw(c);\n        }\n    }\n\n    public void drawHorizontal(Canvas c, RecyclerView parent) {\n        final int top = parent.getPaddingTop();\n        final int bottom = parent.getHeight() - parent.getPaddingBottom();\n\n        final int childCount = parent.getChildCount();\n        for (int i = 0; i < childCount; i++) {\n            final View child = parent.getChildAt(i);\n            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child\n                    .getLayoutParams();\n            final int left = child.getRight() + params.rightMargin;\n            final int right = left + mDivider.getIntrinsicHeight();\n            mDivider.setBounds(left, top, right, bottom);\n            mDivider.draw(c);\n        }\n    }\n\n    @Override\n    public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {\n        if (mOrientation == VERTICAL_LIST) {\n            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());\n        } else {\n            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);\n        }\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/Banner.java",
    "content": "package cniao5.com.cniao5shop.bean;\n\n/**\n * Created by Ivan on 15/10/2.\n */\npublic class Banner extends BaseBean {\n\n\n    private  String name;\n    private  String imgUrl;\n    private  String description;\n\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getImgUrl() {\n        return imgUrl;\n    }\n\n    public void setImgUrl(String imgUrl) {\n        this.imgUrl = imgUrl;\n    }\n\n    public String getDescription() {\n        return description;\n    }\n\n    public void setDescription(String description) {\n        this.description = description;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/BaseBean.java",
    "content": "package cniao5.com.cniao5shop.bean;\n\nimport java.io.Serializable;\n\n/**\n * Created by Ivan on 15/9/24.\n */\npublic class BaseBean implements Serializable {\n\n\n    protected   long id;\n\n    public long getId() {\n        return id;\n    }\n\n    public void setId(long id) {\n        this.id = id;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/Campaign.java",
    "content": "/*\n*Campaign.java\n*Created on 2015/10/3 下午10:34 by Ivan\n*Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.\n*http://www.cniao5.com\n*/\npackage cniao5.com.cniao5shop.bean;\n\nimport java.io.Serializable;\n\n\npublic class Campaign implements Serializable {\n\n\n    private Long id;\n    private String title;\n    private String imgUrl;\n\n\n    public Long getId() {\n        return id;\n    }\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n\n    public String getTitle() {\n        return title;\n    }\n\n    public void setTitle(String title) {\n        this.title = title;\n    }\n\n    public String getImgUrl() {\n        return imgUrl;\n    }\n\n    public void setImgUrl(String imgUrl) {\n        this.imgUrl = imgUrl;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/Category.java",
    "content": "package cniao5.com.cniao5shop.bean;\n\n\n\npublic class Category extends BaseBean {\n\n\n    public Category() {\n    }\n\n    public Category(String name) {\n\n        this.name = name;\n    }\n\n    public Category(long id ,String name) {\n        this.id = id;\n        this.name = name;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    private String name;\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/HomeCampaign.java",
    "content": "/*\n*CampaignRecommendEx.java\n*Created on 2015/10/4 上午12:12 by Ivan\n*Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.\n*http://www.cniao5.com\n*/\npackage cniao5.com.cniao5shop.bean;\n\nimport java.io.Serializable;\n\n/**\n * Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.\n * http://www.cniao5.com\n */\npublic class HomeCampaign implements Serializable {\n\n\n    private Long id;\n    private String title;\n    private Campaign cpOne;\n    private Campaign cpTwo;\n    private Campaign cpThree;\n\n\n    public Campaign getCpOne() {\n        return cpOne;\n    }\n\n    public void setCpOne(Campaign cpOne) {\n        this.cpOne = cpOne;\n    }\n\n    public Campaign getCpTwo() {\n        return cpTwo;\n    }\n\n    public void setCpTwo(Campaign cpTwo) {\n        this.cpTwo = cpTwo;\n    }\n\n    public Campaign getCpThree() {\n        return cpThree;\n    }\n\n    public void setCpThree(Campaign cpThree) {\n        this.cpThree = cpThree;\n    }\n\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getTitle() {\n        return title;\n    }\n\n    public void setTitle(String title) {\n        this.title = title;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/Page.java",
    "content": "package cniao5.com.cniao5shop.bean;\n\nimport java.util.List;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class Page<T> {\n\n\n    private  int currentPage;\n    private  int pageSize;\n    private  int totalPage;\n    private  int totalCount;\n\n    private List<T> list;\n\n\n    public int getCurrentPage() {\n        return currentPage;\n    }\n\n    public void setCurrentPage(int currentPage) {\n        this.currentPage = currentPage;\n    }\n\n    public int getPageSize() {\n        return pageSize;\n    }\n\n    public void setPageSize(int pageSize) {\n        this.pageSize = pageSize;\n    }\n\n    public int getTotalPage() {\n        return totalPage;\n    }\n\n    public void setTotalPage(int totalPage) {\n        this.totalPage = totalPage;\n    }\n\n    public int getTotalCount() {\n        return totalCount;\n    }\n\n    public void setTotalCount(int totalCount) {\n        this.totalCount = totalCount;\n    }\n\n    public List<T> getList() {\n        return list;\n    }\n\n    public void setList(List<T> list) {\n        this.list = list;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/ShoppingCart.java",
    "content": "package cniao5.com.cniao5shop.bean;\n\nimport java.io.Serializable;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class ShoppingCart extends Wares implements Serializable {\n\n\n    private int count;\n    private boolean isChecked=true;\n\n\n\n    public int getCount() {\n        return count;\n    }\n\n    public void setCount(int count) {\n        this.count = count;\n    }\n\n    public boolean isChecked() {\n        return isChecked;\n    }\n\n    public void setIsChecked(boolean isChecked) {\n        this.isChecked = isChecked;\n    }\n\n\n\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/Tab.java",
    "content": "package cniao5.com.cniao5shop.bean;\n\n/**\n * Created by Ivan on 15/9/25.\n */\npublic class Tab {\n\n    private  int title;\n    private  int icon;\n    private Class fragment;\n\n    public Tab(Class fragment,int title, int icon) {\n        this.title = title;\n        this.icon = icon;\n        this.fragment = fragment;\n    }\n\n    public int getTitle() {\n        return title;\n    }\n\n    public void setTitle(int title) {\n        this.title = title;\n    }\n\n    public int getIcon() {\n        return icon;\n    }\n\n    public void setIcon(int icon) {\n        this.icon = icon;\n    }\n\n    public Class getFragment() {\n        return fragment;\n    }\n\n    public void setFragment(Class fragment) {\n        this.fragment = fragment;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/bean/Wares.java",
    "content": "package cniao5.com.cniao5shop.bean;\n\nimport java.io.Serializable;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class Wares implements Serializable {\n\n\n    private Long id;\n    private String name;\n    private String imgUrl;\n    private String description;\n    private Float price;\n\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getImgUrl() {\n        return imgUrl;\n    }\n\n    public void setImgUrl(String imgUrl) {\n        this.imgUrl = imgUrl;\n    }\n\n    public String getDescription() {\n        return description;\n    }\n\n    public void setDescription(String description) {\n        this.description = description;\n    }\n\n    public Float getPrice() {\n        return price;\n    }\n\n    public void setPrice(Float price) {\n        this.price = price;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/fragment/BaseFragment.java",
    "content": "package cniao5.com.cniao5shop.fragment;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport com.lidroid.xutils.ViewUtils;\nimport com.lidroid.xutils.view.annotation.ViewInject;\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.widget.CNiaoToolBar;\n\n\n\npublic abstract class BaseFragment extends Fragment {\n\n\n\n\n\n    @Nullable\n    @Override\n    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n\n        View view = createView(inflater,container,savedInstanceState);\n        ViewUtils.inject(this, view);\n\n        initToolBar();\n\n        init();\n\n        return view;\n\n    }\n\n    public void  initToolBar(){\n\n    }\n\n\n    public abstract View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState);\n\n    public abstract void init();\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/fragment/CartFragment.java",
    "content": "package cniao5.com.cniao5shop.fragment;\n\nimport android.os.Bundle;\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.Button;\nimport android.widget.CheckBox;\nimport android.widget.TextView;\nimport com.lidroid.xutils.view.annotation.ViewInject;\nimport com.lidroid.xutils.view.annotation.event.OnClick;\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.adapter.CartAdapter;\nimport cniao5.com.cniao5shop.adapter.decoration.DividerItemDecoration;\nimport cniao5.com.cniao5shop.bean.ShoppingCart;\nimport cniao5.com.cniao5shop.utils.CartProvider;\nimport cniao5.com.cniao5shop.widget.CNiaoToolBar;\n\n\npublic class CartFragment extends BaseFragment implements View.OnClickListener{\n\n\n    public static final int ACTION_EDIT=1;\n    public static final int ACTION_CAMPLATE=2;\n\n\n    @ViewInject(R.id.recycler_view)\n    private RecyclerView mRecyclerView;\n\n    @ViewInject(R.id.checkbox_all)\n    private CheckBox mCheckBox;\n\n    @ViewInject(R.id.txt_total)\n    private TextView mTextTotal;\n\n    @ViewInject(R.id.btn_order)\n    private Button mBtnOrder;\n\n    @ViewInject(R.id.btn_del)\n    private Button mBtnDel;\n\n    @ViewInject(R.id.toolbar)\n    protected CNiaoToolBar mToolbar;\n\n\n    private CartAdapter mAdapter;\n    private CartProvider cartProvider;\n\n\n\n    @Override\n    public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n        return inflater.inflate(R.layout.fragment_cart,container,false);\n    }\n\n\n    @Override\n    public void init() {\n\n        cartProvider = new CartProvider(getContext());\n\n        changeToolbar();\n        showData();\n    }\n\n\n    @OnClick(R.id.btn_del)\n    public void delCart(View view){\n\n        mAdapter.delCart();\n    }\n\n\n    private void showData(){\n\n\n        List<ShoppingCart> carts = cartProvider.getAll();\n\n        mAdapter = new CartAdapter(getContext(),carts,mCheckBox,mTextTotal);\n\n        mRecyclerView.setAdapter(mAdapter);\n        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));\n        mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL_LIST));\n\n\n    }\n\n\n\n    public void refData(){\n\n        mAdapter.clear();\n        List<ShoppingCart> carts = cartProvider.getAll();\n        mAdapter.addData(carts);\n        mAdapter.showTotalPrice();\n\n\n\n    }\n\n\n\n\n    public void changeToolbar(){\n\n        mToolbar.hideSearchView();\n        mToolbar.showTitleView();\n        mToolbar.setTitle(R.string.cart);\n        mToolbar.getRightButton().setVisibility(View.VISIBLE);\n        mToolbar.setRightButtonText(\"编辑\");\n\n        mToolbar.getRightButton().setOnClickListener(this);\n\n        mToolbar.getRightButton().setTag(ACTION_EDIT);\n\n\n    }\n\n\n    private void showDelControl(){\n        mToolbar.getRightButton().setText(\"完成\");\n        mTextTotal.setVisibility(View.GONE);\n        mBtnOrder.setVisibility(View.GONE);\n        mBtnDel.setVisibility(View.VISIBLE);\n        mToolbar.getRightButton().setTag(ACTION_CAMPLATE);\n\n        mAdapter.checkAll_None(false);\n        mCheckBox.setChecked(false);\n\n    }\n\n    private void  hideDelControl(){\n\n        mTextTotal.setVisibility(View.VISIBLE);\n        mBtnOrder.setVisibility(View.VISIBLE);\n\n\n        mBtnDel.setVisibility(View.GONE);\n        mToolbar.setRightButtonText(\"编辑\");\n        mToolbar.getRightButton().setTag(ACTION_EDIT);\n\n        mAdapter.checkAll_None(true);\n        mAdapter.showTotalPrice();\n\n        mCheckBox.setChecked(true);\n    }\n\n\n    @Override\n    public void onClick(View v) {\n\n\n\n        int action = (int) v.getTag();\n        if(ACTION_EDIT == action){\n\n            showDelControl();\n        }\n        else if(ACTION_CAMPLATE == action){\n\n            hideDelControl();\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/fragment/CategoryFragment.java",
    "content": "package cniao5.com.cniao5shop.fragment;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.v7.widget.DefaultItemAnimator;\nimport android.support.v7.widget.GridLayoutManager;\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\n\nimport com.cjj.MaterialRefreshLayout;\nimport com.cjj.MaterialRefreshListener;\nimport com.daimajia.slider.library.Animations.DescriptionAnimation;\nimport com.daimajia.slider.library.SliderLayout;\nimport com.daimajia.slider.library.SliderTypes.BaseSliderView;\nimport com.daimajia.slider.library.SliderTypes.DefaultSliderView;\nimport com.lidroid.xutils.view.annotation.ViewInject;\nimport com.squareup.okhttp.Request;\nimport com.squareup.okhttp.Response;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.Contants;\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.WareDetailActivity;\nimport cniao5.com.cniao5shop.adapter.BaseAdapter;\nimport cniao5.com.cniao5shop.adapter.CategoryAdapter;\nimport cniao5.com.cniao5shop.adapter.WaresAdapter;\nimport cniao5.com.cniao5shop.adapter.decoration.DividerItemDecoration;\nimport cniao5.com.cniao5shop.bean.Banner;\nimport cniao5.com.cniao5shop.bean.Category;\nimport cniao5.com.cniao5shop.bean.Page;\nimport cniao5.com.cniao5shop.bean.Wares;\nimport cniao5.com.cniao5shop.http.BaseCallback;\nimport cniao5.com.cniao5shop.http.OkHttpHelper;\nimport cniao5.com.cniao5shop.http.SpotsCallBack;\n\n\npublic class CategoryFragment extends BaseFragment {\n\n\n\n    @ViewInject(R.id.recyclerview_category)\n    private RecyclerView mRecyclerView;\n\n\n    @ViewInject(R.id.recyclerview_wares)\n    private RecyclerView mRecyclerviewWares;\n\n    @ViewInject(R.id.refresh_layout)\n    private MaterialRefreshLayout mRefreshLaout;\n\n    @ViewInject(R.id.slider)\n    private  SliderLayout mSliderLayout;\n\n    private CategoryAdapter mCategoryAdapter;\n    private WaresAdapter mWaresAdatper;\n\n\n    private OkHttpHelper mHttpHelper = OkHttpHelper.getInstance();\n\n\n    private int currPage=1;\n    private int totalPage=1;\n    private int pageSize=10;\n    private long category_id=0;\n\n\n    private  static final int STATE_NORMAL=0;\n    private  static final int STATE_REFREH=1;\n    private  static final int STATE_MORE=2;\n\n    private int state=STATE_NORMAL;\n\n\n\n\n\n\n    @Override\n    public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n        return inflater.inflate(R.layout.fragment_category,container,false);\n    }\n\n    @Override\n    public void init() {\n\n        requestCategoryData();\n        requestBannerData();\n\n        initRefreshLayout();\n    }\n\n\n    private  void initRefreshLayout(){\n\n        mRefreshLaout.setLoadMore(true);\n        mRefreshLaout.setMaterialRefreshListener(new MaterialRefreshListener() {\n            @Override\n            public void onRefresh(MaterialRefreshLayout materialRefreshLayout) {\n\n                refreshData();\n\n            }\n\n            @Override\n            public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLayout) {\n\n                if(currPage <=totalPage)\n                    loadMoreData();\n                else{\n//                    Toast.makeText()\n                    mRefreshLaout.finishRefreshLoadMore();\n                }\n            }\n        });\n    }\n\n\n    private  void refreshData(){\n\n        currPage =1;\n\n        state=STATE_REFREH;\n        requestWares(category_id);\n\n    }\n\n    private void loadMoreData(){\n\n        currPage = ++currPage;\n        state = STATE_MORE;\n        requestWares(category_id);\n\n    }\n\n\n    private  void requestCategoryData(){\n\n\n\n        mHttpHelper.get(Contants.API.CATEGORY_LIST, new SpotsCallBack<List<Category>>(getContext()) {\n\n\n            @Override\n            public void onSuccess(Response response, List<Category> categories) {\n\n                showCategoryData(categories);\n\n                if(categories !=null && categories.size()>0)\n                    category_id = categories.get(0).getId();\n                    requestWares(category_id);\n            }\n\n            @Override\n            public void onError(Response response, int code, Exception e) {\n\n            }\n        });\n\n    }\n\n    private  void showCategoryData(List<Category> categories){\n\n\n        mCategoryAdapter = new CategoryAdapter(getContext(),categories);\n\n        mCategoryAdapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() {\n            @Override\n            public void onItemClick(View view, int position) {\n\n                Category category = mCategoryAdapter.getItem(position);\n\n                category_id = category.getId();\n                currPage=1;\n                state=STATE_NORMAL;\n\n                requestWares(category_id);\n\n\n            }\n        });\n\n        mRecyclerView.setAdapter(mCategoryAdapter);\n        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));\n        mRecyclerView.setItemAnimator(new DefaultItemAnimator());\n        mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL_LIST));\n\n\n    }\n\n\n\n\n\n    private void requestBannerData( ) {\n\n\n\n       String url = Contants.API.BANNER+\"?type=1\";\n\n        mHttpHelper.get(url, new SpotsCallBack<List<Banner>>(getContext()){\n\n\n            @Override\n            public void onSuccess(Response response, List<Banner> banners) {\n\n                showSliderViews(banners);\n            }\n\n            @Override\n            public void onError(Response response, int code, Exception e) {\n\n            }\n        });\n\n    }\n\n\n\n    private void showSliderViews(List<Banner> banners){\n\n\n\n\n        if(banners !=null){\n\n            for (Banner banner : banners){\n\n\n                DefaultSliderView sliderView = new DefaultSliderView(this.getActivity());\n                sliderView.image(banner.getImgUrl());\n                sliderView.description(banner.getName());\n                sliderView.setScaleType(BaseSliderView.ScaleType.Fit);\n                mSliderLayout.addSlider(sliderView);\n\n            }\n        }\n\n\n\n        mSliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);\n\n        mSliderLayout.setCustomAnimation(new DescriptionAnimation());\n        mSliderLayout.setPresetTransformer(SliderLayout.Transformer.Default);\n        mSliderLayout.setDuration(3000);\n\n\n\n\n    }\n\n\n\n    private void requestWares(long categoryId){\n\n        String url = Contants.API.WARES_LIST+\"?categoryId=\"+categoryId+\"&curPage=\"+currPage+\"&pageSize=\"+pageSize;\n\n        mHttpHelper.get(url, new BaseCallback<Page<Wares>>() {\n            @Override\n            public void onBeforeRequest(Request request) {\n\n            }\n\n            @Override\n            public void onFailure(Request request, Exception e) {\n\n            }\n\n            @Override\n            public void onResponse(Response response) {\n\n            }\n\n            @Override\n            public void onSuccess(Response response, Page<Wares> waresPage) {\n\n\n                currPage = waresPage.getCurrentPage();\n                totalPage =waresPage.getTotalPage();\n\n                showWaresData(waresPage.getList());\n\n\n            }\n\n\n            @Override\n            public void onError(Response response, int code, Exception e) {\n\n            }\n        });\n\n    }\n\n\n\n    private  void showWaresData(List<Wares> wares){\n\n\n\n        switch (state){\n\n            case  STATE_NORMAL:\n\n                if(mWaresAdatper ==null) {\n                    mWaresAdatper = new WaresAdapter(getContext(), wares);\n                    mWaresAdatper.setOnItemClickListener(new BaseAdapter.OnItemClickListener() {\n                        @Override\n                        public void onItemClick(View view, int position) {\n                            Wares wares = mWaresAdatper.getItem(position);\n\n                            Intent intent = new Intent(getActivity(), WareDetailActivity.class);\n\n                            intent.putExtra(Contants.WARE,wares);\n                            startActivity(intent);\n\n                        }\n                    });\n\n                    mRecyclerviewWares.setAdapter(mWaresAdatper);\n\n                    mRecyclerviewWares.setLayoutManager(new GridLayoutManager(getContext(), 2));\n                    mRecyclerviewWares.setItemAnimator(new DefaultItemAnimator());\n//                    mRecyclerviewWares.addItemDecoration(new DividerGridItemDecoration(getContext()));\n                }\n                else{\n                    mWaresAdatper.clear();\n                    mWaresAdatper.addData(wares);\n                }\n\n\n\n\n                break;\n\n            case STATE_REFREH:\n                mWaresAdatper.clear();\n                mWaresAdatper.addData(wares);\n\n                mRecyclerviewWares.scrollToPosition(0);\n                mRefreshLaout.finishRefresh();\n                break;\n\n            case STATE_MORE:\n                mWaresAdatper.addData(mWaresAdatper.getDatas().size(),wares);\n                mRecyclerviewWares.scrollToPosition(mWaresAdatper.getDatas().size());\n                mRefreshLaout.finishRefreshLoadMore();\n                break;\n\n\n        }\n\n\n\n    }\n\n\n}\n\n\n\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/fragment/HomeFragment.java",
    "content": "package cniao5.com.cniao5shop.fragment;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\n\nimport com.daimajia.slider.library.Animations.DescriptionAnimation;\nimport com.daimajia.slider.library.SliderLayout;\nimport com.daimajia.slider.library.SliderTypes.BaseSliderView;\nimport com.daimajia.slider.library.SliderTypes.TextSliderView;\nimport com.google.gson.Gson;\nimport com.lidroid.xutils.view.annotation.ViewInject;\nimport com.squareup.okhttp.Request;\nimport com.squareup.okhttp.Response;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.Contants;\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.WareListActivity;\nimport cniao5.com.cniao5shop.adapter.HomeCatgoryAdapter;\nimport cniao5.com.cniao5shop.adapter.decoration.CardViewtemDecortion;\nimport cniao5.com.cniao5shop.bean.Banner;\nimport cniao5.com.cniao5shop.bean.Campaign;\nimport cniao5.com.cniao5shop.bean.HomeCampaign;\nimport cniao5.com.cniao5shop.http.BaseCallback;\nimport cniao5.com.cniao5shop.http.OkHttpHelper;\nimport cniao5.com.cniao5shop.http.SpotsCallBack;\n\n\npublic class HomeFragment extends BaseFragment {\n\n\n    @ViewInject(R.id.slider)\n    private SliderLayout mSliderLayout;\n\n\n    @ViewInject(R.id.recyclerview)\n    private RecyclerView mRecyclerView;\n\n    private HomeCatgoryAdapter mAdatper;\n\n\n    private static  final  String TAG=\"HomeFragment\";\n\n\n    private Gson mGson = new Gson();\n\n    private List<Banner> mBanner;\n\n\n\n    private OkHttpHelper httpHelper = OkHttpHelper.getInstance();\n\n\n\n    @Override\n    public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n        return    inflater.inflate(R.layout.fragment_home,container,false);\n    }\n\n    @Override\n    public void init() {\n\n        requestImages();\n\n        initRecyclerView();\n    }\n\n\n    private  void requestImages(){\n\n        String url =\"http://112.124.22.238:8081/course_api/banner/query?type=1\";\n\n\n\n        httpHelper.get(url, new SpotsCallBack<List<Banner>>(getContext()){\n\n\n            @Override\n            public void onSuccess(Response response, List<Banner> banners) {\n\n                mBanner = banners;\n                initSlider();\n            }\n\n            @Override\n            public void onError(Response response, int code, Exception e) {\n\n            }\n        });\n\n\n\n    }\n\n\n    private void initRecyclerView() {\n\n\n        httpHelper.get(Contants.API.CAMPAIGN_HOME, new BaseCallback<List<HomeCampaign>>() {\n            @Override\n            public void onBeforeRequest(Request request) {\n\n            }\n\n            @Override\n            public void onFailure(Request request, Exception e) {\n\n            }\n\n            @Override\n            public void onResponse(Response response) {\n\n            }\n\n            @Override\n            public void onSuccess(Response response, List<HomeCampaign> homeCampaigns) {\n\n                initData(homeCampaigns);\n            }\n\n\n            @Override\n            public void onError(Response response, int code, Exception e) {\n\n            }\n        });\n\n    }\n\n\n    private  void initData(List<HomeCampaign> homeCampaigns){\n\n\n        mAdatper = new HomeCatgoryAdapter(homeCampaigns,getActivity());\n\n        mAdatper.setOnCampaignClickListener(new HomeCatgoryAdapter.OnCampaignClickListener() {\n            @Override\n            public void onClick(View view, Campaign campaign) {\n\n\n                Intent intent = new Intent(getActivity(), WareListActivity.class);\n                intent.putExtra(Contants.COMPAINGAIN_ID,campaign.getId());\n\n                startActivity(intent);\n\n\n            }\n        });\n\n        mRecyclerView.setAdapter(mAdatper);\n\n        mRecyclerView.addItemDecoration(new CardViewtemDecortion());\n\n        mRecyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));\n    }\n\n\n\n\n    private void initSlider(){\n\n\n\n\n        if(mBanner !=null){\n\n            for (Banner banner : mBanner){\n\n\n                TextSliderView textSliderView = new TextSliderView(this.getActivity());\n                textSliderView.image(banner.getImgUrl());\n                textSliderView.description(banner.getName());\n                textSliderView.setScaleType(BaseSliderView.ScaleType.Fit);\n                mSliderLayout.addSlider(textSliderView);\n\n            }\n        }\n\n\n\n        mSliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);\n\n        mSliderLayout.setCustomAnimation(new DescriptionAnimation());\n        mSliderLayout.setPresetTransformer(SliderLayout.Transformer.RotateUp);\n        mSliderLayout.setDuration(3000);\n\n\n\n\n    }\n\n\n    @Override\n    public void onDestroy() {\n        super.onDestroy();\n\n        mSliderLayout.stopAutoCycle();\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/fragment/HotFragment.java",
    "content": "package cniao5.com.cniao5shop.fragment;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.v7.widget.DefaultItemAnimator;\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\n\nimport com.cjj.MaterialRefreshLayout;\nimport com.google.gson.reflect.TypeToken;\nimport com.lidroid.xutils.view.annotation.ViewInject;\n\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.Contants;\nimport cniao5.com.cniao5shop.R;\nimport cniao5.com.cniao5shop.WareDetailActivity;\nimport cniao5.com.cniao5shop.adapter.BaseAdapter;\nimport cniao5.com.cniao5shop.adapter.HWAdatper;\nimport cniao5.com.cniao5shop.bean.Page;\nimport cniao5.com.cniao5shop.bean.Wares;\nimport cniao5.com.cniao5shop.utils.Pager;\n\n\npublic class HotFragment extends BaseFragment implements Pager.OnPageListener<Wares> {\n\n\n\n\n    private HWAdatper mAdatper;\n\n    @ViewInject(R.id.recyclerview)\n    private RecyclerView mRecyclerView;\n\n    @ViewInject(R.id.refresh_view)\n    private MaterialRefreshLayout mRefreshLaout;\n\n\n\n    @Override\n    public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n        return inflater.inflate(R.layout.fragment_hot,container,false);\n    }\n\n    @Override\n    public void init() {\n\n        Pager pager = Pager.newBuilder()\n                .setUrl(Contants.API.WARES_HOT)\n                .setLoadMore(true)\n                .setOnPageListener(this)\n                .setPageSize(20)\n                .setRefreshLayout(mRefreshLaout)\n                .build(getContext(), new TypeToken<Page<Wares>>() {}.getType());\n\n\n        pager.request();\n\n    }\n\n\n    @Override\n    public void load(List<Wares> datas, int totalPage, int totalCount) {\n\n        mAdatper = new HWAdatper(getContext(),datas);\n\n        mAdatper.setOnItemClickListener(new BaseAdapter.OnItemClickListener() {\n            @Override\n            public void onItemClick(View view, int position) {\n\n                Wares wares = mAdatper.getItem(position);\n\n                Intent intent = new Intent(getActivity(), WareDetailActivity.class);\n\n                intent.putExtra(Contants.WARE,wares);\n                startActivity(intent);\n\n\n            }\n        });\n\n\n        mRecyclerView.setAdapter(mAdatper);\n\n        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));\n        mRecyclerView.setItemAnimator(new DefaultItemAnimator());\n//        mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL_LIST));\n    }\n\n    @Override\n    public void refresh(List<Wares> datas, int totalPage, int totalCount) {\n        mAdatper.refreshData(datas);\n\n        mRecyclerView.scrollToPosition(0);\n    }\n\n    @Override\n    public void loadMore(List<Wares> datas, int totalPage, int totalCount) {\n\n       mAdatper.loadMoreData(datas);\n        mRecyclerView.scrollToPosition(mAdatper.getDatas().size());\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/fragment/MineFragment.java",
    "content": "package cniao5.com.cniao5shop.fragment;\n\nimport android.os.Bundle;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\n\nimport cniao5.com.cniao5shop.R;\n\n\n/**\n * Created by Ivan on 15/9/22.\n */\npublic class MineFragment extends BaseFragment{\n\n\n\n    @Override\n    public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n        return inflater.inflate(R.layout.fragment_mine,container,false);\n    }\n\n    @Override\n    public void init() {\n\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/http/BaseCallback.java",
    "content": "package cniao5.com.cniao5shop.http;\n\nimport com.google.gson.internal.$Gson$Types;\nimport com.squareup.okhttp.Request;\nimport com.squareup.okhttp.Response;\n\nimport java.io.IOException;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\n\n\n\npublic abstract class BaseCallback <T> {\n\n\n    public   Type mType;\n\n    static Type getSuperclassTypeParameter(Class<?> subclass)\n    {\n        Type superclass = subclass.getGenericSuperclass();\n        if (superclass instanceof Class)\n        {\n            throw new RuntimeException(\"Missing type parameter.\");\n        }\n        ParameterizedType parameterized = (ParameterizedType) superclass;\n        return $Gson$Types.canonicalize(parameterized.getActualTypeArguments()[0]);\n    }\n\n\n    public BaseCallback()\n    {\n        mType = getSuperclassTypeParameter(getClass());\n    }\n\n\n\n    public  abstract void onBeforeRequest(Request request);\n\n\n    public abstract  void onFailure(Request request, Exception e) ;\n\n\n    /**\n     *请求成功时调用此方法\n     * @param response\n     */\n    public abstract  void onResponse(Response response);\n\n    /**\n     *\n     * 状态码大于200，小于300 时调用此方法\n     * @param response\n     * @param t\n     * @throws IOException\n     */\n    public abstract void onSuccess(Response response,T t) ;\n\n    /**\n     * 状态码400，404，403，500等时调用此方法\n     * @param response\n     * @param code\n     * @param e\n     */\n    public abstract void onError(Response response, int code,Exception e) ;\n\n}"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/http/OkHttpHelper.java",
    "content": "package cniao5.com.cniao5shop.http;\n\nimport android.os.Handler;\nimport android.os.Looper;\nimport android.util.Log;\n\nimport com.google.gson.Gson;\nimport com.squareup.okhttp.Callback;\nimport com.squareup.okhttp.FormEncodingBuilder;\nimport com.squareup.okhttp.OkHttpClient;\nimport com.squareup.okhttp.Request;\nimport com.squareup.okhttp.RequestBody;\nimport com.squareup.okhttp.Response;\n\nimport java.io.IOException;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\n\n\n\npublic class OkHttpHelper {\n\n\n\n\n\n\n        public static final String TAG=\"OkHttpHelper\";\n\n        private  static  OkHttpHelper mInstance;\n        private OkHttpClient mHttpClient;\n        private Gson mGson;\n\n        private Handler mHandler;\n\n\n\n        static {\n            mInstance = new OkHttpHelper();\n        }\n\n        private OkHttpHelper(){\n\n            mHttpClient = new OkHttpClient();\n            mHttpClient.setConnectTimeout(10, TimeUnit.SECONDS);\n            mHttpClient.setReadTimeout(10,TimeUnit.SECONDS);\n            mHttpClient.setWriteTimeout(30,TimeUnit.SECONDS);\n\n            mGson = new Gson();\n\n            mHandler = new Handler(Looper.getMainLooper());\n\n        };\n\n        public static  OkHttpHelper getInstance(){\n            return  mInstance;\n        }\n\n\n\n\n        public void get(String url,BaseCallback callback){\n\n\n            Request request = buildGetRequest(url);\n\n            request(request,callback);\n\n        }\n\n\n        public void post(String url,Map<String,String> param, BaseCallback callback){\n\n            Request request = buildPostRequest(url,param);\n            request(request,callback);\n        }\n\n\n\n\n\n        public  void request(final Request request,final  BaseCallback callback){\n\n            callback.onBeforeRequest(request);\n\n            mHttpClient.newCall(request).enqueue(new Callback() {\n\n                @Override\n                public void onFailure(Request request, IOException e) {\n                    callbackFailure(callback, request, e);\n\n                }\n\n                @Override\n                public void onResponse(Response response) throws IOException {\n\n//                    callback.onResponse(response);\n                    callbackResponse(callback,response);\n\n                    if(response.isSuccessful()) {\n\n                        String resultStr = response.body().string();\n\n                        Log.d(TAG, \"result=\" + resultStr);\n\n                        if (callback.mType == String.class){\n                            callbackSuccess(callback,response,resultStr);\n                        }\n                        else {\n                            try {\n\n                                Object obj = mGson.fromJson(resultStr, callback.mType);\n                                callbackSuccess(callback,response,obj);\n                            }\n                            catch (com.google.gson.JsonParseException e){ // Json解析的错误\n                                callback.onError(response,response.code(),e);\n                            }\n                        }\n                    }\n                    else {\n                        callbackError(callback,response,null);\n                    }\n\n                }\n            });\n\n\n        }\n\n\n        private void callbackSuccess(final  BaseCallback callback , final Response response, final Object obj ){\n\n            mHandler.post(new Runnable() {\n                @Override\n                public void run() {\n                    callback.onSuccess(response, obj);\n                }\n            });\n        }\n\n\n        private void callbackError(final  BaseCallback callback , final Response response, final Exception e ){\n\n            mHandler.post(new Runnable() {\n                @Override\n                public void run() {\n                    callback.onError(response,response.code(),e);\n                }\n            });\n        }\n\n\n\n    private void callbackFailure(final  BaseCallback callback , final Request request, final IOException e ){\n\n        mHandler.post(new Runnable() {\n            @Override\n            public void run() {\n                callback.onFailure(request,e);\n            }\n        });\n    }\n\n\n    private void callbackResponse(final  BaseCallback callback , final Response response ){\n\n        mHandler.post(new Runnable() {\n            @Override\n            public void run() {\n                callback.onResponse(response);\n            }\n        });\n    }\n\n\n\n    private  Request buildPostRequest(String url,Map<String,String> params){\n\n            return  buildRequest(url,HttpMethodType.POST,params);\n        }\n\n        private  Request buildGetRequest(String url){\n\n            return  buildRequest(url,HttpMethodType.GET,null);\n        }\n\n        private  Request buildRequest(String url,HttpMethodType methodType,Map<String,String> params){\n\n\n            Request.Builder builder = new Request.Builder()\n                    .url(url);\n\n            if (methodType == HttpMethodType.POST){\n                RequestBody body = builderFormData(params);\n                builder.post(body);\n            }\n            else if(methodType == HttpMethodType.GET){\n                builder.get();\n            }\n\n\n            return builder.build();\n        }\n\n\n\n        private RequestBody builderFormData(Map<String,String> params){\n\n\n            FormEncodingBuilder builder = new FormEncodingBuilder();\n\n            if(params !=null){\n\n                for (Map.Entry<String,String> entry :params.entrySet() ){\n\n                    builder.add(entry.getKey(),entry.getValue());\n                }\n            }\n\n            return  builder.build();\n\n        }\n\n\n\n        enum  HttpMethodType{\n\n            GET,\n            POST,\n\n        }\n\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/http/SpotsCallBack.java",
    "content": "package cniao5.com.cniao5shop.http;\n\nimport android.content.Context;\nimport com.squareup.okhttp.Request;\nimport com.squareup.okhttp.Response;\n\n\nimport dmax.dialog.SpotsDialog;\n\n\npublic abstract class SpotsCallBack<T> extends BaseCallback<T> {\n\n\n    private  Context mContext;\n\n    private  SpotsDialog mDialog;\n\n    public SpotsCallBack(Context context){\n\n        mContext = context;\n\n        initSpotsDialog();\n    }\n\n\n\n    private  void initSpotsDialog(){\n\n        mDialog = new SpotsDialog(mContext,\"拼命加载中...\");\n\n    }\n\n    public  void showDialog(){\n        mDialog.show();\n    }\n\n    public  void dismissDialog(){\n        mDialog.dismiss();\n    }\n\n\n    public void setLoadMessage(int resId){\n        mDialog.setMessage(mContext.getString(resId));\n    }\n\n\n    @Override\n    public void onFailure(Request request, Exception e) {\n        dismissDialog();\n    }\n\n    @Override\n    public void onBeforeRequest(Request request) {\n\n        showDialog();\n    }\n\n    @Override\n    public void onResponse(Response response) {\n        dismissDialog();\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/utils/CartProvider.java",
    "content": "package cniao5.com.cniao5shop.utils;\n\nimport android.content.Context;\nimport android.util.SparseArray;\n\nimport com.google.gson.reflect.TypeToken;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport cniao5.com.cniao5shop.bean.ShoppingCart;\nimport cniao5.com.cniao5shop.bean.Wares;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class CartProvider {\n\n\n\n    public static final String CART_JSON=\"cart_json\";\n\n    private SparseArray<ShoppingCart> datas =null;\n\n\n    private  Context mContext;\n\n\n    public CartProvider(Context context){\n\n        mContext = context;\n       datas = new SparseArray<>(10);\n        listToSparse();\n\n    }\n\n\n\n    public void put(ShoppingCart cart){\n\n\n       ShoppingCart temp =  datas.get(cart.getId().intValue());\n\n        if(temp !=null){\n            temp.setCount(temp.getCount()+1);\n        }\n        else{\n            temp = cart;\n            temp.setCount(1);\n        }\n\n        datas.put(cart.getId().intValue(),temp);\n\n        commit();\n\n    }\n\n\n    public void put(Wares wares){\n\n\n        ShoppingCart cart = convertData(wares);\n        put(cart);\n    }\n\n    public void update(ShoppingCart cart){\n\n        datas.put(cart.getId().intValue(),cart);\n        commit();\n    }\n\n    public void delete(ShoppingCart cart){\n        datas.delete(cart.getId().intValue());\n        commit();\n    }\n\n    public List<ShoppingCart> getAll(){\n\n        return  getDataFromLocal();\n    }\n\n\n    public void commit(){\n\n\n        List<ShoppingCart> carts = sparseToList();\n\n        PreferencesUtils.putString(mContext,CART_JSON,JSONUtil.toJSON(carts));\n\n    }\n\n\n    private List<ShoppingCart> sparseToList(){\n\n\n        int size = datas.size();\n\n        List<ShoppingCart> list = new ArrayList<>(size);\n        for (int i=0;i<size;i++){\n\n            list.add(datas.valueAt(i));\n        }\n        return list;\n\n    }\n\n\n\n    private void listToSparse(){\n\n        List<ShoppingCart> carts =  getDataFromLocal();\n\n        if(carts!=null && carts.size()>0){\n\n            for (ShoppingCart cart:\n                    carts) {\n\n                datas.put(cart.getId().intValue(),cart);\n            }\n        }\n\n    }\n\n\n\n    public  List<ShoppingCart> getDataFromLocal(){\n\n        String json = PreferencesUtils.getString(mContext,CART_JSON);\n        List<ShoppingCart> carts =null;\n        if(json !=null ){\n\n            carts = JSONUtil.fromJson(json,new TypeToken<List<ShoppingCart>>(){}.getType());\n\n        }\n\n        return  carts;\n\n    }\n\n\n    public ShoppingCart convertData(Wares item){\n\n        ShoppingCart cart = new ShoppingCart();\n\n        cart.setId(item.getId());\n        cart.setDescription(item.getDescription());\n        cart.setImgUrl(item.getImgUrl());\n        cart.setName(item.getName());\n        cart.setPrice(item.getPrice());\n\n        return cart;\n    }\n\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/utils/JSONUtil.java",
    "content": "/*\n*JSONUtil.java\n*Created on 2014-9-29 上午9:54 by Ivan\n*Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.\n*http://www.cniao5.com\n*/\npackage cniao5.com.cniao5shop.utils;\n\nimport com.google.gson.Gson;\nimport com.google.gson.GsonBuilder;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by Ivan on 14-9-29.\n * Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.\n * http://www.cniao5.com\n */\npublic class JSONUtil {\n\n\n    private static Gson gson = new GsonBuilder().setDateFormat(\"yyyy-MM-dd HH:mm:ss\").create();\n\n\n\n    public static  Gson getGson(){\n        return  gson;\n    }\n\n\n\n    public static <T> T fromJson(String json,Class<T> clz){\n\n        return  gson.fromJson(json,clz);\n    }\n\n\n    public static <T> T fromJson(String json,Type type){\n\n        return  gson.fromJson(json,type);\n    }\n\n\n    public static String toJSON(Object object){\n\n       return gson.toJson(object);\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/utils/Pager.java",
    "content": "package cniao5.com.cniao5shop.utils;\n\nimport android.content.Context;\nimport android.widget.Toast;\n\nimport com.cjj.MaterialRefreshLayout;\nimport com.cjj.MaterialRefreshListener;\nimport com.squareup.okhttp.Request;\nimport com.squareup.okhttp.Response;\n\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport cniao5.com.cniao5shop.bean.Page;\nimport cniao5.com.cniao5shop.http.OkHttpHelper;\nimport cniao5.com.cniao5shop.http.SpotsCallBack;\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class Pager {\n\n\n    private static Builder builder;\n\n\n    private OkHttpHelper httpHelper;\n\n\n    private  static final int STATE_NORMAL=0;\n    private  static final int STATE_REFREH=1;\n    private  static final int STATE_MORE=2;\n\n    private int state=STATE_NORMAL;\n\n\n\n\n    private  Pager(){\n\n        httpHelper = OkHttpHelper.getInstance();\n        initRefreshLayout();\n\n    }\n\n\n    public  static Builder newBuilder(){\n\n        builder = new Builder();\n        return builder;\n    }\n\n\n    public void request(){\n\n        requestData();\n    }\n\n    public void  putParam(String key,Object value){\n        builder.params.put(key,value);\n\n    }\n\n\n\n\n    private void initRefreshLayout(){\n\n\n        builder.mRefreshLayout.setLoadMore(builder.canLoadMore);\n\n        builder.mRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {\n            @Override\n            public void onRefresh(MaterialRefreshLayout materialRefreshLayout) {\n                builder.mRefreshLayout.setLoadMore(builder.canLoadMore);\n                refresh();\n            }\n\n\n            @Override\n            public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLayout) {\n\n                if(builder.pageIndex<builder.totalPage)\n                    loadMore();\n                else{\n                    Toast.makeText(builder.mContext, \"无更多数据\", Toast.LENGTH_LONG).show();\n                    materialRefreshLayout.finishRefreshLoadMore();\n                    materialRefreshLayout.setLoadMore(false);\n                }\n            }\n        });\n    }\n\n    /**\n     * 请求数据\n     */\n    private void requestData(){\n\n\n        String url = buildUrl();\n\n        httpHelper.get(url, new RequestCallBack(builder.mContext));\n\n    }\n\n    /**\n     * 显示数据\n     */\n    private <T> void showData(List<T> datas,int totalPage,int totalCount){\n\n\n        if(datas ==null|| datas.size()<=0){\n            Toast.makeText(builder.mContext,\"加载不到数据\",Toast.LENGTH_LONG).show();\n            return;\n        }\n\n        if(STATE_NORMAL==state){\n\n            if(builder.onPageListener !=null){\n                builder.onPageListener.load(datas,totalPage,totalCount);\n            }\n        }\n\n        else  if(STATE_REFREH==state)   {\n            builder.mRefreshLayout.finishRefresh();\n            if(builder.onPageListener !=null){\n                builder.onPageListener.refresh(datas,totalPage,totalCount);\n            }\n\n        }\n        else  if(STATE_MORE == state){\n\n            builder.mRefreshLayout.finishRefreshLoadMore();\n            if(builder.onPageListener !=null){\n                builder.onPageListener.loadMore(datas,totalPage,totalCount);\n            }\n\n        }\n    }\n\n    /**\n     * 刷新数据\n     */\n    private void refresh(){\n\n        state=STATE_REFREH;\n        builder.pageIndex =1;\n        requestData();\n    }\n\n    /**\n     * 隐藏数据\n     */\n    private void loadMore(){\n\n        state=STATE_MORE;\n        builder.pageIndex =++builder.pageIndex;\n        requestData();\n    }\n\n\n    /**\n     * 构建URL\n     * @return\n     */\n    private String buildUrl(){\n\n        return builder.mUrl +\"?\"+buildUrlParams();\n    }\n\n\n    private   String buildUrlParams() {\n\n\n        HashMap<String, Object> map = builder.params;\n\n        map.put(\"curPage\",builder.pageIndex);\n        map.put(\"pageSize\",builder.pageSize);\n\n        StringBuffer sb = new StringBuffer();\n        for (Map.Entry<String, Object> entry : map.entrySet()) {\n            sb.append(entry.getKey() + \"=\" + entry.getValue());\n            sb.append(\"&\");\n        }\n        String s = sb.toString();\n        if (s.endsWith(\"&\")) {\n            s = s.substring(0,s.length()-1);\n        }\n        return s;\n    }\n\n\n\n\n    /**\n     *\n     */\n    public static class Builder{\n\n\n        private Context mContext;\n        private  Type mType;\n        private String mUrl;\n\n        private MaterialRefreshLayout mRefreshLayout;\n\n        private boolean canLoadMore;\n\n\n        private int totalPage = 1;\n        private int pageIndex = 1;\n        private int pageSize = 10;\n\n        private HashMap<String,Object> params = new HashMap<>(5);\n\n        private OnPageListener onPageListener;\n\n        public Builder setUrl(String url){\n\n            builder.mUrl = url;\n\n            return builder;\n        }\n\n        public Builder setPageSize(int pageSize){\n            this.pageSize = pageSize;\n            return builder;\n        }\n\n        public Builder  putParam(String key,Object value){\n            params.put(key,value);\n            return builder;\n        }\n\n        public Builder setLoadMore(boolean loadMore){\n            this.canLoadMore = loadMore;\n            return builder;\n        }\n\n        public Builder setRefreshLayout(MaterialRefreshLayout refreshLayout){\n\n            this.mRefreshLayout = refreshLayout;\n            return builder;\n        }\n\n\n        public Builder setOnPageListener(OnPageListener onPageListener) {\n            this.onPageListener = onPageListener;\n            return builder;\n        }\n\n\n        public Pager build(Context context, Type type){\n\n\n\n\n            this.mType = type;\n            this.mContext =context;\n\n            valid();\n            return new Pager();\n\n        }\n\n\n        private void valid(){\n\n\n            if(this.mContext==null)\n                throw  new RuntimeException(\"content can't be null\");\n\n            if(this.mUrl==null || \"\".equals(this.mUrl))\n                throw  new RuntimeException(\"url can't be  null\");\n\n            if(this.mRefreshLayout==null)\n                throw  new RuntimeException(\"MaterialRefreshLayout can't be  null\");\n        }\n\n\n\n    }\n\n\n    class  RequestCallBack<T> extends SpotsCallBack<Page<T>>{\n\n        public RequestCallBack(Context context) {\n            super(context);\n\n            super.mType = builder.mType;\n        }\n\n        @Override\n        public void onFailure(Request request, Exception e) {\n\n            dismissDialog();\n            Toast.makeText(builder.mContext,\"请求出错：\"+e.getMessage(),Toast.LENGTH_LONG).show();\n\n            if(STATE_REFREH==state)   {\n                builder.mRefreshLayout.finishRefresh();\n            }\n            else  if(STATE_MORE == state){\n\n                builder.mRefreshLayout.finishRefreshLoadMore();\n            }\n        }\n\n        @Override\n        public void onSuccess(Response response, Page<T> page) {\n\n\n            builder.pageIndex = page.getCurrentPage();\n            builder.pageSize = page.getPageSize();\n            builder.totalPage = page.getTotalPage();\n\n            showData(page.getList(),page.getTotalPage(),page.getTotalCount());\n        }\n\n\n\n\n\n\n\n        @Override\n        public void onError(Response response, int code, Exception e) {\n\n            Toast.makeText(builder.mContext,\"加载数据失败\",Toast.LENGTH_LONG).show();\n\n            if(STATE_REFREH==state)   {\n                builder.mRefreshLayout.finishRefresh();\n            }\n            else  if(STATE_MORE == state){\n\n                builder.mRefreshLayout.finishRefreshLoadMore();\n            }\n        }\n    }\n\n\n\n\n    public interface  OnPageListener<T>{\n\n\n        void load(List<T> datas,int totalPage,int totalCount);\n\n        void refresh(List<T> datas,int totalPage,int totalCount);\n\n        void loadMore(List<T> datas,int totalPage,int totalCount);\n\n\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/utils/PreferencesUtils.java",
    "content": "package cniao5.com.cniao5shop.utils;\n\nimport android.content.Context;\nimport android.content.SharedPreferences;\n\n/**\n * PreferencesUtils, easy to get or put data\n * <ul>\n * <strong>Preference Name</strong>\n * <li>you can change preference name by {@link #PREFERENCE_NAME}</li>\n * </ul>\n * <ul>\n * <strong>Put Value</strong>\n * <li>put string {@link #putString(Context, String, String)}</li>\n * <li>put int {@link #putInt(Context, String, int)}</li>\n * <li>put long {@link #putLong(Context, String, long)}</li>\n * <li>put float {@link #putFloat(Context, String, float)}</li>\n * <li>put boolean {@link #putBoolean(Context, String, boolean)}</li>\n * </ul>\n * <ul>\n * <strong>Get Value</strong>\n * <li>get string {@link #getString(Context, String)}, {@link #getString(Context, String, String)}</li>\n * <li>get int {@link #getInt(Context, String)}, {@link #getInt(Context, String, int)}</li>\n * <li>get long {@link #getLong(Context, String)}, {@link #getLong(Context, String, long)}</li>\n * <li>get float {@link #getFloat(Context, String)}, {@link #getFloat(Context, String, float)}</li>\n * <li>get boolean {@link #getBoolean(Context, String)}, {@link #getBoolean(Context, String, boolean)}</li>\n * </ul>\n * \n\n */\npublic class PreferencesUtils {\n\n    public static String PREFERENCE_NAME = \"Cniao_Pref_Common\";\n\n    /**\n     * put string preferences\n     * \n     * @param context\n     * @param key The name of the preference to modify\n     * @param value The new value for the preference\n     * @return True if the new values were successfully written to persistent storage.\n     */\n    public static boolean putString(Context context, String key, String value) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        SharedPreferences.Editor editor = settings.edit();\n        editor.putString(key, value);\n        return editor.commit();\n    }\n\n    /**\n     * get string preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @return The preference value if it exists, or null. Throws ClassCastException if there is a preference with this\n     *         name that is not a string\n     * @see #getString(Context, String, String)\n     */\n    public static String getString(Context context, String key) {\n        return getString(context, key, null);\n    }\n\n    /**\n     * get string preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @param defaultValue Value to return if this preference does not exist\n     * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with\n     *         this name that is not a string\n     */\n    public static String getString(Context context, String key, String defaultValue) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        return settings.getString(key, defaultValue);\n    }\n\n    /**\n     * put int preferences\n     * \n     * @param context\n     * @param key The name of the preference to modify\n     * @param value The new value for the preference\n     * @return True if the new values were successfully written to persistent storage.\n     */\n    public static boolean putInt(Context context, String key, int value) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        SharedPreferences.Editor editor = settings.edit();\n        editor.putInt(key, value);\n        return editor.commit();\n    }\n\n    /**\n     * get int preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this\n     *         name that is not a int\n     * @see #getInt(Context, String, int)\n     */\n    public static int getInt(Context context, String key) {\n        return getInt(context, key, -1);\n    }\n\n    /**\n     * get int preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @param defaultValue Value to return if this preference does not exist\n     * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with\n     *         this name that is not a int\n     */\n    public static int getInt(Context context, String key, int defaultValue) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        return settings.getInt(key, defaultValue);\n    }\n\n    /**\n     * put long preferences\n     * \n     * @param context\n     * @param key The name of the preference to modify\n     * @param value The new value for the preference\n     * @return True if the new values were successfully written to persistent storage.\n     */\n    public static boolean putLong(Context context, String key, long value) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        SharedPreferences.Editor editor = settings.edit();\n        editor.putLong(key, value);\n        return editor.commit();\n    }\n\n    /**\n     * get long preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this\n     *         name that is not a long\n     * @see #getLong(Context, String, long)\n     */\n    public static long getLong(Context context, String key) {\n        return getLong(context, key, -1);\n    }\n\n    /**\n     * get long preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @param defaultValue Value to return if this preference does not exist\n     * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with\n     *         this name that is not a long\n     */\n    public static long getLong(Context context, String key, long defaultValue) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        return settings.getLong(key, defaultValue);\n    }\n\n    /**\n     * put float preferences\n     * \n     * @param context\n     * @param key The name of the preference to modify\n     * @param value The new value for the preference\n     * @return True if the new values were successfully written to persistent storage.\n     */\n    public static boolean putFloat(Context context, String key, float value) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        SharedPreferences.Editor editor = settings.edit();\n        editor.putFloat(key, value);\n        return editor.commit();\n    }\n\n    /**\n     * get float preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this\n     *         name that is not a float\n     * @see #getFloat(Context, String, float)\n     */\n    public static float getFloat(Context context, String key) {\n        return getFloat(context, key, -1);\n    }\n\n    /**\n     * get float preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @param defaultValue Value to return if this preference does not exist\n     * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with\n     *         this name that is not a float\n     */\n    public static float getFloat(Context context, String key, float defaultValue) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        return settings.getFloat(key, defaultValue);\n    }\n\n    /**\n     * put boolean preferences\n     * \n     * @param context\n     * @param key The name of the preference to modify\n     * @param value The new value for the preference\n     * @return True if the new values were successfully written to persistent storage.\n     */\n    public static boolean putBoolean(Context context, String key, boolean value) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        SharedPreferences.Editor editor = settings.edit();\n        editor.putBoolean(key, value);\n        return editor.commit();\n    }\n\n    /**\n     * get boolean preferences, default is false\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @return The preference value if it exists, or false. Throws ClassCastException if there is a preference with this\n     *         name that is not a boolean\n     * @see #getBoolean(Context, String, boolean)\n     */\n    public static boolean getBoolean(Context context, String key) {\n        return getBoolean(context, key, false);\n    }\n\n    /**\n     * get boolean preferences\n     * \n     * @param context\n     * @param key The name of the preference to retrieve\n     * @param defaultValue Value to return if this preference does not exist\n     * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with\n     *         this name that is not a boolean\n     */\n    public static boolean getBoolean(Context context, String key, boolean defaultValue) {\n        SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);\n        return settings.getBoolean(key, defaultValue);\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/utils/TimeUtils.java",
    "content": "package cniao5.com.cniao5shop.utils;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\n/**\n * TimeUtils\n *\n */\npublic class TimeUtils {\n\n    public static final SimpleDateFormat DEFAULT_DATE_FORMAT = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n    public static final SimpleDateFormat DATE_FORMAT_DATE    = new SimpleDateFormat(\"yyyy-MM-dd\");\n\n    /**\n     * long time to string\n     * \n     * @param timeInMillis\n     * @param dateFormat\n     * @return\n     */\n    public static String getTime(long timeInMillis, SimpleDateFormat dateFormat) {\n        return dateFormat.format(new Date(timeInMillis));\n    }\n\n    /**\n     * long time to string, format is {@link #DEFAULT_DATE_FORMAT}\n     * \n     * @param timeInMillis\n     * @return\n     */\n    public static String getTime(long timeInMillis) {\n        return getTime(timeInMillis, DEFAULT_DATE_FORMAT);\n    }\n\n    /**\n     * get current time in milliseconds\n     * \n     * @return\n     */\n    public static long getCurrentTimeInLong() {\n        return System.currentTimeMillis();\n    }\n\n    /**\n     * get current time in milliseconds, format is {@link #DEFAULT_DATE_FORMAT}\n     * \n     * @return\n     */\n    public static String getCurrentTimeInString() {\n        return getTime(getCurrentTimeInLong());\n    }\n\n    /**\n     * get current time in milliseconds\n     * \n     * @return\n     */\n    public static String getCurrentTimeInString(SimpleDateFormat dateFormat) {\n        return getTime(getCurrentTimeInLong(), dateFormat);\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/utils/ToastUtils.java",
    "content": "package cniao5.com.cniao5shop.utils;\n\nimport android.content.Context;\nimport android.widget.Toast;\n\n/**\n * ToastUtils\n * \n *\n */\npublic class ToastUtils {\n\n    public static void show(Context context, int resId) {\n        show(context, context.getResources().getText(resId), Toast.LENGTH_LONG);\n    }\n\n    public static void show(Context context, int resId, int duration) {\n        show(context, context.getResources().getText(resId), duration);\n    }\n\n    public static void show(Context context, CharSequence text) {\n        show(context, text, Toast.LENGTH_LONG);\n    }\n\n    public static void show(Context context, CharSequence text, int duration) {\n        Toast.makeText(context, text, duration).show();\n    }\n\n    public static void show(Context context, int resId, Object... args) {\n        show(context, String.format(context.getResources().getString(resId), args), Toast.LENGTH_LONG);\n    }\n\n    public static void show(Context context, String format, Object... args) {\n        show(context, String.format(format, args), Toast.LENGTH_LONG);\n    }\n\n    public static void show(Context context, int resId, int duration, Object... args) {\n        show(context, String.format(context.getResources().getString(resId), args), duration);\n    }\n\n    public static void show(Context context, String format, int duration, Object... args) {\n        show(context, String.format(format, args), duration);\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/widget/CNiaoToolBar.java",
    "content": "package cniao5.com.cniao5shop.widget;\n\nimport android.annotation.TargetApi;\nimport android.content.Context;\nimport android.graphics.drawable.Drawable;\nimport android.os.Build;\nimport android.support.v7.internal.widget.TintTypedArray;\nimport android.support.v7.widget.Toolbar;\nimport android.util.AttributeSet;\nimport android.view.Gravity;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.Button;\nimport android.widget.EditText;\nimport android.widget.TextView;\n\nimport cniao5.com.cniao5shop.R;\n\n\n\npublic class CNiaoToolBar extends Toolbar {\n\n\n\n    private LayoutInflater mInflater;\n\n    private View mView;\n    private TextView mTextTitle;\n    private EditText mSearchView;\n    private Button mRightButton;\n\n\n    public CNiaoToolBar(Context context) {\n       this(context,null);\n    }\n\n    public CNiaoToolBar(Context context, AttributeSet attrs) {\n        this(context, attrs, 0);\n    }\n\n    public CNiaoToolBar(Context context, AttributeSet attrs, int defStyleAttr) {\n        super(context, attrs, defStyleAttr);\n\n\n\n        initView();\n        setContentInsetsRelative(10,10);\n\n\n\n\n        if(attrs !=null) {\n            final TintTypedArray a = TintTypedArray.obtainStyledAttributes(getContext(), attrs,\n                    R.styleable.CNiaoToolBar, defStyleAttr, 0);\n\n\n            final Drawable rightIcon = a.getDrawable(R.styleable.CNiaoToolBar_rightButtonIcon);\n            if (rightIcon != null) {\n                //setNavigationIcon(navIcon);\n                setRightButtonIcon(rightIcon);\n            }\n\n\n            boolean isShowSearchView = a.getBoolean(R.styleable.CNiaoToolBar_isShowSearchView,false);\n\n            if(isShowSearchView){\n\n                showSearchView();\n                hideTitleView();\n\n            }\n\n\n\n            CharSequence rightButtonText = a.getText(R.styleable.CNiaoToolBar_rightButtonText);\n            if(rightButtonText !=null){\n                setRightButtonText(rightButtonText);\n            }\n\n\n\n            a.recycle();\n        }\n\n    }\n\n    private void initView() {\n\n\n        if(mView == null) {\n\n            mInflater = LayoutInflater.from(getContext());\n            mView = mInflater.inflate(R.layout.toolbar, null);\n\n\n            mTextTitle = (TextView) mView.findViewById(R.id.toolbar_title);\n            mSearchView = (EditText) mView.findViewById(R.id.toolbar_searchview);\n            mRightButton = (Button) mView.findViewById(R.id.toolbar_rightButton);\n\n\n            LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL);\n\n            addView(mView, lp);\n        }\n\n\n\n    }\n\n\n    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)\n    public void  setRightButtonIcon(Drawable icon){\n\n        if(mRightButton !=null){\n\n            mRightButton.setBackground(icon);\n            mRightButton.setVisibility(VISIBLE);\n        }\n\n    }\n\n    public void  setRightButtonIcon(int icon){\n\n        setRightButtonIcon(getResources().getDrawable(icon));\n    }\n\n\n    public  void setRightButtonOnClickListener(OnClickListener li){\n\n        mRightButton.setOnClickListener(li);\n    }\n\n    public void setRightButtonText(CharSequence text){\n        mRightButton.setText(text);\n        mRightButton.setVisibility(VISIBLE);\n    }\n\n    public void setRightButtonText(int id){\n        setRightButtonText(getResources().getString(id));\n    }\n\n\n\n    public Button getRightButton(){\n\n        return this.mRightButton;\n    }\n\n\n\n    @Override\n    public void setTitle(int resId) {\n\n        setTitle(getContext().getText(resId));\n    }\n\n    @Override\n    public void setTitle(CharSequence title) {\n\n        initView();\n        if(mTextTitle !=null) {\n            mTextTitle.setText(title);\n            showTitleView();\n        }\n\n\n\n\n\n    }\n\n\n\n    public  void showSearchView(){\n\n        if(mSearchView !=null)\n            mSearchView.setVisibility(VISIBLE);\n\n    }\n\n\n    public void hideSearchView(){\n        if(mSearchView !=null)\n            mSearchView.setVisibility(GONE);\n    }\n\n    public void showTitleView(){\n        if(mTextTitle !=null)\n            mTextTitle.setVisibility(VISIBLE);\n    }\n\n\n    public void hideTitleView() {\n        if (mTextTitle != null)\n            mTextTitle.setVisibility(GONE);\n\n    }\n\n\n//\n//    private void ensureRightButtonView() {\n//        if (mRightImageButton == null) {\n//            mRightImageButton = new ImageButton(getContext(), null,\n//                    android.support.v7.appcompat.R.attr.toolbarNavigationButtonStyle);\n//            final LayoutParams lp = generateDefaultLayoutParams();\n//            lp.gravity = GravityCompat.START | (Gravity.VERTICAL_GRAVITY_MASK);\n//            mRightImageButton.setLayoutParams(lp);\n//        }\n//    }\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/widget/FragmentTabHost.java",
    "content": "package cniao5.com.cniao5shop.widget;\r\n\r\n\r\n\r\n/**\r\n * Created by monkey\r\n * on 2014/9/24\r\n * 功能描述：修改过的FragmentTabHost,保存fragment实例不销毁\r\n */\r\n/*\r\n * Copyright (C) 2012 The Android Open Source Project\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n\r\n\r\n        import java.util.ArrayList;\r\n\r\n        import android.content.Context;\r\n        import android.content.res.TypedArray;\r\n        import android.os.Bundle;\r\n        import android.os.Parcel;\r\n        import android.os.Parcelable;\r\n        import android.support.v4.app.Fragment;\r\n        import android.support.v4.app.FragmentManager;\r\n        import android.support.v4.app.FragmentTransaction;\r\n        import android.util.AttributeSet;\r\n        import android.view.View;\r\n        import android.view.ViewGroup;\r\n        import android.widget.FrameLayout;\r\n        import android.widget.LinearLayout;\r\n        import android.widget.TabHost;\r\n        import android.widget.TabWidget;\r\n\r\n/**\r\n * Special TabHost that allows the use of {@link Fragment} objects for its tab\r\n * content. When placing this in a view hierarchy, after inflating the hierarchy\r\n * you must call {@link #setup(Context, FragmentManager, int)} to complete the\r\n * initialization of the tab host.\r\n *\r\n * <p>\r\n * Here is a simple example of using a FragmentTabHost in an Activity:\r\n *\r\n * {@sample\r\n * development/samples/Support4Demos/src/com/example/android/supportv4/app/\r\n * FragmentTabs.java complete}\r\n *\r\n * <p>\r\n * This can also be used inside of a fragment through fragment nesting:\r\n *\r\n * {@sample\r\n * development/samples/Support4Demos/src/com/example/android/supportv4/app/\r\n * FragmentTabsFragmentSupport.java complete}\r\n */\r\npublic class FragmentTabHost extends TabHost implements\r\n        TabHost.OnTabChangeListener {\r\n    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();\r\n    private FrameLayout mRealTabContent;\r\n    private Context mContext;\r\n    private FragmentManager mFragmentManager;\r\n    private int mContainerId;\r\n    private OnTabChangeListener mOnTabChangeListener;\r\n    private TabInfo mLastTab;\r\n    private boolean mAttached;\r\n\r\n    static final class TabInfo {\r\n        private final String tag;\r\n        private final Class<?> clss;\r\n        private final Bundle args;\r\n        private Fragment fragment;\r\n\r\n        TabInfo(String _tag, Class<?> _class, Bundle _args) {\r\n            tag = _tag;\r\n            clss = _class;\r\n            args = _args;\r\n        }\r\n    }\r\n\r\n    static class DummyTabFactory implements TabContentFactory {\r\n        private final Context mContext;\r\n\r\n        public DummyTabFactory(Context context) {\r\n            mContext = context;\r\n        }\r\n\r\n        @Override\r\n        public View createTabContent(String tag) {\r\n            View v = new View(mContext);\r\n            v.setMinimumWidth(0);\r\n            v.setMinimumHeight(0);\r\n            return v;\r\n        }\r\n    }\r\n\r\n    static class SavedState extends BaseSavedState {\r\n        String curTab;\r\n\r\n        SavedState(Parcelable superState) {\r\n            super(superState);\r\n        }\r\n\r\n        private SavedState(Parcel in) {\r\n            super(in);\r\n            curTab = in.readString();\r\n        }\r\n\r\n        @Override\r\n        public void writeToParcel(Parcel out, int flags) {\r\n            super.writeToParcel(out, flags);\r\n            out.writeString(curTab);\r\n        }\r\n\r\n        @Override\r\n        public String toString() {\r\n            return \"FragmentTabHost.SavedState{\"\r\n                    + Integer.toHexString(System.identityHashCode(this))\r\n                    + \" curTab=\" + curTab + \"}\";\r\n        }\r\n\r\n        public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {\r\n            public SavedState createFromParcel(Parcel in) {\r\n                return new SavedState(in);\r\n            }\r\n\r\n            public SavedState[] newArray(int size) {\r\n                return new SavedState[size];\r\n            }\r\n        };\r\n    }\r\n\r\n    public FragmentTabHost(Context context) {\r\n        // Note that we call through to the version that takes an AttributeSet,\r\n        // because the simple Context construct can result in a broken object!\r\n        super(context, null);\r\n        initFragmentTabHost(context, null);\r\n    }\r\n\r\n    public FragmentTabHost(Context context, AttributeSet attrs) {\r\n        super(context, attrs);\r\n        initFragmentTabHost(context, attrs);\r\n    }\r\n\r\n    private void initFragmentTabHost(Context context, AttributeSet attrs) {\r\n        TypedArray a = context.obtainStyledAttributes(attrs,\r\n                new int[] { android.R.attr.inflatedId }, 0, 0);\r\n        mContainerId = a.getResourceId(0, 0);\r\n        a.recycle();\r\n\r\n        super.setOnTabChangedListener(this);\r\n    }\r\n\r\n    private void ensureHierarchy(Context context) {\r\n        // If owner hasn't made its own view hierarchy, then as a convenience\r\n        // we will construct a standard one here.\r\n        if (findViewById(android.R.id.tabs) == null) {\r\n            LinearLayout ll = new LinearLayout(context);\r\n            ll.setOrientation(LinearLayout.VERTICAL);\r\n            addView(ll, new LayoutParams(\r\n                    ViewGroup.LayoutParams.MATCH_PARENT,\r\n                    ViewGroup.LayoutParams.MATCH_PARENT));\r\n\r\n            TabWidget tw = new TabWidget(context);\r\n            tw.setId(android.R.id.tabs);\r\n            tw.setOrientation(TabWidget.HORIZONTAL);\r\n            ll.addView(tw, new LinearLayout.LayoutParams(\r\n                    ViewGroup.LayoutParams.MATCH_PARENT,\r\n                    ViewGroup.LayoutParams.WRAP_CONTENT, 0));\r\n\r\n            FrameLayout fl = new FrameLayout(context);\r\n            fl.setId(android.R.id.tabcontent);\r\n            ll.addView(fl, new LinearLayout.LayoutParams(0, 0, 0));\r\n\r\n            mRealTabContent = fl = new FrameLayout(context);\r\n            mRealTabContent.setId(mContainerId);\r\n            ll.addView(fl, new LinearLayout.LayoutParams(\r\n                    LinearLayout.LayoutParams.MATCH_PARENT, 0, 1));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @deprecated Don't call the original TabHost setup, you must instead call\r\n     *             {@link #setup(Context, FragmentManager)} or\r\n     *             {@link #setup(Context, FragmentManager, int)}.\r\n     */\r\n    @Override\r\n    @Deprecated\r\n    public void setup() {\r\n        throw new IllegalStateException(\r\n                \"Must call setup() that takes a Context and FragmentManager\");\r\n    }\r\n\r\n    public void setup(Context context, FragmentManager manager) {\r\n        ensureHierarchy(context); // Ensure views required by super.setup()\r\n        super.setup();\r\n        mContext = context;\r\n        mFragmentManager = manager;\r\n        ensureContent();\r\n    }\r\n\r\n    public void setup(Context context, FragmentManager manager, int containerId) {\r\n        ensureHierarchy(context); // Ensure views required by super.setup()\r\n        super.setup();\r\n        mContext = context;\r\n        mFragmentManager = manager;\r\n        mContainerId = containerId;\r\n        ensureContent();\r\n        mRealTabContent.setId(containerId);\r\n\r\n        // We must have an ID to be able to save/restore our state. If\r\n        // the owner hasn't set one at this point, we will set it ourself.\r\n        if (getId() == View.NO_ID) {\r\n            setId(android.R.id.tabhost);\r\n        }\r\n    }\r\n\r\n    private void ensureContent() {\r\n        if (mRealTabContent == null) {\r\n            mRealTabContent = (FrameLayout) findViewById(mContainerId);\r\n            if (mRealTabContent == null) {\r\n                throw new IllegalStateException(\r\n                        \"No tab content FrameLayout found for id \"\r\n                                + mContainerId);\r\n            }\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public void setOnTabChangedListener(OnTabChangeListener l) {\r\n        mOnTabChangeListener = l;\r\n    }\r\n\r\n    public void addTab(TabSpec tabSpec, Class<?> clss, Bundle args) {\r\n        tabSpec.setContent(new DummyTabFactory(mContext));\r\n        String tag = tabSpec.getTag();\r\n\r\n        TabInfo info = new TabInfo(tag, clss, args);\r\n\r\n        if (mAttached) {\r\n            // If we are already attached to the window, then check to make\r\n            // sure this tab's fragment is inactive if it exists. This shouldn't\r\n            // normally happen.\r\n            info.fragment = mFragmentManager.findFragmentByTag(tag);\r\n            if (info.fragment != null && !info.fragment.isDetached()) {\r\n                FragmentTransaction ft = mFragmentManager.beginTransaction();\r\n//\t\t\t\tft.detach(info.fragment);\r\n                ft.hide(info.fragment);\r\n                ft.commit();\r\n            }\r\n        }\r\n\r\n        mTabs.add(info);\r\n        addTab(tabSpec);\r\n    }\r\n\r\n    @Override\r\n    protected void onAttachedToWindow() {\r\n        super.onAttachedToWindow();\r\n\r\n        String currentTab = getCurrentTabTag();\r\n\r\n        // Go through all tabs and make sure their fragments match\r\n        // the correct state.\r\n        FragmentTransaction ft = null;\r\n        for (int i = 0; i < mTabs.size(); i++) {\r\n            TabInfo tab = mTabs.get(i);\r\n            tab.fragment = mFragmentManager.findFragmentByTag(tab.tag);\r\n//\t\t\tif (tab.fragment != null && !tab.fragment.isDetached()) {\r\n            if (tab.fragment != null) {\r\n                if (tab.tag.equals(currentTab)) {\r\n                    // The fragment for this tab is already there and\r\n                    // active, and it is what we really want to have\r\n                    // as the current tab. Nothing to do.\r\n                    mLastTab = tab;\r\n                } else {\r\n                    // This fragment was restored in the active state,\r\n                    // but is not the current tab. Deactivate it.\r\n                    if (ft == null) {\r\n                        ft = mFragmentManager.beginTransaction();\r\n                    }\r\n//\t\t\t\t\tft.detach(tab.fragment);\r\n                    ft.hide(tab.fragment);\r\n                }\r\n            }\r\n        }\r\n\r\n        // We are now ready to go. Make sure we are switched to the\r\n        // correct tab.\r\n        mAttached = true;\r\n        ft = doTabChanged(currentTab, ft);\r\n        if (ft != null) {\r\n            ft.commitAllowingStateLoss();\r\n            mFragmentManager.executePendingTransactions();\r\n        }\r\n    }\r\n\r\n    @Override\r\n    protected void onDetachedFromWindow() {\r\n        super.onDetachedFromWindow();\r\n        mAttached = false;\r\n    }\r\n\r\n    @Override\r\n    protected Parcelable onSaveInstanceState() {\r\n        Parcelable superState = super.onSaveInstanceState();\r\n        SavedState ss = new SavedState(superState);\r\n        ss.curTab = getCurrentTabTag();\r\n        return ss;\r\n    }\r\n\r\n    @Override\r\n    protected void onRestoreInstanceState(Parcelable state) {\r\n        SavedState ss = (SavedState) state;\r\n        super.onRestoreInstanceState(ss.getSuperState());\r\n        setCurrentTabByTag(ss.curTab);\r\n    }\r\n\r\n    @Override\r\n    public void onTabChanged(String tabId) {\r\n        if (mAttached) {\r\n            FragmentTransaction ft = doTabChanged(tabId, null);\r\n            if (ft != null) {\r\n                ft.commit();\r\n            }\r\n        }\r\n        if (mOnTabChangeListener != null) {\r\n            mOnTabChangeListener.onTabChanged(tabId);\r\n        }\r\n    }\r\n\r\n    private FragmentTransaction doTabChanged(String tabId,\r\n                                             FragmentTransaction ft) {\r\n        TabInfo newTab = null;\r\n        for (int i = 0; i < mTabs.size(); i++) {\r\n            TabInfo tab = mTabs.get(i);\r\n            if (tab.tag.equals(tabId)) {\r\n                newTab = tab;\r\n            }\r\n        }\r\n        if (newTab == null) {\r\n            throw new IllegalStateException(\"No tab known for tag \" + tabId);\r\n        }\r\n        if (mLastTab != newTab) {\r\n            if (ft == null) {\r\n                ft = mFragmentManager.beginTransaction();\r\n            }\r\n            if (mLastTab != null) {\r\n                if (mLastTab.fragment != null) {\r\n//\t\t\t\t\tft.detach(mLastTab.fragment);\r\n                    ft.hide(mLastTab.fragment);\r\n                }\r\n            }\r\n            if (newTab != null) {\r\n                if (newTab.fragment == null) {\r\n                    newTab.fragment = Fragment.instantiate(mContext,\r\n                            newTab.clss.getName(), newTab.args);\r\n                    ft.add(mContainerId, newTab.fragment, newTab.tag);\r\n                } else {\r\n//\t\t\t\t\tft.attach(newTab.fragment);\r\n                    ft.show(newTab.fragment);\r\n                }\r\n            }\r\n\r\n            mLastTab = newTab;\r\n        }\r\n        return ft;\r\n    }\r\n}\r\n"
  },
  {
    "path": "app/src/main/java/cniao5/com/cniao5shop/widget/NumberAddSubView.java",
    "content": "package cniao5.com.cniao5shop.widget;\n\nimport android.annotation.TargetApi;\nimport android.content.Context;\nimport android.graphics.drawable.Drawable;\nimport android.os.Build;\nimport android.support.v7.internal.widget.TintTypedArray;\nimport android.text.InputType;\nimport android.util.AttributeSet;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.widget.Button;\nimport android.widget.LinearLayout;\nimport android.widget.TextView;\n\nimport cniao5.com.cniao5shop.R;\n\n\n/**\n * Created by <a href=\"http://www.cniao5.com\">菜鸟窝</a>\n * 一个专业的Android开发在线教育平台\n */\npublic class NumberAddSubView extends LinearLayout implements View.OnClickListener {\n\n\n    public static final String TAG=\"NumberAddSubView\";\n    public static final int DEFUALT_MAX=1000;\n\n    private TextView mEtxtNum;\n    private Button mBtnAdd;\n    private Button mBtnSub;\n\n    private OnButtonClickListener onButtonClickListener;\n\n\n\n\n    private LayoutInflater mInflater;\n\n\n    private  int value;\n    private int minValue;\n    private int maxValue=DEFUALT_MAX;\n\n\n\n    public NumberAddSubView(Context context) {\n        this(context, null);\n    }\n\n    public NumberAddSubView(Context context, AttributeSet attrs) {\n        this(context, attrs, 0);\n    }\n\n    public NumberAddSubView(Context context, AttributeSet attrs, int defStyleAttr) {\n        super(context, attrs, defStyleAttr);\n\n        mInflater = LayoutInflater.from(context);\n        initView();\n\n        if(attrs !=null){\n\n            final TintTypedArray a = TintTypedArray.obtainStyledAttributes(getContext(), attrs,\n                    R.styleable.NumberAddSubView, defStyleAttr, 0);\n\n\n            int val =  a.getInt(R.styleable.NumberAddSubView_value,0);\n            setValue(val);\n\n            int maxVal = a.getInt(R.styleable.NumberAddSubView_maxValue,0);\n            if(maxVal!=0)\n                setMaxValue(maxVal);\n\n            int minVal = a.getInt(R.styleable.NumberAddSubView_minValue,0);\n            setMinValue(minVal);\n\n            Drawable etBackground = a.getDrawable(R.styleable.NumberAddSubView_editBackground);\n            if(etBackground!=null)\n                setEditTextBackground(etBackground);\n\n\n             Drawable buttonAddBackground = a.getDrawable(R.styleable.NumberAddSubView_buttonAddBackgroud);\n             if(buttonAddBackground!=null)\n                 setButtonAddBackgroud(buttonAddBackground);\n\n            Drawable buttonSubBackground = a.getDrawable(R.styleable.NumberAddSubView_buttonSubBackgroud);\n            if(buttonSubBackground!=null)\n                setButtonSubBackgroud(buttonSubBackground);\n\n\n\n\n            a.recycle();\n        }\n    }\n\n\n    private void initView(){\n\n\n\n        View view = mInflater.inflate(R.layout.widet_num_add_sub,this,true);\n\n        mEtxtNum = (TextView) view.findViewById(R.id.etxt_num);\n        mEtxtNum.setInputType(InputType.TYPE_NULL);\n        mEtxtNum.setKeyListener(null);\n\n\n\n        mBtnAdd = (Button) view.findViewById(R.id.btn_add);\n        mBtnSub = (Button) view.findViewById(R.id.btn_sub);\n\n        mBtnAdd.setOnClickListener(this);\n        mBtnSub.setOnClickListener(this);\n\n\n\n    }\n\n\n    @Override\n    public void onClick(View v) {\n        if(v.getId() == R.id.btn_add){\n\n            numAdd();\n\n            if(onButtonClickListener !=null){\n                onButtonClickListener.onButtonAddClick(v,this.value);\n            }\n        }\n        else if(v.getId()==R.id.btn_sub){\n                numSub();\n            if(onButtonClickListener !=null){\n                onButtonClickListener.onButtonSubClick(v,this.value);\n            }\n\n        }\n    }\n\n\n    private void numAdd(){\n\n\n        getValue();\n\n        if(this.value<=maxValue)\n            this.value=+this.value+1;\n\n        mEtxtNum.setText(value+\"\");\n    }\n\n\n    private void numSub(){\n\n\n        getValue();\n\n        if(this.value>minValue)\n            this.value=this.value-1;\n\n        mEtxtNum.setText(value+\"\");\n    }\n\n\n    public int getValue(){\n\n        String value = mEtxtNum.getText().toString();\n\n        if(value !=null && !\"\".equals(value))\n            this.value = Integer.parseInt(value);\n\n        return this.value;\n    }\n\n    public void setValue(int value) {\n        mEtxtNum.setText(value+\"\");\n        this.value = value;\n    }\n\n\n\n\n    public void setMaxValue(int maxValue) {\n        this.maxValue = maxValue;\n    }\n\n    public void setMinValue(int minValue) {\n        this.minValue = minValue;\n    }\n\n\n    public void setEditTextBackground(Drawable drawable){\n\n        mEtxtNum.setBackgroundDrawable(drawable);\n\n    }\n\n\n    public void setEditTextBackground(int drawableId){\n\n      setEditTextBackground(getResources().getDrawable(drawableId));\n\n    }\n\n\n    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)\n    public void setButtonAddBackgroud(Drawable backgroud){\n        this.mBtnAdd.setBackground(backgroud);\n    }\n\n\n    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)\n    public void setButtonSubBackgroud(Drawable backgroud){\n        this.mBtnSub.setBackground(backgroud);\n    }\n\n\n    public void setOnButtonClickListener(OnButtonClickListener onButtonClickListener) {\n        this.onButtonClickListener = onButtonClickListener;\n    }\n\n    public interface  OnButtonClickListener{\n\n        public void onButtonAddClick(View view, int value);\n        public void onButtonSubClick(View view, int value);\n\n    }\n\n\n}\n"
  },
  {
    "path": "app/src/main/res/color/grey_btn_text_color.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n  xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_enabled=\"false\" android:color=\"@color/normal_text_color_disable\" />\n    <item android:state_pressed=\"true\" android:color=\"@color/black\" />\n    <item android:color=\"@color/normal_text_color\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/color/selector_tab_text.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_selected=\"true\" android:color=\"#eb4f38\" />\n    <item android:state_active=\"true\" android:color=\"#eb4f38\"/>\n    <item android:state_selected=\"false\" android:color=\"#a9b7b7\" />\n    <item android:state_active=\"false\" android:color=\"#a9b7b7\"/>\n\n</selector>\n"
  },
  {
    "path": "app/src/main/res/color/white_color_selector.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n  xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_enabled=\"false\" android:color=\"@color/white_color_disable\" />\n    <item android:color=\"@color/white\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/bg_btn_style_green.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<selector\n        xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_enabled=\"false\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/green_btn_color_disable\" />\n        </shape>\n    </item>\n    <item android:state_pressed=\"true\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/green_btn_color_pressed\" />\n        </shape>\n    </item>\n    <item>\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/green_btn_color_normal\" />\n        </shape>\n    </item>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/bg_btn_style_grey.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<selector\n        xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_enabled=\"false\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/grey_btn_color_disable\" />\n            <stroke android:width=\"1.0px\" android:color=\"@color/grey_btn_stroke_color_disable\" />\n        </shape>\n    </item>\n    <item android:state_pressed=\"true\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/grey_btn_color_pressed\" />\n            <stroke android:width=\"1.0px\" android:color=\"@color/grey_btn_stroke_color_pressed\" />\n        </shape>\n    </item>\n    <item>\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/grey_btn_color_normal\" />\n            <stroke android:width=\"1.0px\" android:color=\"@color/grey_btn_stroke_color_normal\" />\n        </shape>\n    </item>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/bg_btn_style_red.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<selector\n        xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_enabled=\"false\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/red_btn_color_disable\" />\n        </shape>\n    </item>\n    <item android:state_pressed=\"true\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/red_btn_color_pressed\" />\n        </shape>\n    </item>\n    <item>\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/red_btn_color_normal\" />\n        </shape>\n    </item>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/bg_btn_style_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<selector\n        xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\n    <item android:state_enabled=\"false\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/grey_btn_color_disable\" />\n            <stroke android:width=\"1.0dp\" android:color=\"#ddd\" />\n        </shape>\n    </item>\n    <item android:state_pressed=\"true\">\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/grey_btn_color_pressed\" />\n            <stroke android:width=\"1.0dp\" android:color=\"#ddd\" />\n        </shape>\n    </item>\n    <item>\n        <shape android:shape=\"rectangle\">\n            <corners android:radius=\"@dimen/buttonCornerSize\" />\n            <solid android:color=\"@color/white\" />\n            <stroke android:width=\"1.0dp\" android:color=\"#ddd\" />\n        </shape>\n    </item>\n\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_checkbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <!--<item>-->\n        <!--<shape android:shape=\"rectangle\">-->\n\n            <!--<size android:height=\"40dp\" android:width=\"40dp\"/>-->\n            <!--<corners android:radius=\"20dp\"/>-->\n            <!--<solid android:color=\"@color/white\" />-->\n            <!--<stroke android:width=\"1.0dp\" android:color=\"#ddd\" />-->\n        <!--</shape>-->\n    <!--</item>-->\n\n    <!--<item android:state_checked=\"true\">-->\n\n        <!--<shape android:shape=\"rectangle\">-->\n\n            <!--<size android:height=\"40dp\" android:width=\"40dp\"/>-->\n            <!--<corners android:radius=\"20dp\"/>-->\n            <!--<solid android:color=\"?attr/colorPrimary\" />-->\n            <!--<stroke android:width=\"1.0dp\" android:color=\"#ddd\" />-->\n        <!--</shape>-->\n\n    <!--</item>-->\n\n    <!--<item android:state_checked=\"false\">-->\n        <!--<shape android:shape=\"rectangle\">-->\n\n            <!--<size android:height=\"40dp\" android:width=\"40dp\"/>-->\n            <!--<corners android:radius=\"20dp\"/>-->\n            <!--<solid android:color=\"@color/white\" />-->\n            <!--<stroke android:width=\"1.0dp\" android:color=\"#ddd\" />-->\n        <!--</shape>-->\n    <!--</item>-->\n\n    <item android:drawable=\"@drawable/icon_check_checked_32\" android:state_checked=\"true\"/>\n    <item android:drawable=\"@drawable/icon_check_32\" android:state_checked=\"false\"/>\n    <item android:drawable=\"@drawable/icon_check_32\"/>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_icon_cart.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\n\n\n\n\n    <!-- Non focused states -->\n    <item android:state_focused=\"false\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_cart\" />\n    <item android:state_focused=\"false\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_cartfill_press\" />\n    <!-- Focused states -->\n    <item android:state_focused=\"true\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_cartfill_press\" />\n    <item android:state_focused=\"true\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_cartfill_press\" />\n    <!-- Pressed -->\n    <item android:state_selected=\"true\" android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_cartfill_press\" />\n    <item android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_cartfill_press\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_icon_category.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\n\n\n\n\n    <!-- Non focused states -->\n    <item android:state_focused=\"false\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_discover\" />\n    <item android:state_focused=\"false\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_discover_press\" />\n    <!-- Focused states -->\n    <item android:state_focused=\"true\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_discover_press\" />\n    <item android:state_focused=\"true\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_discover_press\" />\n    <!-- Pressed -->\n    <item android:state_selected=\"true\" android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_discover_press\" />\n    <item android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_discover_press\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_icon_home.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\n\n    <!-- Non focused states -->\n    <item android:state_focused=\"false\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_home\" />\n    <item android:state_focused=\"false\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_home_press\" />\n    <!-- Focused states -->\n    <item android:state_focused=\"true\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_home_press\" />\n    <item android:state_focused=\"true\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_home_press\" />\n    <!-- Pressed -->\n    <item android:state_selected=\"true\" android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_home_press\" />\n    <item android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_home_press\" />\n\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_icon_hot.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\n\n\n\n\n    <!-- Non focused states -->\n    <item android:state_focused=\"false\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_hot\" />\n    <item android:state_focused=\"false\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_hot_press\" />\n    <!-- Focused states -->\n    <item android:state_focused=\"true\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_hot_press\" />\n    <item android:state_focused=\"true\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_hot_press\" />\n    <!-- Pressed -->\n    <item android:state_selected=\"true\" android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_hot_press\" />\n    <item android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_hot_press\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_icon_mine.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\n\n\n\n\n    <!-- Non focused states -->\n    <item android:state_focused=\"false\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_user\" />\n    <item android:state_focused=\"false\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_user_press\" />\n    <!-- Focused states -->\n    <item android:state_focused=\"true\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_user_press\" />\n    <item android:state_focused=\"true\" android:state_selected=\"true\" android:state_pressed=\"false\" android:drawable=\"@mipmap/icon_user_press\" />\n    <!-- Pressed -->\n    <item android:state_selected=\"true\" android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_user_press\" />\n    <item android:state_pressed=\"true\" android:drawable=\"@mipmap/icon_user_press\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_list_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\n    <item  android:state_focused=\"true\" android:drawable=\"@color/gainsboro\" />\n    <item  android:state_pressed=\"true\" android:drawable=\"@color/gainsboro\" />\n\n    <item android:drawable=\"@color/white\"/>\n\n</selector>\n\n"
  },
  {
    "path": "app/src/main/res/drawable/selector_number_add_sub.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:shape=\"rectangle\"\n    >\n    <corners android:radius=\"2dp\"/>\n    <stroke android:width=\"1dp\"\n        android:color=\"#ddd\"/>\n    <solid android:color=\"#FFFFFF\" />\n</shape>"
  },
  {
    "path": "app/src/main/res/drawable/selector_search_view.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n    <selector\n        xmlns:android=\"http://schemas.android.com/apk/res/android\">\n        <item android:state_enabled=\"false\" >\n            <shape android:shape=\"rectangle\">\n                <corners android:radius=\"8dp\" />\n                <solid android:color=\"#eb4f38\" />\n            </shape>\n        </item>\n        <item android:state_pressed=\"true\">\n            <shape android:shape=\"rectangle\">\n                <corners android:radius=\"8dp\" />\n                <solid android:color=\"#eb4f38\" />\n            </shape>\n        </item>\n        <item>\n            <shape android:shape=\"rectangle\">\n                <corners android:radius=\"8dp\" />\n                <solid android:color=\"#D82917\" />\n            </shape>\n        </item>\n    </selector>\n"
  },
  {
    "path": "app/src/main/res/layout/activity_main.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    tools:context=\".MainActivity\"\n    android:orientation=\"vertical\">\n\n\n\n\n\n    <FrameLayout\n        android:id=\"@+id/realtabcontent\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"0dip\"\n        android:layout_weight=\"1\"\n        android:background=\"@color/bg_color\"\n        />\n\n\n    <cniao5.com.cniao5shop.widget.FragmentTabHost\n        android:id=\"@android:id/tabhost\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@color/white\"\n        >\n\n        <FrameLayout\n            android:id=\"@android:id/tabcontent\"\n            android:layout_width=\"0dp\"\n            android:layout_height=\"0dp\"\n            android:layout_weight=\"0\" />\n    </cniao5.com.cniao5shop.widget.FragmentTabHost>\n\n\n\n\n\n</LinearLayout>\n\n"
  },
  {
    "path": "app/src/main/res/layout/activity_test.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"#fff\">\n\n\n    <cniao5.com.cniao5shop.widget.CNiaoToolBar\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"?attr/colorPrimary\"\n        android:minHeight=\"?attr/actionBarSize\"\n        app:isShowSearchView=\"true\">\n\n\n    </cniao5.com.cniao5shop.widget.CNiaoToolBar>\n\n\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_ware_detail.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"vertical\"\n    tools:context=\"cniao5.com.cniao5shop.WareDetailActivity\">\n\n\n    <cniao5.com.cniao5shop.widget.CNiaoToolBar\n        android:id=\"@id/toolbar\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"?attr/colorPrimary\"\n        android:minHeight=\"?attr/actionBarSize\"\n        app:isShowSearchView=\"false\"\n        app:navigationIcon=\"@drawable/icon_back_32px\"\n        app:contentInsetEnd=\"56dp\"\n        app:title=\"商品详情\">\n\n    </cniao5.com.cniao5shop.widget.CNiaoToolBar>\n\n\n\n    <WebView\n        android:id=\"@id/webView\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"></WebView>\n\n\n\n\n\n</LinearLayout>\n"
  },
  {
    "path": "app/src/main/res/layout/activity_warelist.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@color/bg_color\">\n\n\n    <cniao5.com.cniao5shop.widget.CNiaoToolBar\n        android:id=\"@id/toolbar\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"?attr/colorPrimary\"\n        android:minHeight=\"?attr/actionBarSize\"\n        app:isShowSearchView=\"false\"\n        app:navigationIcon=\"@drawable/icon_back_32px\"\n        app:contentInsetEnd=\"56dp\"\n        app:title=\"商品列表\">\n\n    </cniao5.com.cniao5shop.widget.CNiaoToolBar>\n\n    <android.support.design.widget.TabLayout\n        android:id=\"@+id/tab_layout\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        style=\"@style/customTabLayout\"\n        app:tabGravity=\"fill\"\n        app:tabMode=\"fixed\"\n        >\n\n    </android.support.design.widget.TabLayout>\n\n\n    <LinearLayout\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\"\n        android:minHeight=\"30dp\"\n        android:gravity=\"center_vertical\"\n        android:padding=\"5dp\"\n        android:background=\"@color/goldyellow\">\n\n\n        <TextView\n            android:id=\"@+id/txt_summary\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:textColor=\"@color/gray\"/>\n\n\n    </LinearLayout>\n\n\n    <com.cjj.MaterialRefreshLayout\n        android:id=\"@+id/refresh_layout\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        app:overlay=\"false\"\n        app:wave_show=\"false\"\n        app:wave_color=\"#90ffffff\"\n        app:progress_colors=\"@array/material_colors\"\n        app:wave_height_type=\"higher\"\n        >\n\n\n        <android.support.v7.widget.RecyclerView\n            android:id=\"@+id/recycler_view\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\">\n\n\n        </android.support.v7.widget.RecyclerView>\n\n\n    </com.cjj.MaterialRefreshLayout>\n\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_cart.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\">\n\n\n    <cniao5.com.cniao5shop.widget.CNiaoToolBar\n        android:id=\"@id/toolbar\"\n        android:background=\"?attr/colorPrimary\"\n        android:minHeight=\"?attr/actionBarSize\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        app:title=\"购物车\"\n        app:rightButtonText=\"编辑\"\n        android:layout_alignParentTop=\"true\"\n        />\n\n\n    <android.support.v7.widget.RecyclerView\n        android:id=\"@+id/recycler_view\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:layout_below=\"@id/toolbar\"\n        android:layout_marginBottom=\"50dp\">\n\n\n    </android.support.v7.widget.RecyclerView>\n\n    <RelativeLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_alignParentBottom=\"true\"\n        android:paddingTop=\"10dp\"\n        android:paddingBottom=\"10dp\"\n        android:paddingLeft=\"5dp\"\n        android:paddingRight=\"5dp\"\n        android:background=\"#802f4f4f\"\n        android:gravity=\"center_vertical\"\n        >\n\n        <CheckBox\n            android:id=\"@+id/checkbox_all\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignParentLeft=\"true\"\n            android:layout_centerVertical=\"true\"\n            android:checked=\"true\"\n            android:text=\"全选\"\n            style=\"@style/customCheckbox\"/>\n\n\n        <TextView\n            android:id=\"@+id/txt_total\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_toRightOf=\"@+id/checkbox_all\"\n           android:layout_marginLeft=\"40dp\"\n            android:layout_centerVertical=\"true\"\n            android:textSize=\"30dp\"\n            android:text=\"合计\"/>\n\n        <Button\n            android:id=\"@+id/btn_order\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignParentRight=\"true\"\n            android:layout_centerVertical=\"true\"\n            android:minHeight=\"60dp\"\n            android:minWidth=\"120dp\"\n            android:text=\"去结算\"\n            style=\"@style/bigRedButton\"/>\n\n\n        <Button\n            android:id=\"@+id/btn_del\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignParentRight=\"true\"\n            android:layout_centerVertical=\"true\"\n            android:visibility=\"gone\"\n            android:minHeight=\"60dp\"\n            android:minWidth=\"120dp\"\n            android:text=\"删除\"\n            style=\"@style/bigRedButton\"/>\n\n\n    </RelativeLayout>\n\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_category.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    >\n\n\n    <cniao5.com.cniao5shop.widget.CNiaoToolBar\n        android:id=\"@id/toolbar\"\n        android:background=\"?attr/colorPrimary\"\n        android:minHeight=\"?attr/actionBarSize\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        app:isShowSearchView=\"false\"\n        app:title=\"分类\"\n        />\n\n\n    <LinearLayout\n        android:orientation=\"horizontal\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\">\n\n\n\n    <android.support.v7.widget.RecyclerView\n        android:id=\"@+id/recyclerview_category\"\n        android:layout_width=\"@dimen/category_layout_width\"\n        android:layout_height=\"fill_parent\"\n        android:background=\"@color/white\"\n        >\n\n\n    </android.support.v7.widget.RecyclerView>\n\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:orientation=\"vertical\"\n        android:layout_marginLeft=\"2dp\"\n        >\n\n\n        <com.daimajia.slider.library.SliderLayout\n            android:id=\"@+id/slider\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"180dp\"\n            app:pager_animation=\"Accordion\"\n            app:auto_cycle=\"true\"\n            app:indicator_visibility=\"visible\"\n            app:pager_animation_span=\"1100\"\n            />\n\n\n\n\n\n        <com.cjj.MaterialRefreshLayout\n            android:id=\"@+id/refresh_layout\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\"\n            android:layout_marginTop=\"10dp\"\n            app:overlay=\"false\"\n            app:wave_show=\"false\"\n            app:progress_colors=\"@array/material_colors\"\n            app:wave_height_type=\"higher\"\n            app:progress_show_circle_backgroud=\"false\"\n            >\n\n\n            <android.support.v7.widget.RecyclerView\n                android:id=\"@+id/recyclerview_wares\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"match_parent\">\n\n\n            </android.support.v7.widget.RecyclerView>\n\n\n        </com.cjj.MaterialRefreshLayout>\n\n\n    </LinearLayout>\n    </LinearLayout>\n\n\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_home.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\">\n\n    <cniao5.com.cniao5shop.widget.CNiaoToolBar\n        android:id=\"@id/toolbar\"\n        android:background=\"?attr/colorPrimary\"\n        android:minHeight=\"?attr/actionBarSize\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        app:isShowSearchView=\"true\"\n        />\n\n\n    <com.daimajia.slider.library.SliderLayout\n        android:id=\"@+id/slider\"\n        android:layout_width=\"match_parent\"\n        app:pager_animation=\"Accordion\"\n        app:auto_cycle=\"true\"\n        app:indicator_visibility=\"visible\"\n        app:pager_animation_span=\"1100\"\n        android:layout_height=\"180dp\"/>\n\n\n\n\n    <android.support.v7.widget.RecyclerView\n        android:id=\"@+id/recyclerview\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginTop=\"10dp\"\n        >\n\n\n    </android.support.v7.widget.RecyclerView>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_hot.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\">\n\n\n\n    <cniao5.com.cniao5shop.widget.CNiaoToolBar\n        android:id=\"@id/toolbar\"\n        android:background=\"?attr/colorPrimary\"\n        android:minHeight=\"?attr/actionBarSize\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        app:isShowSearchView=\"true\"\n        />\n\n    <com.cjj.MaterialRefreshLayout\n        android:id=\"@+id/refresh_view\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        app:overlay=\"true\"\n        app:wave_show=\"true\"\n        app:wave_color=\"#90ffffff\"\n        app:progress_colors=\"@array/material_colors\"\n        app:wave_height_type=\"higher\"\n        >\n\n\n          <android.support.v7.widget.RecyclerView\n              android:id=\"@+id/recyclerview\"\n              android:layout_width=\"match_parent\"\n              android:layout_height=\"match_parent\">\n\n\n          </android.support.v7.widget.RecyclerView>\n\n\n\n\n\n    </com.cjj.MaterialRefreshLayout>\n\n\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_mine.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\">\n\n\n\n    <FrameLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"180dp\"\n        android:background=\"?attr/colorPrimary\" >\n\n\n        <de.hdodenhof.circleimageview.CircleImageView\n            android:id=\"@+id/img_head\"\n            android:layout_width=\"100dp\"\n            android:layout_height=\"100dp\"\n            android:layout_gravity=\"center_horizontal\"\n            android:layout_marginTop=\"12dp\"\n            app:civ_border_width=\"2dp\"\n            app:civ_border_color=\"#FFFFFF\"\n            android:src=\"@drawable/default_head\">\n\n\n        </de.hdodenhof.circleimageview.CircleImageView>\n\n        <TextView\n            android:id=\"@+id/txt_username\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"center\"\n            android:layout_marginTop=\"50dp\"\n            android:layout_marginBottom=\"9dp\"\n            android:gravity=\"center\"\n            android:text=\"点击登录\"\n            android:textColor=\"@color/white\"\n            android:textSize=\"16sp\" />\n\n\n\n    </FrameLayout>\n\n\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/tab_indicator.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:layout_gravity=\"center\"\n    android:paddingTop=\"3dp\"\n    android:paddingBottom=\"3dp\"\n    android:gravity=\"center\">\n\n\n    <ImageView\n        android:id=\"@+id/icon_tab\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        />\n\n    <TextView\n        android:id=\"@+id/txt_indicator\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:textColor=\"@color/selector_tab_text\"\n        android:layout_marginTop=\"2dp\" />\n\n\n\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/template_cart.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"horizontal\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"@drawable/selector_list_item\"\n    android:padding=\"5dp\"\n    android:gravity=\"center_vertical\"\n    >\n    \n    \n    \n    <CheckBox\n        android:id=\"@+id/checkbox\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n       android:focusable=\"false\"\n        android:clickable=\"false\"\n        style=\"@style/customCheckbox\"/>\n    \n    \n    <LinearLayout\n        android:orientation=\"horizontal\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginLeft=\"20dp\">\n        \n        <com.facebook.drawee.view.SimpleDraweeView\n            android:id=\"@+id/drawee_view\"\n            android:layout_width=\"180dp\"\n            android:layout_height=\"180dp\"\n            />\n\n\n        <LinearLayout\n            android:orientation=\"vertical\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginLeft=\"5dp\"\n            >\n\n\n            <TextView\n                android:id=\"@+id/text_title\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"wrap_content\"\n                android:layout_marginTop=\"20dp\"\n                android:textColor=\"@color/gray\"\n                android:textSize=\"16sp\"\n                android:maxLines=\"3\"\n\n                />\n\n            <TextView\n                android:id=\"@+id/text_price\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:textSize=\"18sp\"\n                android:textColor=\"@color/crimson\"\n                android:layout_gravity=\"right\"\n                />\n\n           <cniao5.com.cniao5shop.widget.NumberAddSubView\n               android:id=\"@+id/num_control\"\n               android:layout_width=\"wrap_content\"\n               android:layout_height=\"wrap_content\"\n               android:layout_marginTop=\"10dp\"\n               app:minValue=\"1\"\n               />\n\n\n\n\n        </LinearLayout>\n        \n        \n        \n    </LinearLayout>\n    \n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/template_grid_wares.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v7.widget.CardView\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_marginBottom=\"2dp\"\n    android:layout_marginLeft=\"5dp\"\n    android:layout_marginRight=\"5dp\"\n    android:layout_marginTop=\"2dp\"\n    app:cardBackgroundColor=\"#fff\"\n    app:contentPadding=\"10dp\"\n    app:cardCornerRadius=\"4dp\">\n\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@drawable/selector_list_item\"\n        android:padding=\"10dp\"\n        android:orientation=\"vertical\">\n\n\n        <com.facebook.drawee.view.SimpleDraweeView\n            android:layout_width=\"@dimen/ware_grid_img_width\"\n            android:layout_height=\"@dimen/ware_grid_img_height\"\n            android:id=\"@+id/drawee_view\"\n\n            android:layout_alignParentLeft=\"true\"\n            android:layout_gravity=\"center\"\n            >\n\n        </com.facebook.drawee.view.SimpleDraweeView>\n\n        <TextView\n            android:id=\"@+id/text_title\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginTop=\"20dp\"\n            style=\"@style/ware_title\"\n            android:text=\"海蕴诗 H-W001 蜗牛再生精华蚕丝面膜 （莹润嫩肤 深层补水）5片装/盒 30g*5\"\n            />\n\n        <View\n            style=\"@style/line_vertical\"\n            android:layout_marginTop=\"10dp\"\n            />\n\n        <TextView\n            android:id=\"@+id/text_price\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n\n            android:layout_gravity=\"right\"\n            android:layout_marginTop=\"20dp\"\n            style=\"@style/ware_price\"\n            android:text=\"559.00\"\n            />\n\n    </LinearLayout>\n\n</android.support.v7.widget.CardView>"
  },
  {
    "path": "app/src/main/res/layout/template_home_cardview.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v7.widget.CardView\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_gravity=\"center\"\n    android:gravity=\"center\"\n\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    app:cardBackgroundColor=\"#fff\"\n    app:contentPadding=\"10dp\"\n\n    app:cardCornerRadius=\"4dp\">\n\n\n\n    <LinearLayout\n        android:orientation=\"vertical\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\">\n\n\n        <TextView\n            android:id=\"@+id/text_title\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"热门活动\"\n            android:textSize=\"20dp\"\n            android:textColor=\"@color/black\"\n            android:paddingTop=\"10dp\"\n\n\n            />\n        <View\n            style=\"@style/line_vertical\"\n            android:layout_marginBottom=\"10dp\"\n            android:layout_marginTop=\"10dp\"></View>\n\n\n\n\n        <LinearLayout\n            android:orientation=\"horizontal\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\">\n\n\n            <ImageView\n                android:id=\"@+id/imgview_big\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n\n                />\n\n            <View\n                android:id=\"@+id/line\"\n                style=\"@style/line_horizontal\"\n                />\n\n\n            <LinearLayout\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:orientation=\"vertical\"\n\n                >\n\n\n                <ImageView\n                    android:id=\"@+id/imgview_small_top\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"wrap_content\"\n                    />\n\n                <View\n                    android:id=\"@+id/line2\"\n                    style=\"@style/line_vertical\"\n\n                    ></View>\n                <ImageView\n                    android:id=\"@+id/imgview_small_bottom\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"wrap_content\"\n\n                    />\n\n\n            </LinearLayout>\n\n\n        </LinearLayout>\n\n\n    </LinearLayout>\n\n\n\n\n</android.support.v7.widget.CardView>\n\n\n"
  },
  {
    "path": "app/src/main/res/layout/template_home_cardview2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v7.widget.CardView\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_gravity=\"center\"\n    android:gravity=\"center\"\n\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    app:cardBackgroundColor=\"#fff\"\n    app:contentPadding=\"10dp\"\n\n    app:cardCornerRadius=\"4dp\">\n\n\n\n    <LinearLayout\n        android:orientation=\"vertical\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\">\n\n\n        <TextView\n            android:id=\"@+id/text_title\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"热门活动\"\n            android:textSize=\"20dp\"\n            android:textColor=\"@color/black\"\n            android:paddingTop=\"10dp\"\n\n\n            />\n        <View\n            style=\"@style/line_vertical\"\n            android:layout_marginBottom=\"10dp\"\n            android:layout_marginTop=\"10dp\"></View>\n\n\n\n\n        <LinearLayout\n            android:orientation=\"horizontal\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\">\n\n\n            <LinearLayout\n                android:id=\"@+id/layout_left\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:orientation=\"vertical\"\n\n                >\n\n                <ImageView\n                    android:id=\"@+id/imgview_small_top\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"wrap_content\"\n\n                    />\n\n                <View\n                    android:id=\"@+id/line2\"\n                    style=\"@style/line_vertical\"\n\n                    ></View>\n                <ImageView\n                    android:id=\"@+id/imgview_small_bottom\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"wrap_content\"\n\n\n                    />\n\n\n            </LinearLayout>\n            <View\n                android:id=\"@+id/line\"\n\n                style=\"@style/line_horizontal\"\n                android:layout_marginLeft=\"5dp\"\n                android:layout_marginRight=\"5dp\"\n\n                />\n\n            <ImageView\n                android:id=\"@+id/imgview_big\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n\n                />\n\n\n\n\n\n        </LinearLayout>\n\n\n    </LinearLayout>\n\n\n\n\n</android.support.v7.widget.CardView>\n\n\n"
  },
  {
    "path": "app/src/main/res/layout/template_hot_wares.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<android.support.v7.widget.CardView\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_marginBottom=\"2dp\"\n    android:layout_marginLeft=\"5dp\"\n    android:layout_marginRight=\"5dp\"\n    android:layout_marginTop=\"2dp\"\n    app:cardBackgroundColor=\"#fff\"\n    app:contentPadding=\"10dp\"\n    app:cardCornerRadius=\"4dp\">\n\n<RelativeLayout\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"@drawable/selector_list_item\"\n    android:padding=\"5dp\"\n    >\n\n\n\n    <com.facebook.drawee.view.SimpleDraweeView\n        android:layout_width=\"@dimen/ware_img_width\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@null\"\n        android:id=\"@+id/drawee_view\"\n        android:layout_alignParentLeft=\"true\"\n        app:viewAspectRatio=\"1\"\n\n        />\n\n\n\n    <LinearLayout\n        android:orientation=\"vertical\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginLeft=\"5dp\"\n        android:layout_toRightOf=\"@+id/drawee_view\">\n\n        <TextView\n            android:id=\"@+id/text_title\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            style=\"@style/ware_title\"\n\n            />\n\n\n        <View\n            style=\"@style/line_vertical\"\n            android:layout_marginTop=\"5dp\"\n            android:layout_marginBottom=\"5dp\"/>\n\n\n        <RelativeLayout\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n\n            >\n\n\n            <TextView\n                android:id=\"@+id/text_price\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                style=\"@style/ware_price\"\n\n               android:layout_alignParentLeft=\"true\"\n                android:layout_centerVertical=\"true\"\n                />\n\n            <Button\n                android:id=\"@+id/btn_add\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                style=\"@style/bigRedButton\"\n                android:layout_marginTop=\"20dp\"\n                android:text=\"立即购买\"\n\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                />\n        </RelativeLayout>\n\n\n    </LinearLayout>\n\n\n\n</RelativeLayout>\n</android.support.v7.widget.CardView>"
  },
  {
    "path": "app/src/main/res/layout/template_single_text.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"wrap_content\"\n    android:padding=\"16dp\"\n    android:background=\"@drawable/selector_list_item\"\n\n    >\n\n    <TextView\n        android:id=\"@+id/textView\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\"\n        android:textSize=\"20sp\"\n        android:textColor=\"@color/darkgrey\"\n\n         />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/toolbar.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<RelativeLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"wrap_content\">\n\n    <EditText\n        android:id=\"@+id/toolbar_searchview\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"\n        android:layout_centerVertical=\"true\"\n        android:gravity=\"center\"\n        android:drawableLeft=\"@mipmap/icon_search\"\n        style=\"@style/search_view\"\n        android:hint=\"请输入搜索内容\"\n\n        android:visibility=\"gone\"\n        />\n\n    <TextView\n        android:id=\"@+id/toolbar_title\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\"\n        android:layout_gravity=\"center\"\n        android:gravity=\"center\"\n        android:textColor=\"@color/white\"\n        android:textSize=\"20sp\"\n        android:visibility=\"gone\"\n        />\n\n    <Button\n        android:id=\"@+id/toolbar_rightButton\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_alignParentRight=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:textColor=\"@color/white\"\n        android:visibility=\"gone\"\n        style=\"@android:style/Widget.Material.Toolbar.Button.Navigation\"\n        />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/widet_num_add_sub.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:orientation=\"horizontal\"\n    android:layout_width=\"wrap_content\"\n    android:layout_height=\"wrap_content\"\n\n    android:gravity=\"center_horizontal\"\n    android:background=\"@drawable/selector_number_add_sub\">\n\n\n\n    <Button\n        android:id=\"@+id/btn_sub\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@drawable/bg_btn_style_white\"\n        android:textColor=\"@color/black\"\n        android:text=\"-\"/>\n\n    <TextView\n        android:id=\"@+id/etxt_num\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:textColor=\"@color/black\"\n        android:minWidth=\"100dp\"\n\n        android:gravity=\"center\"/>\n\n    <Button\n        android:id=\"@+id/btn_add\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@drawable/bg_btn_style_white\"\n        android:textColor=\"@color/black\"\n        android:text=\"+\"/>\n\n\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/menu/menu_main.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    xmlns:tools=\"http://schemas.android.com/tools\" tools:context=\".MainActivity\">\n    <item android:id=\"@+id/action_settings\" android:title=\"@string/action_settings\"\n        android:orderInCategory=\"100\" app:showAsAction=\"never\" />\n</menu>\n"
  },
  {
    "path": "app/src/main/res/values/attr_number_add_sub_view.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <attr name=\"value\" format=\"integer|reference\"/>\n    <attr name=\"minValue\" format=\"integer|reference\"/>\n    <attr name=\"maxValue\" format=\"integer|reference\"/>\n    <attr name=\"editBackground\" format=\"reference\"/>\n    <attr name=\"buttonAddBackgroud\" format=\"reference\"/>\n    <attr name=\"buttonSubBackgroud\" format=\"reference\"/>\n\n    \n    <declare-styleable name=\"NumberAddSubView\">\n        \n        <attr name=\"value\"/>\n        <attr name=\"minValue\"/>\n        <attr name=\"maxValue\"/>\n        <attr name=\"editBackground\"/>\n        <attr name=\"buttonAddBackgroud\"/>\n        <attr name=\"buttonSubBackgroud\"/>\n\n    </declare-styleable>\n\n</resources>"
  },
  {
    "path": "app/src/main/res/values/attrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <declare-styleable name=\"CNiaoToolBar\">\n\n        <attr name=\"rightButtonIcon\" format=\"reference\"/>\n        <attr name=\"isShowSearchView\" format=\"boolean\"/>\n        <attr name=\"rightButtonText\" format=\"string\"/>\n\n    </declare-styleable>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n\r\n    <color name=\"white\">#ffffff</color>\r\n    <!-- 白色 -->\r\n    <color name=\"ivory\">#fffff0</color>\r\n    <!-- 象牙色 -->\r\n    <color name=\"lightyellow\">#ffffe0</color>\r\n    <!-- 亮黄色 -->\r\n    <color name=\"yellow\">#ffff00</color>\r\n    <!-- 黄色 -->\r\n    <color name=\"snow\">#fffafa</color>\r\n    <!-- 雪白色 -->\r\n    <color name=\"floralwhite\">#fffaf0</color>\r\n    <!-- 花白色 -->\r\n    <color name=\"lemonchiffon\">#fffacd</color>\r\n    <!-- 柠檬绸色 -->\r\n    <color name=\"cornk\">#fff8dc</color>\r\n    <!-- 米绸色 -->\r\n    <color name=\"seaShell\">#fff5ee</color>\r\n    <!-- 海贝色 -->\r\n    <color name=\"lavenderblush\">#fff0f5</color>\r\n    <!-- 淡紫红 -->\r\n    <color name=\"papayawhip\">#ffefd5</color>\r\n    <!-- 番木色 -->\r\n    <color name=\"blanchedalmond\">#ffebcd</color>\r\n    <!-- 白杏色 -->\r\n    <color name=\"mistyrose\">#ffe4e1</color>\r\n    <!-- 浅玫瑰色 -->\r\n    <color name=\"bisque\">#ffe4c4</color>\r\n    <!-- 桔黄色 -->\r\n    <color name=\"moccasin\">#ffe4b5</color>\r\n    <!-- 鹿皮色 -->\r\n    <color name=\"navajowhite\">#ffdead</color>\r\n    <!-- 纳瓦白 -->\r\n    <color name=\"peachpuff\">#ffdab9</color>\r\n    <!-- 桃色 -->\r\n    <color name=\"gold\">#ffd700</color>\r\n    <!-- 金色 -->\r\n    <color name=\"pink\">#ffc0cb</color>\r\n    <!-- 粉红色 -->\r\n    <color name=\"lightpink\">#ffb6c1</color>\r\n   \r\n<!--     金黄色 -->\r\n    <color name=\"goldyellow\">#ff9428</color>\r\n     <!-- 亮粉红色 -->\r\n    <color name=\"orange\">#ffa500</color>\r\n    <!-- 橙色 -->\r\n    <color name=\"lightsalmon\">#ffa07a</color>\r\n    <!-- 亮肉色 -->\r\n    <color name=\"darkorange\">#ff8c00</color>\r\n    <!-- 暗桔黄色 -->\r\n    <color name=\"coral\">#ff7f50</color>\r\n    <!-- 珊瑚色 -->\r\n    <color name=\"hotpink\">#ff69b4</color>\r\n    <!-- 热粉红色 -->\r\n    <color name=\"tomato\">#ff6347</color>\r\n    <!-- 西红柿色 -->\r\n    <color name=\"orangered\">#ff4500</color>\r\n    <!-- 红橙色 -->\r\n    <color name=\"deeppink\">#ff1493</color>\r\n    <!-- 深粉红色 -->\r\n    <color name=\"fuchsia\">#ff00ff</color>\r\n    <!-- 紫红色 -->\r\n    <color name=\"magenta\">#ff00ff</color>\r\n    <!-- 红紫色 -->\r\n    <color name=\"red\">#ff0000</color>\r\n    <!-- 红色 -->\r\n    <color name=\"oldlace\">#fdf5e6</color>\r\n    <!-- 老花色 -->\r\n    <color name=\"lightgoldenrodyellow\">#fafad2</color>\r\n    <!-- 亮金黄色 -->\r\n    <color name=\"linen\">#faf0e6</color>\r\n    <!-- 亚麻色 -->\r\n    <color name=\"antiquewhite\">#faebd7</color>\r\n    <!-- 古董白 -->\r\n    <color name=\"salmon\">#fa8072</color>\r\n    <!-- 鲜肉色 -->\r\n    <color name=\"ghostwhite\">#f8f8ff</color>\r\n    <!-- 幽灵白 -->\r\n    <color name=\"mintcream\">#f5fffa</color>\r\n    <!-- 薄荷色 -->\r\n    <color name=\"whitesmoke\">#f5f5f5</color>\r\n    <!-- 烟白色 -->\r\n    <color name=\"beige\">#f5f5dc</color>\r\n    <!-- 米色 -->\r\n    <color name=\"wheat\">#f5deb3</color>\r\n    <!-- 浅黄色 -->\r\n    <color name=\"sandybrown\">#f4a460</color>\r\n    <!-- 沙褐色 -->\r\n    <color name=\"azure\">#f0ffff</color>\r\n    <!-- 天蓝色 -->\r\n    <color name=\"honeydew\">#f0fff0</color>\r\n    <!-- 蜜色 -->\r\n    <color name=\"aliceblue\">#f0f8ff</color>\r\n    <!-- 艾利斯兰 -->\r\n    <color name=\"khaki\">#f0e68c</color>\r\n    <!-- 黄褐色 -->\r\n    <color name=\"lightcoral\">#f08080</color>\r\n    <!-- 亮珊瑚色 -->\r\n    <color name=\"palegoldenrod\">#eee8aa</color>\r\n    <!-- 苍麒麟色 -->\r\n    <color name=\"violet\">#ee82ee</color>\r\n    <!-- 紫罗兰色 -->\r\n    <color name=\"darksalmon\">#e9967a</color>\r\n    <!-- 暗肉色 -->\r\n    <color name=\"lavender\">#e6e6fa</color>\r\n    <!-- 淡紫色 -->\r\n    <color name=\"lightcyan\">#e0ffff</color>\r\n    <!-- 亮青色 -->\r\n    <color name=\"burlywood\">#deb887</color>\r\n    <!-- 实木色 -->\r\n    <color name=\"plum\">#dda0dd</color>\r\n    <!-- 洋李色 -->\r\n    <color name=\"gainsboro\">#dcdcdc</color>\r\n    <!-- 淡灰色 -->\r\n    <color name=\"crimson\">#dc143c</color>\r\n    <!-- 暗深红色 -->\r\n    <color name=\"palevioletred\">#db7093</color>\r\n    <!-- 苍紫罗兰色 -->\r\n    <color name=\"goldenrod\">#daa520</color>\r\n    <!-- 金麒麟色 -->\r\n    <color name=\"orchid\">#da70d6</color>\r\n    <!-- 淡紫色 -->\r\n    <color name=\"thistle\">#d8bfd8</color>\r\n    <!-- 蓟色 -->\r\n    <color name=\"lightgray\">#d3d3d3</color>\r\n\r\n    <!-- 亮灰色 -->\r\n    <color name=\"tan\">#d2b48c</color>\r\n    <!-- 茶色 -->\r\n    <color name=\"chocolate\">#d2691e</color>\r\n    <!-- 巧可力色 -->\r\n    <color name=\"peru\">#cd853f</color>\r\n    <!-- 秘鲁色 -->\r\n    <color name=\"indianred\">#cd5c5c</color>\r\n    <!-- 印第安红 -->\r\n    <color name=\"mediumvioletred\">#c71585</color>\r\n    <!-- 中紫罗兰色 -->\r\n    <color name=\"silver\">#c0c0c0</color>\r\n    <!-- 银色 -->\r\n    <color name=\"darkkhaki\">#bdb76b</color>\r\n    <!-- 暗黄褐色 -->\r\n    <color name=\"rosybrown\">#bc8f8f</color>\r\n    <!-- 褐玫瑰红 -->\r\n    <color name=\"mediumorchid\">#ba55d3</color>\r\n    <!-- 中粉紫色 -->\r\n    <color name=\"darkgoldenrod\">#b8860b</color>\r\n    <!-- 暗金黄色 -->\r\n    <color name=\"firebrick\">#b22222</color>\r\n    <!-- 火砖色 -->\r\n    <color name=\"powderblue\">#b0e0e6</color>\r\n    <!-- 粉蓝色 -->\r\n    <color name=\"lightsteelblue\">#b0c4de</color>\r\n    <!-- 亮钢兰色 -->\r\n    <color name=\"paleturquoise\">#afeeee</color>\r\n    <!-- 苍宝石绿 -->\r\n    <color name=\"greenyellow\">#adff2f</color>\r\n    <!-- 黄绿色 -->\r\n    <color name=\"lightblue\">#add8e6</color>\r\n    <!-- 亮蓝色 -->\r\n    <color name=\"darkgray\">#a9a9a9</color>\r\n    <!-- 暗灰色 -->\r\n    <color name=\"darkgrey\">#a9a9a9</color>\r\n    <!-- 暗灰色 -->\r\n    <color name=\"brown\">#a52a2a</color>\r\n    <!-- 褐色 -->\r\n    <color name=\"sienna\">#a0522d</color>\r\n    <!-- 赭色 -->\r\n    <color name=\"darkorchid\">#9932cc</color>\r\n    <!-- 暗紫色 -->\r\n    <color name=\"palegreen\">#98fb98</color>\r\n    <!-- 苍绿色 -->\r\n    <color name=\"darkviolet\">#9400d3</color>\r\n    <!-- 暗紫罗兰色 -->\r\n    <color name=\"mediumpurple\">#9370db</color>\r\n    <!-- 中紫色 -->\r\n    <color name=\"lightgreen\">#90ee90</color>\r\n    <!-- 亮绿色 -->\r\n    <color name=\"darkseagreen\">#8fbc8f</color>\r\n    <!-- 暗海兰色 -->\r\n    <color name=\"saddlebrown\">#8b4513</color>\r\n    <!-- 重褐色 -->\r\n    <color name=\"darkmagenta\">#8b008b</color>\r\n    <!-- 暗洋红 -->\r\n    <color name=\"darkred\">#8b0000</color>\r\n    <!-- 暗红色 -->\r\n    <color name=\"blueviolet\">#8a2be2</color>\r\n    <!-- 紫罗兰蓝色 -->\r\n    <color name=\"lightskyblue\">#87cefa</color>\r\n    <!-- 亮天蓝色 -->\r\n    <color name=\"skyblue\">#87ceeb</color>\r\n    <!-- 天蓝色 -->\r\n    <color name=\"gray\">#808080</color>\r\n    <!-- 灰色 -->\r\n    <color name=\"grey\">#808080</color>\r\n    <!-- 灰色 -->\r\n    <color name=\"olive\">#808000</color>\r\n    <!-- 橄榄色 -->\r\n    <color name=\"purple\">#800080</color>\r\n    <!-- 紫色 -->\r\n    <color name=\"maroon\">#800000</color>\r\n    <!-- 粟色 -->\r\n    <color name=\"aquamarine\">#7fffd4</color>\r\n    <!-- 碧绿色 -->\r\n    <color name=\"chartreuse\">#7fff00</color>\r\n    <!-- 黄绿色 -->\r\n    <color name=\"lawngreen\">#7cfc00</color>\r\n    <!-- 草绿色 -->\r\n    <color name=\"mediumslateblue\">#7b68ee</color>\r\n    <!-- 中暗蓝色 -->\r\n    <color name=\"lightslategray\">#778899</color>\r\n    <!-- 亮蓝灰 -->\r\n    <color name=\"lightslategrey\">#778899</color>\r\n    <!-- 亮蓝灰 -->\r\n    <color name=\"slategray\">#708090</color>\r\n    <!-- 灰石色 -->\r\n    <color name=\"slategrey\">#708090</color>\r\n    <!-- 灰石色 -->\r\n    <color name=\"olivedrab\">#6b8e23</color>\r\n    <!-- 深绿褐色 -->\r\n    <color name=\"slateblue\">#6a5acd</color>\r\n    <!-- 石蓝色 -->\r\n    <color name=\"dimgray\">#696969</color>\r\n    <!-- 暗灰色 -->\r\n    <color name=\"dimgrey\">#696969</color>\r\n    <!-- 暗灰色 -->\r\n    <color name=\"mediumaquamarine\">#66cdaa</color>\r\n    <!-- 中绿色 -->\r\n    <color name=\"cornflowerblue\">#6495ed</color>\r\n    <!-- 菊兰色 -->\r\n    <color name=\"cadetblue\">#5f9ea0</color>\r\n    <!-- 军兰色 -->\r\n    <color name=\"darkolivegreen\">#556b2f</color>\r\n    <!-- 暗橄榄绿 -->\r\n    <color name=\"indigo\">#4b0082</color>\r\n    <!-- 靛青色 -->\r\n    <color name=\"mediumturquoise\">#48d1cc</color>\r\n    <!-- 中绿宝石 -->\r\n    <color name=\"darkslateblue\">#483d8b</color>\r\n    <!-- 暗灰蓝色 -->\r\n    <color name=\"steelblue\">#4682b4</color>\r\n    <!-- 钢兰色 -->\r\n    <color name=\"royalblue\">#4169e1</color>\r\n    <!-- 皇家蓝 -->\r\n    <color name=\"turquoise\">#40e0d0</color>\r\n    <!-- 青绿色 -->\r\n    <color name=\"mediumseagreen\">#3cb371</color>\r\n    <!-- 中海蓝 -->\r\n    <color name=\"limegreen\">#32cd32</color>\r\n    <!-- 橙绿色 -->\r\n    <color name=\"darkslategray\">#2f4f4f</color>\r\n    <!-- 暗瓦灰色 -->\r\n    <color name=\"darkslategrey\">#2f4f4f</color>\r\n    <!-- 暗瓦灰色 -->\r\n    <color name=\"seagreen\">#2e8b57</color>\r\n    <!-- 海绿色 -->\r\n    <color name=\"forestgreen\">#228b22</color>\r\n    <!-- 森林绿 -->\r\n    <color name=\"lightseagreen\">#20b2aa</color>\r\n    <!-- 亮海蓝色 -->\r\n    <color name=\"dodgerblue\">#1e90ff</color>\r\n    <!-- 闪兰色 -->\r\n    <color name=\"midnightblue\">#191970</color>\r\n    <!-- 中灰兰色 -->\r\n    <color name=\"aqua\">#00ffff</color>\r\n    <!-- 浅绿色 -->\r\n    <color name=\"cyan\">#00ffff</color>\r\n    <!-- 青色 -->\r\n    <color name=\"springgreen\">#00ff7f</color>\r\n    <!-- 春绿色 -->\r\n    <color name=\"lime\">#00ff00</color>\r\n    <!-- 酸橙色 -->\r\n    <color name=\"mediumspringgreen\">#00fa9a</color>\r\n    <!-- 中春绿色 -->\r\n    <color name=\"darkturquoise\">#00ced1</color>\r\n    <!-- 暗宝石绿 -->\r\n    <color name=\"deepskyblue\">#00bfff</color>\r\n    <!-- 深天蓝色 -->\r\n    <color name=\"darkcyan\">#008b8b</color>\r\n    <!-- 暗青色 -->\r\n    <color name=\"teal\">#008080</color>\r\n    <!-- 水鸭色 -->\r\n    <color name=\"green\">#008000</color>\r\n    <!-- 绿色 -->\r\n    <color name=\"darkgreen\">#006400</color>\r\n    <!-- 暗绿色 -->\r\n    <color name=\"blue\">#0000ff</color>\r\n    <!-- 蓝色 -->\r\n    <color name=\"mediumblue\">#0000cd</color>\r\n    <!-- 中兰色 -->\r\n    <color name=\"darkblue\">#00008b</color>\r\n    <!-- 暗蓝色 -->\r\n    <color name=\"navy\">#000080</color>\r\n    <!-- 海军色 -->\r\n\r\n\r\n\r\n    <color name=\"colorPrimary\">#eb4f38</color>\r\n    <color name=\"colorPrimaryDark\">#009688</color>\r\n\r\n    <color name=\"bg_color\">#f1f1f1</color>\r\n    <color name=\"black\">#000</color>\r\n    <color name=\"transparent\">#0000</color>\r\n    \r\n    <color name=\"detail_bgColor\">#f5f5f5</color>\r\n    \r\n    <color name=\"defaultTextColor\">#666</color>\r\n    \r\n    <!-- start zxing -->\r\n    <color name=\"viewfinder_frame\">#2477ab</color>\r\n    <color name=\"viewfinder_mask\">#60000000</color>\r\n    <color name=\"possible_result_points\">#c0ffff00</color>\r\n    <color name=\"result_view\">#b0000000</color>\r\n    <color name=\"backColor\">#2000</color>\r\n    <color name=\"limit_buy_border_bg\">#ffd4bc77</color>\r\n    <color name=\"search_toolbar_bg\">#ff484B50</color>\r\n    <color name=\"toast_color\">#ff2E76B9</color>\r\n    <color name=\"login_button\">#ff775025</color>\r\n\r\n\r\n\r\n    <color name=\"app_green\">#ff45c01a</color>\r\n    <color name=\"app_green_alpha\">#7f45c01a</color>\r\n\r\n\r\n    <item type=\"color\" name=\"green_btn_color_normal\">@color/app_green</item>\r\n\r\n    <item type=\"color\" name=\"green_btn_color_disable\">@color/app_green_alpha</item>\r\n\r\n    <color name=\"green_btn_color_pressed\">#ff298409</color>\r\n    <color name=\"red_btn_color_normal\">#ffff5454</color>\r\n    <color name=\"red_btn_color_pressed\">#ffd24242</color>\r\n    <color name=\"red_btn_color_disable\">#7fff5454</color>\r\n    <color name=\"grey_btn_color_normal\">#fff1f1f1</color>\r\n    <color name=\"grey_btn_color_pressed\">#ffd8d8d8</color>\r\n    <color name=\"grey_btn_color_disable\">#7fd8d8d8</color>\r\n    <color name=\"grey_btn_stroke_color_normal\">#ffbebebe</color>\r\n    <color name=\"grey_btn_stroke_color_pressed\">#ff9e9e9e</color>\r\n    <color name=\"grey_btn_stroke_color_disable\">#7f9e9e9e</color>\r\n    <color name=\"black_btn_color_normal\">#00000000</color>\r\n    <color name=\"black_btn_color_pressed\">#00000000</color>\r\n    <color name=\"black_btn_color_disable\">#00000000</color>\r\n    <color name=\"black_btn_stroke_color_normal\">#ffcfcfcf</color>\r\n    <color name=\"black_btn_stroke_color_pressed\">#ff353535</color>\r\n    <color name=\"black_btn_stroke_color_disable\">#7fcfcfcf</color>\r\n    <color name=\"normal_text_color\">#ff353535</color>\r\n    <color name=\"normal_text_color_disable\">#7f353535</color>\r\n    <color name=\"white_color_disable\">#7fffffff</color>\r\n\r\n</resources>"
  },
  {
    "path": "app/src/main/res/values/dimens.xml",
    "content": "<resources>\n    <!-- Default screen margins, per the Android Design guidelines. -->\n    <dimen name=\"activity_horizontal_margin\">16dp</dimen>\n    <dimen name=\"activity_vertical_margin\">16dp</dimen>\n\n    <dimen name=\"buttonCornerSize\">2.0dip</dimen>\n    <dimen name=\"dialog_round_radius\">4.0dip</dimen>\n    <dimen name=\"smallButtonHeight\">32.0dip</dimen>\n    <dimen name=\"smallButtonWidth\">48.0dip</dimen>\n    <dimen name=\"normalButtonHeight\">48.0dip</dimen>\n    <dimen name=\"normalButtonWidth\">80.0dip</dimen>\n\n    <dimen name=\"basicPaddingSize\">4.0dip</dimen>\n    <dimen name=\"inputEditTextMinHeight\">32.0dip</dimen>\n    <dimen name=\"searchViewMinHeight\">45dip</dimen>\n    <dimen name=\"smallPadding\">8.0dip</dimen>\n    <dimen name=\"largePadding\">16.0dip</dimen>\n    <dimen name=\"largerPadding\">24.0dip</dimen>\n    <dimen name=\"largestPadding\">32.0dip</dimen>\n    <dimen name=\"smallerPadding\">3.0dip</dimen>\n    <dimen name=\"littlePadding\">6.0dip</dimen>\n    <dimen name=\"middlePadding\">10.0dip</dimen>\n    <dimen name=\"normalPadding\">12.0dip</dimen>\n    <dimen name=\"footerPadding\">11.0dip</dimen>\n    <dimen name=\"noPadding\">0.0dip</dimen>\n\n    <dimen name=\"bigButtonTextSize\">18.0dip</dimen>\n    <dimen name=\"normalButtonTextSize\">16.0dip</dimen>\n    <dimen name=\"smallButtonTextSize\">14.0dip</dimen>\n\n\n\n    <dimen name=\"ware_grid_img_width\">180dp</dimen>\n    <dimen name=\"ware_grid_img_height\">180dp</dimen>\n    <dimen name=\"ware_img_height\">150dp</dimen>\n    <dimen name=\"ware_img_width\">150dp</dimen>\n    <dimen name=\"category_layout_width\">120dp</dimen>\n\n\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/ids.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <item name=\"textview\" type=\"id\"/>\n    <item name=\"imgview\" type=\"id\"/>\n    <item name=\"webView\" type=\"id\"/>\n    <item name=\"button\" type=\"id\"/>\n    <item name=\"gridview\" type=\"id\"/>\n    <item name=\"toolbar\" type=\"id\"/>\n\n\n</resources>"
  },
  {
    "path": "app/src/main/res/values/strings.xml",
    "content": "<resources>\n    <string name=\"app_name\">CNiao5Shop</string>\n\n    <string name=\"hello_world\">Hello world!</string>\n    <string name=\"action_settings\">Settings</string>\n\n    <string name=\"home\">主页</string>\n    <string name=\"hot\">热卖</string>\n    <string name=\"catagory\">分类</string>\n    <string name=\"cart\">购物车</string>\n    <string name=\"mine\">我的</string>\n    <string name=\"title_activity_ware_detail\">WareDetailActivity</string>\n    <string name=\"share\">分享</string>\n\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat\">\n        <!-- Customize your theme here. -->\n\n        <item name=\"colorPrimary\">@color/colorPrimary</item>\n        <item name=\"colorPrimaryDark\">@color/colorPrimary</item>\n        <item name=\"android:textColorPrimary\">@color/white</item>\n        <!-- 窗口的背景颜色 -->\n        <item name=\"android:windowBackground\">@android:color/white</item>\n\n        <item name=\"android:windowActionBar\">false</item>\n        <item name=\"android:windowNoTitle\">true</item>\n\n        <item name=\"windowActionBar\">false</item>\n        <item name=\"windowNoTitle\">true</item>\n\n    </style>\n\n    <style name=\"search_view\">\n        <item name=\"android:textSize\">18sp</item>\n        <item name=\"android:textColor\">@color/white</item>\n        <item name=\"android:textColorHint\">@color/white</item>\n\n        <item name=\"android:background\">@drawable/selector_search_view</item>\n        <item name=\"android:paddingTop\">6dp</item>\n        <item name=\"android:paddingBottom\">6dp</item>\n        <item name=\"android:paddingLeft\">4dp</item>\n\n        <item name=\"android:singleLine\">true</item>\n    </style>\n\n\n    <style name=\"line\">\n        <item name=\"android:background\">@color/bg_color</item>\n    </style>\n    <style name=\"line_vertical\" parent=\"line\">\n        <item name=\"android:layout_width\">match_parent</item>\n        <item name=\"android:layout_height\">1dp</item>\n\n\n\n    </style>\n\n    <style name=\"line_horizontal\" parent=\"line\">\n        <item name=\"android:layout_width\">1dp</item>\n        <item name=\"android:layout_height\">fill_parent</item>\n\n        <item name=\"android:layout_gravity\">center_horizontal</item>\n\n    </style>\n\n\n\n    <style name=\"bigButton\">\n        <item name=\"android:textSize\">@dimen/bigButtonTextSize</item>\n        <item name=\"android:textColor\">@color/white_color_selector</item>\n        <item name=\"android:gravity\">center</item>\n        <item name=\"android:paddingLeft\">@dimen/largePadding</item>\n        <item name=\"android:paddingRight\">@dimen/largePadding</item>\n        <item name=\"android:layout_width\">fill_parent</item>\n        <item name=\"android:layout_height\">wrap_content</item>\n        <item name=\"android:minHeight\">@dimen/normalButtonHeight</item>\n    </style>\n\n\n\n    <style name=\"smallButton\">\n        <item name=\"android:textSize\">@dimen/smallButtonTextSize</item>\n        <item name=\"android:textColor\">@color/white_color_selector</item>\n        <item name=\"android:gravity\">center</item>\n        <item name=\"android:paddingLeft\">@dimen/smallPadding</item>\n        <item name=\"android:paddingRight\">@dimen/smallPadding</item>\n        <item name=\"android:layout_width\">wrap_content</item>\n        <item name=\"android:layout_height\">wrap_content</item>\n        <item name=\"android:minWidth\">@dimen/smallButtonWidth</item>\n        <item name=\"android:minHeight\">@dimen/smallButtonHeight</item>\n    </style>\n\n\n    <style name=\"smallGreenButton\" parent=\"@style/smallButton\">\n        <item name=\"android:background\">@drawable/bg_btn_style_green</item>\n    </style>\n\n    <style name=\"smallGreyButton\" parent=\"@style/smallButton\">\n        <item name=\"android:textColor\">@color/grey_btn_text_color</item>\n        <item name=\"android:background\">@drawable/bg_btn_style_grey</item>\n    </style>\n\n    <style name=\"smallRedButton\" parent=\"@style/smallButton\">\n        <item name=\"android:background\">@drawable/bg_btn_style_red</item>\n    </style>\n\n\n    <style name=\"bigGreenButton\" parent=\"@style/bigButton\">\n        <item name=\"android:background\">@drawable/bg_btn_style_green</item>\n    </style>\n\n\n    <style name=\"bigRedButton\" parent=\"@style/bigButton\">\n        <item name=\"android:background\">@drawable/bg_btn_style_red</item>\n    </style>\n\n    <style name=\"bigGreyButton\" parent=\"@style/bigButton\">\n        <item name=\"android:textColor\">@color/grey_btn_text_color</item>\n        <item name=\"android:background\">@drawable/bg_btn_style_grey</item>\n    </style>\n\n\n    <style name=\"customCheckbox\" parent=\"@android:style/Widget.CompoundButton.CheckBox\">\n        <item name=\"android:button\">@drawable/selector_checkbox</item>\n    </style>\n\n\n\n    <style name=\"customTabLayout\" parent=\"Widget.Design.TabLayout\">\n        <!--<item name=\"tabMaxWidth\">@dimen/tab_max_width</item>-->\n        <item name=\"tabIndicatorColor\">#eb4f38</item>\n        <item name=\"tabIndicatorHeight\">2dp</item>\n        <item name=\"tabPaddingStart\">12dp</item>\n        <item name=\"tabPaddingEnd\">12dp</item>\n        <item name=\"tabBackground\">@color/white</item>\n        <item name=\"tabTextAppearance\">@style/customTabTextAppearance</item>\n        <item name=\"tabSelectedTextColor\">#eb4f38</item>\n    </style>\n    <style name=\"customTabTextAppearance\" parent=\"TextAppearance.Design.Tab\">\n        <item name=\"android:textSize\">14sp</item>\n        <item name=\"android:textColor\">@color/darkgrey</item>\n        <item name=\"textAllCaps\">true</item>\n    </style>\n\n\n    <style name=\"ware_title\">\n\n        <item name=\"android:textColor\">@color/gray</item>\n        <item name=\"android:textSize\">20sp</item>\n        <item name=\"android:maxLines\">3</item>\n    </style>\n\n    <style name=\"ware_price\">\n        <item name=\"android:textColor\">@color/crimson</item>\n        <item name=\"android:textSize\">22sp</item>\n\n    </style>\n\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-1280x768/dimens.xml",
    "content": "<resources>\n\n\n    <dimen name=\"ware_grid_img_width\">150dp</dimen>\n    <dimen name=\"ware_grid_img_height\">150dp</dimen>\n\n    <dimen name=\"category_layout_width\">200dp</dimen>\n\n\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-w820dp/dimens.xml",
    "content": "<resources>\n    <!-- Example customization of dimensions originally defined in res/values/dimens.xml\n         (such as screen margins) for screens with more than 820dp of available width. This\n         would include 7\" and 10\" devices in landscape (~960dp and ~1280dp respectively). -->\n    <dimen name=\"activity_horizontal_margin\">64dp</dimen>\n</resources>\n"
  },
  {
    "path": "build/intermediates/dex-cache/cache.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<items version=\"2\" >\n\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-QZone-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"606a553246f241278b45e19d5029c915ae49c316\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-QZone-2.6.4-d1d52f416b8349f3cd93bfc509113cac6e7c98c1.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/de.hdodenhof/circleimageview/2.0.0/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"031e8b3ab2df4ab43b1017f84417d7e10dfbb8d2\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-535743ca1f68f2a57d69655b2a7cb97a530eb154.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.android.support/cardview-v7/23.0.1/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"39ae02ce40c3ac828abbf780ce0ff5d7a28b7d6a\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-ebf1b696f725c5b05614566b031301f6bfae68a9.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.android.support/design/23.0.1/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"e5c61a3169221a89654ffcaaed47bba51cf071ad\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-5c24d0e36d10e91ae7f97f5c20390a92fde2f5c3.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.6.0/98476622f10715998eacf9240d6b479f12c66143/okio-1.6.0.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"98476622f10715998eacf9240d6b479f12c66143\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/okio-1.6.0-60b2d6de0bc99b3984e000f1a80891fdeab3180a.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/.gradle/caches/modules-2/files-2.1/com.squareup.picasso/picasso/2.5.2/7446d06ec8d4f7ffcc53f1da37c95f200dcb9387/picasso-2.5.2.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"7446d06ec8d4f7ffcc53f1da37c95f200dcb9387\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/picasso-2.5.2-1a2c4c018bef011021e4cedfc998a7d38022e830.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.0.1/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"4356e230a981d1bbf047d848b91bc0d9b7c5bacc\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-c989dcbf66c8f6acbbc86e113a0e0321b01ad17c.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.facebook.fresco/fresco/0.6.0/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"27ebd5d2c69a1830b4ff47a1d5d4c6a4aab5e233\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-eee0eebe6eab45f76e02897440aad402fcca3d09.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-TencentWeibo-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"83cf7f24b0717fbe9272342f0b971ed4af13d106\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-TencentWeibo-2.6.4-61a9d4495a4623d378cf1f63c8d6d245b0b5efdc.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"d86429b0f0b3f3cafbeb78dda1b9d89119ccb05d\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-0276b45fdfaca1e8671eb0e40697c9ccaabefeca.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-Wechat-Core-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"a6e8417962070d895b3567c68f104f628462bc35\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-Wechat-Core-2.6.4-acf0e20db9d507b20d951bfcce278809db5006d0.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/.gradle/caches/modules-2/files-2.1/com.nineoldandroids/library/2.4.0/e9b63380f3a242dbdbf103a2355ad7e43bad17cb/library-2.4.0.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"e9b63380f3a242dbdbf103a2355ad7e43bad17cb\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/library-2.4.0-13ec56d7cce00cb047856bb4cb4ec146b7749d9f.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.facebook.fresco/imagepipeline-okhttp/0.6.0/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"543b4bf48e20cc32db51dbd9138ac181586ebe85\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-35c4d5f501d9ad1d0fac2658f1173e399178ca1f.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"7e1b678b40346e22038264228e0cd5a2bb0b9c9a\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-c399e8b9c880d993c3290103adba0e5af615f61e.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-Wechat-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"100546a136041bcbeb9b90790b6361c932545676\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-Wechat-2.6.4-c664b3c1224ff3f28d7fc92b9e98f637c6b80403.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.facebook.fresco/imagepipeline/0.6.0/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"b5eb6c5f132d34f7ece3fbae25feb43e4ea9d6aa\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-9ea00af719138124dbb8283b58c2b085cd4dd881.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-Core-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"7bb32fc69b3520f10333fcc5cdd78a4495761a64\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-Core-2.6.4-78182bcaeee77031a282b614b37abb282e8d92bc.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.github.d-max/spots-dialog/0.4/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"f82b3f786bf4937ed1a1cc9a9a811e154813ba9a\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-def023859074a9cac216e429a8ad37f8a79b1c30.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/soft/dev/android/android-sdk-macosx/extras/android/m2repository/com/android/support/support-annotations/23.0.1/support-annotations-23.0.1.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"1fce89a6428c51467090d7f424e4c9c3dbd55f7e\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/support-annotations-23.0.1-1edba4f9ac9be1c91fbcbac98969a57ed09356a7.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/MobCommons.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"86052ea3c2fcfa2f2d25d71ae34ab20b8c2dca9a\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/MobCommons-7a2f33cf26979bcb211febabde01dff683d85600.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.cjj.materialrefeshlayout/library/1.3.0/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"597d857fe9b090c4582f0855a2c6d6cc45fec544\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-73e19f491527c9e6f345a2eaa06f79b2ac1e30fb.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/.gradle/caches/modules-2/files-2.1/com.parse.bolts/bolts-android/1.1.4/129874135e6081269ace2312092031558865de12/bolts-android-1.1.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"129874135e6081269ace2312092031558865de12\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/bolts-android-1.1.4-7ec25abdd2d9934191149348da4bab091c2bdee8.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-Wechat-Favorite-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"bd820f646c7b0315feb16ec95ae4686fa50ac74f\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-Wechat-Favorite-2.6.4-955819bb4f237c9de60c3de94cc5f4e69db69bad.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.facebook.fresco/fbcore/0.6.0/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"87bffaacf21eb2c6fc61cf01930ff96ae175e798\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-3103830f6bed91cda039172c95b78ce6c56aaab1.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.daimajia.slider/library/1.1.5/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"08962e03b6a954c65d4944e092879b7f5ee1208d\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-d85d323d87a1669e17b3a86e7138b05b0e69395e.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-Wechat-Moments-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"dc2b46a70ccf00592d33c3afde812993d9db4ac9\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-Wechat-Moments-2.6.4-f47be6efd001a3bac97191d13a021d45c8c00c94.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-QQ-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"e8d59be1960d4e1b1f9119cc77966e5f7c9fb7bd\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-QQ-2.6.4-25f0b8a9251698abc9a4a691fa215d7cd0d8ec2c.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.3.1/ecb6e1f8e4b0e84c4b886c2f14a1500caf309757/gson-2.3.1.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"ecb6e1f8e4b0e84c4b886c2f14a1500caf309757\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/gson-2.3.1-e17007216f320be97811a3a5e795e78a76b1a885.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.facebook.fresco/drawee/0.6.0/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"d572f92ecb6ae3b66e807550b07e4a6cca1f737f\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-fe937d33164442390d387a35f7e5960d2b3c4e81.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"c31e21b53ff2f74664e498248d01453a32e32d48\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-393440d9858056775a4dd8b945afd71bf6de951e.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp/okhttp/2.5.0/4de2b4ed3445c37ec1720a7d214712e845a24636/okhttp-2.5.0.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"4de2b4ed3445c37ec1720a7d214712e845a24636\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/okhttp-2.5.0-5ec6bf9f729118d69fd17b023ad833435a98d52a.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.jiechic.library/xUtils/2.6.14/jars/classes.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"fe75606aa9485cd20177894c204291a79a0cc7ab\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/classes-03ebebc860fd4ea0dd0705e478a163cb7a2a825f.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars/libs/internal_impl-23.0.1.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"aa92916125166649d8ad4ba3940c3dd7515596d3\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/internal_impl-23.0.1-48db17522835681e24830b6aa85e93e79a9c3f66.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/MobTools.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"4aae467e0a293d5d5cd0643e51b7b854bcc397c8\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/MobTools-cbb8abcd5037b0e38a600d837486a84240ff2f17.jar\" />\n    </item>\n    <item\n        jar=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/exploded-aar/CNiao5Shop/sharesdk/unspecified/jars/libs/ShareSDK-SinaWeibo-2.6.4.jar\"\n        jumboMode=\"false\"\n        revision=\"23.0.1\"\n        sha1=\"4536d9f7a5fb826609d5a17b30cabb21ead18d1c\">\n        <dex dex=\"/Users/Ivan/AndroidstudioProjects/CNiao5Shop/app/build/intermediates/pre-dexed/debug/ShareSDK-SinaWeibo-2.6.4-08e17fb98f917cda5f0d35c7ef30f2f23d713c6f.jar\" />\n    </item>\n\n</items>\n"
  },
  {
    "path": "build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    repositories {\n        jcenter()\n    }\n    dependencies {\n        classpath 'com.android.tools.build:gradle:1.2.3'\n\n        // NOTE: Do not place your application dependencies here; they belong\n        // in the individual module build.gradle files\n    }\n}\n\nallprojects {\n    repositories {\n        jcenter()\n        maven{ url 'http://maven.oschina.net/content/groups/public/'}\n    }\n}\n\n"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "content": "#Fri Sep 25 13:27:55 CST 2015\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-2.4-all.zip\n"
  },
  {
    "path": "gradle.properties",
    "content": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\n# Default value: -Xmx10248m -XX:MaxPermSize=256m\n# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8\n\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true"
  },
  {
    "path": "gradlew",
    "content": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn ( ) {\n    echo \"$*\"\n}\n\ndie ( ) {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\nesac\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched.\nif $cygwin ; then\n    [ -n \"$JAVA_HOME\" ] && JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\nfi\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >&-\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >&-\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules\nfunction splitJvmOpts() {\n    JVM_OPTS=(\"$@\")\n}\neval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\nJVM_OPTS[${#JVM_OPTS[*]}]=\"-Dorg.gradle.appname=$APP_BASE_NAME\"\n\nexec \"$JAVACMD\" \"${JVM_OPTS[@]}\" -classpath \"$CLASSPATH\" org.gradle.wrapper.GradleWrapperMain \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@rem  Gradle startup script for Windows\r\n@rem\r\n@rem ##########################################################################\r\n\r\n@rem Set local scope for the variables with windows NT shell\r\nif \"%OS%\"==\"Windows_NT\" setlocal\r\n\r\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r\nset DEFAULT_JVM_OPTS=\r\n\r\nset DIRNAME=%~dp0\r\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\r\nset APP_BASE_NAME=%~n0\r\nset APP_HOME=%DIRNAME%\r\n\r\n@rem Find java.exe\r\nif defined JAVA_HOME goto findJavaFromJavaHome\r\n\r\nset JAVA_EXE=java.exe\r\n%JAVA_EXE% -version >NUL 2>&1\r\nif \"%ERRORLEVEL%\" == \"0\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:findJavaFromJavaHome\r\nset JAVA_HOME=%JAVA_HOME:\"=%\r\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\r\n\r\nif exist \"%JAVA_EXE%\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:init\r\n@rem Get command-line arguments, handling Windowz variants\r\n\r\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\r\nif \"%@eval[2+2]\" == \"4\" goto 4NT_args\r\n\r\n:win9xME_args\r\n@rem Slurp the command line arguments.\r\nset CMD_LINE_ARGS=\r\nset _SKIP=2\r\n\r\n:win9xME_args_slurp\r\nif \"x%~1\" == \"x\" goto execute\r\n\r\nset CMD_LINE_ARGS=%*\r\ngoto execute\r\n\r\n:4NT_args\r\n@rem Get arguments from the 4NT Shell from JP Software\r\nset CMD_LINE_ARGS=%$\r\n\r\n:execute\r\n@rem Setup the command line\r\n\r\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\r\n\r\n@rem Execute Gradle\r\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\r\n\r\n:end\r\n@rem End local scope for the variables with windows NT shell\r\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n\r\n:fail\r\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\nrem the _cmd.exe /c_ return code!\r\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\nexit /b 1\r\n\r\n:mainEnd\r\nif \"%OS%\"==\"Windows_NT\" endlocal\r\n\r\n:omega\r\n"
  },
  {
    "path": "local.properties",
    "content": "## This file is automatically generated by Android Studio.\n# Do not modify this file -- YOUR CHANGES WILL BE ERASED!\n#\n# This file must *NOT* be checked into Version Control Systems,\n# as it contains information specific to your local configuration.\n#\n# Location of the SDK. This is only used by Gradle.\n# For customization when using a Version Control System, please read the\n# header note.\n#Mon Nov 09 21:52:52 CST 2015\nsdk.dir=/Users/Ivan/soft/dev/android/android-sdk-macosx\n"
  },
  {
    "path": "settings.gradle",
    "content": "include ':app', ':sharesdk'\n"
  },
  {
    "path": "sharesdk/.gitignore",
    "content": "/build\n"
  },
  {
    "path": "sharesdk/build.gradle",
    "content": "apply plugin: 'com.android.library'\n\nandroid {\n    compileSdkVersion 23\n    buildToolsVersion \"23.0.1\"\n\n    defaultConfig {\n        minSdkVersion 15\n        targetSdkVersion 23\n        versionCode 1\n        versionName \"1.0\"\n    }\n    buildTypes {\n        release {\n            minifyEnabled false\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\n        }\n    }\n}\n\ndependencies {\n    compile fileTree(dir: 'libs', include: ['*.jar'])\n\n}\n"
  },
  {
    "path": "sharesdk/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /Users/Ivan/soft/dev/android/android-sdk-macosx/tools/proguard/proguard-android.txt\n# You can edit the include path and order by changing the proguardFiles\n# directive in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# Add any project specific keep options here:\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n"
  },
  {
    "path": "sharesdk/sharesdk.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module external.linked.project.id=\":sharesdk\" external.linked.project.path=\"$MODULE_DIR$\" external.root.project.path=\"$MODULE_DIR$/..\" external.system.id=\"GRADLE\" external.system.module.group=\"CNiao5Shop\" external.system.module.version=\"unspecified\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"android-gradle\" name=\"Android-Gradle\">\n      <configuration>\n        <option name=\"GRADLE_PROJECT_PATH\" value=\":sharesdk\" />\n      </configuration>\n    </facet>\n    <facet type=\"android\" name=\"Android\">\n      <configuration>\n        <option name=\"SELECTED_BUILD_VARIANT\" value=\"debug\" />\n        <option name=\"SELECTED_TEST_ARTIFACT\" value=\"_android_test_\" />\n        <option name=\"ASSEMBLE_TASK_NAME\" value=\"assembleDebug\" />\n        <option name=\"COMPILE_JAVA_TASK_NAME\" value=\"compileDebugSources\" />\n        <option name=\"ASSEMBLE_TEST_TASK_NAME\" value=\"assembleDebugAndroidTest\" />\n        <option name=\"COMPILE_JAVA_TEST_TASK_NAME\" value=\"compileDebugAndroidTestSources\" />\n        <afterSyncTasks>\n          <task>generateDebugAndroidTestSources</task>\n          <task>generateDebugSources</task>\n        </afterSyncTasks>\n        <option name=\"ALLOW_USER_CONFIGURATION\" value=\"false\" />\n        <option name=\"MANIFEST_FILE_RELATIVE_PATH\" value=\"/src/main/AndroidManifest.xml\" />\n        <option name=\"RES_FOLDER_RELATIVE_PATH\" value=\"/src/main/res\" />\n        <option name=\"RES_FOLDERS_RELATIVE_PATH\" value=\"file://$MODULE_DIR$/src/main/res\" />\n        <option name=\"ASSETS_FOLDER_RELATIVE_PATH\" value=\"/src/main/assets\" />\n        <option name=\"LIBRARY_PROJECT\" value=\"true\" />\n      </configuration>\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_7\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/build/intermediates/classes/debug\" />\n    <output-test url=\"file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug\" />\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/r/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/aidl/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/buildConfig/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/rs/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/rs/debug\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/generated/debug\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/r/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/res\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/resources\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/assets\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/aidl\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/java\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/jni\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/rs\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/assets\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/bundles\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/classes\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dependency-cache\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dex\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dex-cache\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/incremental\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/jacoco\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/javaResources\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/libs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/lint\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/manifests\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/ndk\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/pre-dexed\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/proguard\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/res\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/rs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/symbols\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/outputs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/tmp\" />\n    </content>\n    <orderEntry type=\"jdk\" jdkName=\"Android API 23 Platform\" jdkType=\"Android SDK\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-QQ-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"MobCommons\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"MobTools\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-Wechat-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-Wechat-Favorite-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-QZone-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-Wechat-Moments-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-Core-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-TencentWeibo-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-SinaWeibo-2.6.4\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"ShareSDK-Wechat-Core-2.6.4\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "sharesdk/src/androidTest/java/cniao5/com/sharesdk/ApplicationTest.java",
    "content": "package cniao5.com.sharesdk;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <a href=\"http://d.android.com/tools/testing/testing_android.html\">Testing Fundamentals</a>\n */\npublic class ApplicationTest extends ApplicationTestCase<Application> {\n    public ApplicationTest() {\n        super(Application.class);\n    }\n}"
  },
  {
    "path": "sharesdk/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"cn.sharesdk.onekeyshare\"\n    android:versionCode=\"1\"\n    android:versionName=\"1.0\" >\n\n    <supports-screens\n        android:anyDensity=\"true\"\n        android:largeScreens=\"true\"\n        android:normalScreens=\"true\"\n        android:resizeable=\"true\"\n        android:smallScreens=\"true\" />\n\n    <uses-sdk\n        android:minSdkVersion=\"8\"\n        android:targetSdkVersion=\"17\" />\n\n    <application\n        android:allowBackup=\"true\"\n         >\n    </application>\n\n</manifest>"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/CustomerLogo.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare;\n\nimport android.graphics.Bitmap;\nimport android.view.View.OnClickListener;\n\n/** 九宫格自定义的图标对象 */\npublic class CustomerLogo {\n\tpublic String label;\n\tpublic Bitmap enableLogo;\n\tpublic Bitmap disableLogo;\n\tpublic OnClickListener listener;\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/EditPageFakeActivity.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare;\n\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\n\nimport android.graphics.Bitmap;\nimport android.os.AsyncTask;\nimport android.text.TextUtils;\nimport android.view.View;\nimport android.widget.Toast;\nimport cn.sharesdk.framework.Platform;\n\nimport com.mob.tools.FakeActivity;\nimport com.mob.tools.utils.BitmapHelper;\n\npublic class EditPageFakeActivity extends FakeActivity {\n\n\tprotected List<Platform> platforms;\n\n\tprotected HashMap<String, Object> shareParamMap;\n\t// 设置显示模式为Dialog模式\n\tprotected boolean dialogMode;\n\tprotected View backgroundView;\n\tprotected ArrayList<String> toFriendList;\n\tprivate ArrayList<ImageInfo> shareImageList;\n\n\tpublic static class ImageInfo {\n\t\tpublic String paramName;\n\t\tpublic String srcValue;\n\t\tpublic Bitmap bitmap;\n\t}\n\n\tprotected static interface ImageListResultsCallback {\n\t\tvoid onFinish(ArrayList<ImageInfo> results);\n\t}\n\n\tpublic void setShareData(HashMap<String, Object> data) {\n\t\tshareParamMap = data;\n\t}\n\n\t/** 设置显示模式为Dialog模式 */\n\tpublic void setDialogMode() {\n\t\tdialogMode = true;\n\t}\n\n\t/**\n\t * @param bgView\n\t */\n\tpublic void setBackgroundView(View bgView) {\n\t\tthis.backgroundView = bgView;\n\t}\n\n\tpublic void setPlatforms(List<Platform> supportEditPagePlatforms) {\n\t\tthis.platforms = supportEditPagePlatforms;\n\t}\n\n\tpublic String getLogoName(String platform) {\n\t\tif (platform == null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tint resId = getStringRes(getContext(), \"ssdk_\" + platform);\n\t\treturn getContext().getString(resId);\n\t}\n\n\tprotected boolean isShowAtUserLayout(String platformName) {\n\t\treturn \"SinaWeibo\".equals(platformName) || \"TencentWeibo\".equals(platformName)\n\t\t\t\t|| \"Facebook\".equals(platformName) || \"Twitter\".equals(platformName)\n\t\t\t\t|| \"FacebookMessenger\".equals(platformName);\n\t}\n\n\tprotected String getAtUserButtonText(String platform) {\n\t\treturn \"FacebookMessenger\".equals(platform) ? \"To\" : \"@\";\n\t}\n\n\tprotected String getJoinSelectedUser(HashMap<String, Object> data) {\n\t\tif (data != null && data.containsKey(\"selected\")) {\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tArrayList<String> selected = (ArrayList<String>) data.get(\"selected\");\n\t\t\tString platform = ((Platform)data.get(\"platform\")).getName();\n\t\t\tif(\"FacebookMessenger\".equals(platform)) {\n\t\t\t\ttoFriendList = selected;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tStringBuilder sb = new StringBuilder();\n\t\t\tfor (String sel : selected) {\n\t\t\t\tsb.append('@').append(sel).append(' ');\n\t\t\t}\n\t\t\treturn sb.toString();\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic boolean haveImage(){\n\t\tString imageUrl = (String) shareParamMap.get(\"imageUrl\");\n\t\tString imagePath = (String) shareParamMap.get(\"imagePath\");\n\t\tBitmap viewToShare = (Bitmap) shareParamMap.get(\"viewToShare\");\n\t\tString[] imageArray = (String[]) shareParamMap.get(\"imageArray\");\n\n\t\tif(!TextUtils.isEmpty(imagePath) && new File(imagePath).exists()) {\n\t\t\treturn true;\n\t\t} else if(viewToShare != null && !viewToShare.isRecycled()){\n\t\t\treturn true;\n\t\t} else if (!TextUtils.isEmpty(imageUrl)) {\n\t\t\treturn true;\n\t\t} else if(imageArray != null && imageArray.length > 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprotected boolean initImageList(ImageListResultsCallback callback) {\n\t\tString imageUrl = (String) shareParamMap.get(\"imageUrl\");\n\t\tString imagePath = (String) shareParamMap.get(\"imagePath\");\n\t\tBitmap viewToShare = (Bitmap) shareParamMap.get(\"viewToShare\");\n\t\tString[] imageArray = (String[]) shareParamMap.get(\"imageArray\");\n\n\t\tshareImageList = new ArrayList<ImageInfo>();\n\t\tif(!TextUtils.isEmpty(imagePath) && new File(imagePath).exists()) {\n\t\t\tImageInfo imageInfo = new ImageInfo();\n\t\t\timageInfo.paramName = \"imagePath\";\n\t\t\timageInfo.srcValue = imagePath;\n\t\t\tshareImageList.add(imageInfo);\n\t\t\tshareParamMap.remove(\"imagePath\");\n\t\t} else if(viewToShare != null && !viewToShare.isRecycled()){\n\t\t\tImageInfo imageInfo = new ImageInfo();\n\t\t\timageInfo.paramName = \"viewToShare\";\n\t\t\timageInfo.bitmap = viewToShare;\n\t\t\tshareImageList.add(imageInfo);\n\t\t\tshareParamMap.remove(\"viewToShare\");\n\t\t} else if (!TextUtils.isEmpty(imageUrl)) {\n\t\t\tImageInfo imageInfo = new ImageInfo();\n\t\t\timageInfo.paramName = \"imageUrl\";\n\t\t\timageInfo.srcValue = imageUrl;\n\t\t\tshareImageList.add(imageInfo);\n\t\t\tshareParamMap.remove(\"imageUrl\");\n\t\t} else if(imageArray != null && imageArray.length > 0) {\n\t\t\tfor(String imageUri : imageArray) {\n\t\t\t\tif(TextUtils.isEmpty(imageUri))\n\t\t\t\t\tcontinue;\n\t\t\t\tImageInfo imageInfo = new ImageInfo();\n\t\t\t\timageInfo.paramName = \"imageArray\";\n\t\t\t\timageInfo.srcValue = imageUri;\n\t\t\t\tshareImageList.add(imageInfo);\n\t\t\t}\n\t\t\tshareParamMap.remove(\"imageArray\");\n\t\t}\n\n\t\tif(shareImageList.size() == 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tnew AsyncTask<Object, Void, ImageListResultsCallback>() {\n\t\t\tprotected ImageListResultsCallback doInBackground(Object... objects) {\n\t\t\t\tfor(ImageInfo imageInfo : shareImageList) {\n\t\t\t\t\tif(imageInfo.bitmap == null) {\n\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\tBitmap bitmap;\n\t\t\t\t\t\t\tString uri = imageInfo.srcValue;\n\t\t\t\t\t\t\tif(uri.startsWith(\"http://\") || uri.startsWith(\"https://\")) {\n\t\t\t\t\t\t\t\turi = BitmapHelper.downloadBitmap(activity, uri);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbitmap = BitmapHelper.getBitmap(uri);\n\t\t\t\t\t\t\tif(bitmap == null)\n\t\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t\timageInfo.bitmap = bitmap;\n\t\t\t\t\t\t} catch (Throwable e) {\n\t\t\t\t\t\t\te.printStackTrace();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn (ImageListResultsCallback) objects[0];\n\t\t\t}\n\n\t\t\tprotected void onPostExecute(ImageListResultsCallback callback1) {\n\t\t\t\tcallback1.onFinish(shareImageList);\n\t\t\t}\n\t\t}.execute(callback);\n\t\treturn true;\n\t}\n\n\tprotected void removeImage(ImageInfo imageInfo) {\n\t\tif(shareImageList == null || imageInfo == null)\n\t\t\treturn;\n\t\tshareImageList.remove(imageInfo);\n\t}\n\n\tprotected void setResultAndFinish() {\n\t\tArrayList<String> imageArray = new ArrayList<String>();\n\t\tif(shareImageList != null) {\n\t\t\tfor(ImageInfo imageInfo : shareImageList) {\n\t\t\t\tif(\"imagePath\".equals(imageInfo.paramName) || \"imageUrl\".equals(imageInfo.paramName)) {\n\t\t\t\t\tshareParamMap.put(imageInfo.paramName, imageInfo.srcValue);\n\t\t\t\t} else if(\"viewToShare\".equals(imageInfo.paramName)) {\n\t\t\t\t\tshareParamMap.put(imageInfo.paramName, imageInfo.bitmap);\n\t\t\t\t} else if(\"imageArray\".equals(imageInfo.paramName)) {\n\t\t\t\t\timageArray.add(imageInfo.srcValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tshareImageList.clear();\n\t\t\tif(imageArray.size() == 0) {\n\t\t\t\tshareParamMap.put(\"imageArray\", null);\n\t\t\t} else {\n\t\t\t\tshareParamMap.put(\"imageArray\", imageArray.toArray(new String[imageArray.size()]));\n\t\t\t}\n\t\t}\n\n\t\tHashMap<Platform, HashMap<String, Object>> editRes = new HashMap<Platform, HashMap<String,Object>>();\n\n\t\tfor(Platform platform : platforms) {\n\n\t\t\tif(\"FacebookMessenger\".equals(platform.getName())) {\n\t\t\t\tHashMap<String, Object> param = new HashMap<String, Object>(shareParamMap);\n\t\t\t\tif(toFriendList != null && toFriendList.size() > 0) {\n\t\t\t\t\tparam.put(\"address\", toFriendList.get(toFriendList.size() - 1));\n\t\t\t\t}\n\t\t\t\tif(param.get(\"address\") == null) {\n\t\t\t\t\tint resId = getStringRes(activity, \"ssdk_oks_select_a_friend\");\n\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\tToast.makeText(getContext(), activity.getString(resId) + \" - \" + platform.getName(), Toast.LENGTH_SHORT).show();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\teditRes.put(platform, param);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\teditRes.put(platform, shareParamMap);\n\t\t}\n\n\t\tHashMap<String, Object> res = new HashMap<String, Object>();\n\t\tres.put(\"editRes\", editRes);\n\t\tsetResult(res);\n\t\tfinish();\n\t}\n\n\t@Override\n\tpublic boolean onFinish() {\n\t\tshareImageList = null;\n\t\treturn super.onFinish();\n\t}\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/FollowerListFakeActivity.java",
    "content": "package cn.sharesdk.onekeyshare;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\n\nimport com.mob.tools.FakeActivity;\nimport cn.sharesdk.framework.Platform;\n\npublic class FollowerListFakeActivity extends FakeActivity {\n\tprotected Platform platform;\n\n\tpublic void setPlatform(Platform platform) {\n\t\tthis.platform = platform;\n\t}\n\n\tpublic Platform getPlatform() {\n\t\treturn platform;\n\t}\n\n\tpublic boolean isRadioMode(String platformName) {\n\t\treturn \"FacebookMessenger\".equals(platformName);\n\t}\n\n\tpublic void setResultForChecked(ArrayList<String> checked) {\n\t\tHashMap<String, Object> res = new HashMap<String, Object>();\n\t\tres.put(\"selected\", checked);\n\t\tres.put(\"platform\", platform);\n\t\tsetResult(res);\n\t}\n\n\tpublic static class Following {\n\t\tpublic boolean checked;\n\t\tpublic String screenName;\n\t\tpublic String description;\n\t\tpublic String uid;\n\t\tpublic String icon;\n\t\t//@Name 用于微博等提示或关联某个人\n\t\tpublic String atName;\n\t}\n\n\tpublic static class FollowersResult {\n\t\tpublic ArrayList<Following> list;\n\t\tpublic boolean hasNextPage = false;\n\t}\n\n\tpublic static FollowersResult parseFollowers(String platformName, HashMap<String, Object> res, HashMap<String, Boolean> uidMap) {\n\t\tif (res == null || res.size() <= 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tboolean hasNext = false;\n\t\tArrayList<Following> data = new ArrayList<Following>();\n\t\tif (\"SinaWeibo\".equals(platformName)) {\n\t\t\t// users[id, name, description]\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tArrayList<HashMap<String, Object>> users\n\t\t\t\t\t= (ArrayList<HashMap<String,Object>>) res.get(\"users\");\n\t\t\tfor (HashMap<String, Object> user : users) {\n\t\t\t\tString uid = String.valueOf(user.get(\"id\"));\n\t\t\t\tif (!uidMap.containsKey(uid)) {\n\t\t\t\t\tFollowing following = new Following();\n\t\t\t\t\tfollowing.uid = uid;\n\t\t\t\t\tfollowing.screenName = String.valueOf(user.get(\"name\"));\n\t\t\t\t\tfollowing.description = String.valueOf(user.get(\"description\"));\n\t\t\t\t\tfollowing.icon = String.valueOf(user.get(\"profile_image_url\"));\n\t\t\t\t\tfollowing.atName = following.screenName;\n\t\t\t\t\tuidMap.put(following.uid, true);\n\t\t\t\t\tdata.add(following);\n\t\t\t\t}\n\t\t\t}\n\t\t\thasNext = (Integer) res.get(\"total_number\") > uidMap.size();\n\t\t}\n\t\telse if (\"TencentWeibo\".equals(platformName)) {\n\t\t\thasNext = ((Integer)res.get(\"hasnext\") == 0);\n\t\t\t// info[nick, name, tweet[text]]\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tArrayList<HashMap<String, Object>> infos\n\t\t\t\t\t= (ArrayList<HashMap<String,Object>>) res.get(\"info\");\n\t\t\tfor (HashMap<String, Object> info : infos) {\n\t\t\t\tString uid = String.valueOf(info.get(\"name\"));\n\t\t\t\tif (!uidMap.containsKey(uid)) {\n\t\t\t\t\tFollowing following = new Following();\n\t\t\t\t\tfollowing.screenName = String.valueOf(info.get(\"nick\"));\n\t\t\t\t\tfollowing.uid = uid;\n\t\t\t\t\tfollowing.atName = uid;\n\t\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\t\tArrayList<HashMap<String, Object>> tweets = (ArrayList<HashMap<String,Object>>) info.get(\"tweet\");\n\t\t\t\t\tfor (HashMap<String, Object> tweet : tweets) {\n\t\t\t\t\t\tfollowing.description = String.valueOf(tweet.get(\"text\"));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tfollowing.icon = String.valueOf(info.get(\"head\")) + \"/100\";\n\t\t\t\t\tuidMap.put(following.uid, true);\n\t\t\t\t\tdata.add(following);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (\"Facebook\".equals(platformName)) {\n\t\t\t// data[id, name]\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tArrayList<HashMap<String, Object>> datas\n\t\t\t\t\t= (ArrayList<HashMap<String,Object>>) res.get(\"data\");\n\t\t\tfor (HashMap<String, Object> d : datas) {\n\t\t\t\tString uid = String.valueOf(d.get(\"id\"));\n\t\t\t\tif (!uidMap.containsKey(uid)) {\n\t\t\t\t\tFollowing following = new Following();\n\t\t\t\t\tfollowing.uid = uid;\n\t\t\t\t\tfollowing.atName = \"[\"+uid+\"]\";\n\t\t\t\t\tfollowing.screenName = String.valueOf(d.get(\"name\"));\n\t\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\t\tHashMap<String, Object> picture = (HashMap<String, Object>) d.get(\"picture\");\n\t\t\t\t\tif (picture != null) {\n\t\t\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\t\t\tHashMap<String, Object> pData = (HashMap<String, Object>) picture.get(\"data\");\n\t\t\t\t\t\tfollowing.icon = String.valueOf(pData.get(\"url\"));\n\t\t\t\t\t}\n\t\t\t\t\tuidMap.put(following.uid, true);\n\t\t\t\t\tdata.add(following);\n\t\t\t\t}\n\t\t\t}\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tHashMap<String, Object> paging = (HashMap<String, Object>) res.get(\"paging\");\n\t\t\thasNext = paging.containsKey(\"next\");\n\t\t}\n\t\telse if (\"Twitter\".equals(platformName)) {\n\t\t\t// users[screen_name, name, description]\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tArrayList<HashMap<String, Object>> users\n\t\t\t\t\t= (ArrayList<HashMap<String,Object>>) res.get(\"users\");\n\t\t\tfor (HashMap<String, Object> user : users) {\n\t\t\t\tString uid = String.valueOf(user.get(\"screen_name\"));\n\t\t\t\tif (!uidMap.containsKey(uid)) {\n\t\t\t\t\tFollowing following = new Following();\n\t\t\t\t\tfollowing.uid = uid;\n\t\t\t\t\tfollowing.atName = uid;\n\t\t\t\t\tfollowing.screenName = String.valueOf(user.get(\"name\"));\n\t\t\t\t\tfollowing.description = String.valueOf(user.get(\"description\"));\n\t\t\t\t\tfollowing.icon = String.valueOf(user.get(\"profile_image_url\"));\n\t\t\t\t\tuidMap.put(following.uid, true);\n\t\t\t\t\tdata.add(following);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (\"FacebookMessenger\".equals(platformName)) {\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tArrayList<HashMap<String, Object>> users\n\t\t\t\t\t= (ArrayList<HashMap<String,Object>>) res.get(\"users\");\n\t\t\tfor (HashMap<String, Object> user : users) {\n\t\t\t\tString userAddr = String.valueOf(user.get(\"jid\"));\n\t\t\t\tif (!uidMap.containsKey(userAddr)) {\n\t\t\t\t\tFollowing following = new Following();\n\t\t\t\t\tfollowing.uid = userAddr;\n\t\t\t\t\tfollowing.atName = userAddr;\n\t\t\t\t\tfollowing.screenName = String.valueOf(user.get(\"name\"));\n\t\t\t\t\tuidMap.put(following.uid, true);\n\t\t\t\t\tdata.add(following);\n\t\t\t\t}\n\t\t\t}\n\t\t\thasNext = false;\n\t\t}\n\n\t\tFollowersResult ret = new FollowersResult();\n\t\tret.list = data;\n\t\tret.hasNextPage = hasNext;\n\t\treturn ret;\n\t}\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/OnekeyShare.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare;\n\nimport static com.mob.tools.utils.BitmapHelper.captureView;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.Map.Entry;\n\nimport android.app.NotificationManager;\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.os.Handler.Callback;\nimport android.os.Message;\nimport android.text.TextUtils;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.Toast;\nimport cn.sharesdk.framework.CustomPlatform;\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.PlatformActionListener;\nimport cn.sharesdk.framework.ShareSDK;\nimport com.mob.tools.utils.UIHandler;\n\n/**\n * 快捷分享的入口\n * <p>\n * 通过不同的setter设置参数，然后调用{@link #show(Context)}方法启动快捷分享\n */\npublic class OnekeyShare implements PlatformActionListener, Callback {\n\tprivate static final int MSG_TOAST = 1;\n\tprivate static final int MSG_ACTION_CCALLBACK = 2;\n\tprivate static final int MSG_CANCEL_NOTIFY = 3;\n\n\tprivate HashMap<String, Object> shareParamsMap;\n\tprivate ArrayList<CustomerLogo> customers;\n\tprivate boolean silent;\n\tprivate PlatformActionListener callback;\n\tprivate ShareContentCustomizeCallback customizeCallback;\n\tprivate boolean dialogMode = false;\n\tprivate boolean disableSSO;\n\tprivate boolean shareVideo;\n\tprivate HashMap<String, String> hiddenPlatforms;\n\tprivate View bgView;\n\tprivate OnekeyShareTheme theme;\n\n\tprivate Context context;\n\tprivate PlatformListFakeActivity.OnShareButtonClickListener onShareButtonClickListener;\n\n\tpublic OnekeyShare() {\n\t\tshareParamsMap = new HashMap<String, Object>();\n\t\tcustomers = new ArrayList<CustomerLogo>();\n\t\tcallback = this;\n\t\thiddenPlatforms = new HashMap<String, String>();\n\t}\n\n\tpublic void show(Context context) {\n\t\tShareSDK.initSDK(context);\n\t\tthis.context = context;\n\n\t\t// 打开分享菜单的统计\n\t\tShareSDK.logDemoEvent(1, null);\n\n\t\t// 显示方式是由platform和silent两个字段控制的\n\t\t// 如果platform设置了，则无须显示九宫格，否则都会显示；\n\t\t// 如果silent为true，表示不进入编辑页面，否则会进入。\n\t\t// 本类只判断platform，因为九宫格显示以后，事件交给PlatformGridView控制\n\t\t// 当platform和silent都为true，则直接进入分享；\n\t\t// 当platform设置了，但是silent为false，则判断是否是“使用客户端分享”的平台，\n\t\t// 若为“使用客户端分享”的平台，则直接分享，否则进入编辑页面\n\t\tif (shareParamsMap.containsKey(\"platform\")) {\n\t\t\tString name = String.valueOf(shareParamsMap.get(\"platform\"));\n\t\t\tPlatform platform = ShareSDK.getPlatform(name);\n\n\t\t\tif (silent\n\t\t\t\t\t|| ShareCore.isUseClientToShare(name)\n\t\t\t\t\t|| platform instanceof CustomPlatform\n\t\t\t\t\t) {\n\t\t\t\tHashMap<Platform, HashMap<String, Object>> shareData\n\t\t\t\t\t\t= new HashMap<Platform, HashMap<String,Object>>();\n\t\t\t\tshareData.put(ShareSDK.getPlatform(name), shareParamsMap);\n\t\t\t\tshare(shareData);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tPlatformListFakeActivity platformListFakeActivity;\n\t\ttry {\n\t\t\tif(OnekeyShareTheme.SKYBLUE == theme){\n\t\t\t\tplatformListFakeActivity = (PlatformListFakeActivity) Class.forName(\"cn.sharesdk.onekeyshare.theme.skyblue.PlatformListPage\").newInstance();\n\t\t\t}else{\n\t\t\t\tplatformListFakeActivity = (PlatformListFakeActivity) Class.forName(\"cn.sharesdk.onekeyshare.theme.classic.PlatformListPage\").newInstance();\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t\treturn;\n\t\t}\n\n\t\tplatformListFakeActivity.setDialogMode(dialogMode);\n\t\tplatformListFakeActivity.setShareParamsMap(shareParamsMap);\n\t\tplatformListFakeActivity.setSilent(silent);\n\t\tplatformListFakeActivity.setCustomerLogos(customers);\n\t\tplatformListFakeActivity.setBackgroundView(bgView);\n\t\tplatformListFakeActivity.setHiddenPlatforms(hiddenPlatforms);\n\t\tplatformListFakeActivity.setOnShareButtonClickListener(onShareButtonClickListener);\n\t\tplatformListFakeActivity.setThemeShareCallback(new ThemeShareCallback() {\n\t\t\tpublic void doShare(HashMap<Platform, HashMap<String, Object>> shareData) {\n\t\t\t\tshare(shareData);\n\t\t\t}\n\t\t});\n\t\tif (shareParamsMap.containsKey(\"platform\")) {\n\t\t\tString name = String.valueOf(shareParamsMap.get(\"platform\"));\n\t\t\tPlatform platform = ShareSDK.getPlatform(name);\n\t\t\tplatformListFakeActivity.showEditPage(context, platform);\n\t\t\treturn;\n\t\t}\n\t\tplatformListFakeActivity.show(context, null);\n\t}\n\n\tpublic void setTheme(OnekeyShareTheme theme) {\n\t\tthis.theme = theme;\n\t}\n\n\t/** address是接收人地址，仅在信息和邮件使用，否则可以不提供 */\n\tpublic void setAddress(String address) {\n\t\tshareParamsMap.put(\"address\", address);\n\t}\n\n\t/**\n\t * title标题，在印象笔记、邮箱、信息、微信（包括好友、朋友圈和收藏）、\n\t * 易信（包括好友、朋友圈）、人人网和QQ空间使用，否则可以不提供\n\t */\n\tpublic void setTitle(String title) {\n\t\tshareParamsMap.put(\"title\", title);\n\t}\n\n\t/** titleUrl是标题的网络链接，仅在人人网和QQ空间使用，否则可以不提供 */\n\tpublic void setTitleUrl(String titleUrl) {\n\t\tshareParamsMap.put(\"titleUrl\", titleUrl);\n\t}\n\n\t/** text是分享文本，所有平台都需要这个字段 */\n\tpublic void setText(String text) {\n\t\tshareParamsMap.put(\"text\", text);\n\t}\n\n\t/** 获取text字段的值 */\n\tpublic String getText() {\n\t\treturn shareParamsMap.containsKey(\"text\") ? String.valueOf(shareParamsMap.get(\"text\")) : null;\n\t}\n\n\t/** imagePath是本地的图片路径，除Linked-In外的所有平台都支持这个字段 */\n\tpublic void setImagePath(String imagePath) {\n\t\tif(!TextUtils.isEmpty(imagePath))\n\t\t\tshareParamsMap.put(\"imagePath\", imagePath);\n\t}\n\n\t/** imageUrl是图片的网络路径，新浪微博、人人网、QQ空间和Linked-In支持此字段 */\n\tpublic void setImageUrl(String imageUrl) {\n\t\tif (!TextUtils.isEmpty(imageUrl))\n\t\t\tshareParamsMap.put(\"imageUrl\", imageUrl);\n\t}\n\n\t/** url在微信（包括好友、朋友圈收藏）和易信（包括好友和朋友圈）中使用，否则可以不提供 */\n \tpublic void setUrl(String url) {\n\t\tshareParamsMap.put(\"url\", url);\n\t}\n\n\t/** filePath是待分享应用程序的本地路劲，仅在微信（易信）好友和Dropbox中使用，否则可以不提供 */\n\tpublic void setFilePath(String filePath) {\n\t\tshareParamsMap.put(\"filePath\", filePath);\n\t}\n\n\t/** comment是我对这条分享的评论，仅在人人网和QQ空间使用，否则可以不提供 */\n\tpublic void setComment(String comment) {\n\t\tshareParamsMap.put(\"comment\", comment);\n\t}\n\n\t/** site是分享此内容的网站名称，仅在QQ空间使用，否则可以不提供 */\n\tpublic void setSite(String site) {\n\t\tshareParamsMap.put(\"site\", site);\n\t}\n\n\t/** siteUrl是分享此内容的网站地址，仅在QQ空间使用，否则可以不提供 */\n\tpublic void setSiteUrl(String siteUrl) {\n\t\tshareParamsMap.put(\"siteUrl\", siteUrl);\n\t}\n\n\t/** foursquare分享时的地方名 */\n\tpublic void setVenueName(String venueName) {\n\t\tshareParamsMap.put(\"venueName\", venueName);\n\t}\n\n\t/** foursquare分享时的地方描述 */\n\tpublic void setVenueDescription(String venueDescription) {\n\t\tshareParamsMap.put(\"venueDescription\", venueDescription);\n\t}\n\n\t/** 分享地纬度，新浪微博、腾讯微博和foursquare支持此字段 */\n\tpublic void setLatitude(float latitude) {\n\t\tshareParamsMap.put(\"latitude\", latitude);\n\t}\n\n\t/** 分享地经度，新浪微博、腾讯微博和foursquare支持此字段 */\n\tpublic void setLongitude(float longitude) {\n\t\tshareParamsMap.put(\"longitude\", longitude);\n\t}\n\n\t/** 是否直接分享 */\n\tpublic void setSilent(boolean silent) {\n\t\tthis.silent = silent;\n\t}\n\n\t/** 设置编辑页的初始化选中平台 */\n\tpublic void setPlatform(String platform) {\n\t\tshareParamsMap.put(\"platform\", platform);\n\t}\n\n\t/** 设置KakaoTalk的应用下载地址 */\n\tpublic void setInstallUrl(String installurl) {\n\t\tshareParamsMap.put(\"installurl\", installurl);\n\t}\n\n\t/** 设置KakaoTalk的应用打开地址 */\n\tpublic void setExecuteUrl(String executeurl) {\n\t\tshareParamsMap.put(\"executeurl\", executeurl);\n\t}\n\n\t/** 设置微信分享的音乐的地址 */\n\tpublic void setMusicUrl(String musicUrl) {\n\t\tshareParamsMap.put(\"musicUrl\", musicUrl);\n\t}\n\n\t/** 设置自定义的外部回调 */\n\tpublic void setCallback(PlatformActionListener callback) {\n\t\tthis.callback = callback;\n\t}\n\n\t/** 返回操作回调 */\n\tpublic PlatformActionListener getCallback() {\n\t\treturn callback;\n\t}\n\n\t/** 设置用于分享过程中，根据不同平台自定义分享内容的回调 */\n\tpublic void setShareContentCustomizeCallback(ShareContentCustomizeCallback callback) {\n\t\tcustomizeCallback = callback;\n\t}\n\n\t/** 返回自定义分享内容的回调 */\n\tpublic ShareContentCustomizeCallback getShareContentCustomizeCallback() {\n\t\treturn customizeCallback;\n\t}\n\n\t/** 设置自己图标和点击事件，可以重复调用添加多次 */\n\tpublic void setCustomerLogo(Bitmap enableLogo,Bitmap disableLogo, String label, OnClickListener ocListener) {\n\t\tCustomerLogo cl = new CustomerLogo();\n\t\tcl.label = label;\n\t\tcl.enableLogo = enableLogo;\n\t\tcl.disableLogo = disableLogo;\n\t\tcl.listener = ocListener;\n\t\tcustomers.add(cl);\n\t}\n\n\t/** 设置一个总开关，用于在分享前若需要授权，则禁用sso功能 */\n \tpublic void disableSSOWhenAuthorize() {\n\t\tdisableSSO = true;\n\t}\n\n\t/** 设置一个开关，用于微信分享视频 */\n \tpublic void shareVideoToWechat() {\n \t\tshareVideo = true;\n\t}\n\n\t/** 设置编辑页面的显示模式为Dialog模式 */\n\tpublic void setDialogMode() {\n\t\tdialogMode = true;\n\t\tshareParamsMap.put(\"dialogMode\", dialogMode);\n\t}\n\n\t/** 添加一个隐藏的platform */\n\tpublic void addHiddenPlatform(String platform) {\n\t\thiddenPlatforms.put(platform, platform);\n\t}\n\n\t/** 设置一个将被截图分享的View , surfaceView是截不了图片的*/\n\tpublic void setViewToShare(View viewToShare) {\n\t\ttry {\n\t\t\tBitmap bm = captureView(viewToShare, viewToShare.getWidth(), viewToShare.getHeight());\n\t\t\tshareParamsMap.put(\"viewToShare\", bm);\n\t\t} catch (Throwable e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\n\t/** 腾讯微博分享多张图片 */\n\tpublic void setImageArray(String[] imageArray) {\n\t\tshareParamsMap.put(\"imageArray\", imageArray);\n\t}\n\n\tpublic void setEditPageBackground(View bgView) {\n\t\tthis.bgView = bgView;\n\t}\n\n\tpublic void setOnShareButtonClickListener(PlatformListFakeActivity.OnShareButtonClickListener onShareButtonClickListener) {\n\t\tthis.onShareButtonClickListener = onShareButtonClickListener;\n\t}\n\n\t/** 循环执行分享 */\n\tpublic void share(HashMap<Platform, HashMap<String, Object>> shareData) {\n\t\tboolean started = false;\n\t\tfor (Entry<Platform, HashMap<String, Object>> ent : shareData.entrySet()) {\n\t\t\tPlatform plat = ent.getKey();\n\t\t\tplat.SSOSetting(disableSSO);\n\t\t\tString name = plat.getName();\n\n\t\t\tboolean isGooglePlus = \"GooglePlus\".equals(name);\n\t\t\tif (isGooglePlus && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_google_plus_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tboolean isAlipay = \"Alipay\".equals(name);\n\t\t\tif (isAlipay && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_alipay_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tboolean isKakaoTalk = \"KakaoTalk\".equals(name);\n\t\t\tif (isKakaoTalk && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_kakaotalk_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tboolean isKakaoStory = \"KakaoStory\".equals(name);\n\t\t\tif (isKakaoStory && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_kakaostory_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tboolean isLine = \"Line\".equals(name);\n\t\t\tif (isLine && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_line_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tboolean isWhatsApp = \"WhatsApp\".equals(name);\n\t\t\tif (isWhatsApp && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_whatsapp_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tboolean isPinterest = \"Pinterest\".equals(name);\n\t\t\tif (isPinterest && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_pinterest_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\"Instagram\".equals(name) && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_instagram_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tboolean isLaiwang = \"Laiwang\".equals(name);\n\t\t\tboolean isLaiwangMoments = \"LaiwangMoments\".equals(name);\n\t\t\tif(isLaiwang || isLaiwangMoments){\n\t\t\t\tif (!plat.isClientValid()) {\n\t\t\t\t\tMessage msg = new Message();\n\t\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\t\tint resId = getStringRes(context, \"ssdk_laiwang_client_inavailable\");\n\t\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tboolean isYixin = \"YixinMoments\".equals(name) || \"Yixin\".equals(name);\n\t\t\tif (isYixin && !plat.isClientValid()) {\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = MSG_TOAST;\n\t\t\t\tint resId = getStringRes(context, \"ssdk_yixin_client_inavailable\");\n\t\t\t\tmsg.obj = context.getString(resId);\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tHashMap<String, Object> data = ent.getValue();\n\t\t\tint shareType = Platform.SHARE_TEXT;\n\t\t\tString imagePath = String.valueOf(data.get(\"imagePath\"));\n\t\t\tif (imagePath != null && (new File(imagePath)).exists()) {\n\t\t\t\tshareType = Platform.SHARE_IMAGE;\n\t\t\t\tif (imagePath.endsWith(\".gif\")) {\n\t\t\t\t\tshareType = Platform.SHARE_EMOJI;\n\t\t\t\t} else if (data.containsKey(\"url\") && !TextUtils.isEmpty(data.get(\"url\").toString())) {\n\t\t\t\t\tshareType = Platform.SHARE_WEBPAGE;\n\t\t\t\t\tif (shareVideo) {\n\t\t\t\t\t\tshareType = Platform.SHARE_VIDEO;\n\t\t\t\t\t} else if (data.containsKey(\"musicUrl\") && !TextUtils.isEmpty(data.get(\"musicUrl\").toString())) {\n\t\t\t\t\t\tshareType = Platform.SHARE_MUSIC;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tBitmap viewToShare = (Bitmap) data.get(\"viewToShare\");\n\t\t\t\tif (viewToShare != null && !viewToShare.isRecycled()) {\n\t\t\t\t\tshareType = Platform.SHARE_IMAGE;\n\t\t\t\t\tif (data.containsKey(\"url\") && !TextUtils.isEmpty(data.get(\"url\").toString())) {\n\t\t\t\t\t\tshareType = Platform.SHARE_WEBPAGE;\n\t\t\t\t\t\tif (shareVideo) {\n\t\t\t\t\t\t\tshareType = Platform.SHARE_VIDEO;\n\t\t\t\t\t\t} else if (data.containsKey(\"musicUrl\") && !TextUtils.isEmpty(data.get(\"musicUrl\").toString())) {\n\t\t\t\t\t\t\tshareType = Platform.SHARE_MUSIC;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tObject imageUrl = data.get(\"imageUrl\");\n\t\t\t\t\tif (imageUrl != null && !TextUtils.isEmpty(String.valueOf(imageUrl))) {\n\t\t\t\t\t\tshareType = Platform.SHARE_IMAGE;\n\t\t\t\t\t\tif (String.valueOf(imageUrl).endsWith(\".gif\")) {\n\t\t\t\t\t\t\tshareType = Platform.SHARE_EMOJI;\n\t\t\t\t\t\t} else if (data.containsKey(\"url\") && !TextUtils.isEmpty(data.get(\"url\").toString())) {\n\t\t\t\t\t\t\tshareType = Platform.SHARE_WEBPAGE;\n\t\t\t\t\t\t\tif (shareVideo) {\n\t\t\t\t\t\t\t\tshareType = Platform.SHARE_VIDEO;\n\t\t\t\t\t\t\t} else if (data.containsKey(\"musicUrl\") && !TextUtils.isEmpty(data.get(\"musicUrl\").toString())) {\n\t\t\t\t\t\t\t\tshareType = Platform.SHARE_MUSIC;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdata.put(\"shareType\", shareType);\n\n\t\t\tif (!started) {\n\t\t\t\tstarted = true;\n//\t\t\t\tif (this == callback) {\n\t\t\t\t\tint resId = getStringRes(context, \"ssdk_oks_sharing\");\n\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t}\n//\t\t\t\t}\n\t\t\t}\n\t\t\tplat.setPlatformActionListener(callback);\n\t\t\tShareCore shareCore = new ShareCore();\n\t\t\tshareCore.setShareContentCustomizeCallback(customizeCallback);\n\t\t\tshareCore.share(plat, data);\n\t\t}\n\t}\n\n\tpublic void onComplete(Platform platform, int action,\n\t\t\tHashMap<String, Object> res) {\n\t\tMessage msg = new Message();\n\t\tmsg.what = MSG_ACTION_CCALLBACK;\n\t\tmsg.arg1 = 1;\n\t\tmsg.arg2 = action;\n\t\tmsg.obj = platform;\n\t\tUIHandler.sendMessage(msg, this);\n\t}\n\n\tpublic void onError(Platform platform, int action, Throwable t) {\n\t\tt.printStackTrace();\n\n\t\tMessage msg = new Message();\n\t\tmsg.what = MSG_ACTION_CCALLBACK;\n\t\tmsg.arg1 = 2;\n\t\tmsg.arg2 = action;\n\t\tmsg.obj = t;\n\t\tUIHandler.sendMessage(msg, this);\n\n\t\t// 分享失败的统计\n\t\tShareSDK.logDemoEvent(4, platform);\n\t}\n\n\tpublic void onCancel(Platform platform, int action) {\n\t\tMessage msg = new Message();\n\t\tmsg.what = MSG_ACTION_CCALLBACK;\n\t\tmsg.arg1 = 3;\n\t\tmsg.arg2 = action;\n\t\tmsg.obj = platform;\n\t\tUIHandler.sendMessage(msg, this);\n\n\t\t// 分享失败的统计\n\t\tShareSDK.logDemoEvent(5, platform);\n\t}\n\n\tpublic boolean handleMessage(Message msg) {\n\t\tswitch(msg.what) {\n\t\t\tcase MSG_TOAST: {\n\t\t\t\tString text = String.valueOf(msg.obj);\n\t\t\t\tToast.makeText(context, text, Toast.LENGTH_SHORT).show();\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase MSG_ACTION_CCALLBACK: {\n\t\t\t\tswitch (msg.arg1) {\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t// 成功\n\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_oks_share_completed\");\n\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t// 失败\n\t\t\t\t\t\tString expName = msg.obj.getClass().getSimpleName();\n\t\t\t\t\t\tif (\"WechatClientNotExistException\".equals(expName)\n\t\t\t\t\t\t\t\t|| \"WechatTimelineNotSupportedException\".equals(expName)\n\t\t\t\t\t\t\t\t|| \"WechatFavoriteNotSupportedException\".equals(expName)) {\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_wechat_client_inavailable\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\"GooglePlusClientNotExistException\".equals(expName)) {\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_google_plus_client_inavailable\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\"QQClientNotExistException\".equals(expName)) {\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_qq_client_inavailable\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\"YixinClientNotExistException\".equals(expName)\n\t\t\t\t\t\t\t\t|| \"YixinTimelineNotSupportedException\".equals(expName)) {\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_yixin_client_inavailable\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\"KakaoTalkClientNotExistException\".equals(expName)) {\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_kakaotalk_client_inavailable\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else if (\"KakaoStoryClientNotExistException\".equals(expName)) {\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_kakaostory_client_inavailable\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else if(\"WhatsAppClientNotExistException\".equals(expName)){\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_whatsapp_client_inavailable\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else {\n\t\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_oks_share_failed\");\n\t\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3: {\n\t\t\t\t\t\t// 取消\n\t\t\t\t\t\tint resId = getStringRes(context, \"ssdk_oks_share_canceled\");\n\t\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\t\tshowNotification(context.getString(resId));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase MSG_CANCEL_NOTIFY: {\n\t\t\t\tNotificationManager nm = (NotificationManager) msg.obj;\n\t\t\t\tif (nm != null) {\n\t\t\t\t\tnm.cancel(msg.arg1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// 在状态栏提示分享操作\n\tprivate void showNotification(String text) {\n\t\tToast.makeText(context, text, Toast.LENGTH_SHORT).show();\n\t}\n\n\t/** 是否支持QQ,QZone授权登录后发微博 */\n\tpublic void setShareFromQQAuthSupport(boolean shareFromQQLogin)\n\t{\n\t\tshareParamsMap.put(\"isShareTencentWeibo\", shareFromQQLogin);\n\t}\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/OnekeyShareTheme.java",
    "content": "package cn.sharesdk.onekeyshare;\n\npublic enum OnekeyShareTheme {CLASSIC, SKYBLUE}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/PicViewer.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\n\npackage cn.sharesdk.onekeyshare;\n\nimport android.graphics.Bitmap;\nimport android.graphics.Matrix;\nimport android.graphics.PointF;\nimport android.graphics.RectF;\nimport android.util.DisplayMetrics;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.View.OnTouchListener;\nimport android.widget.ImageView;\nimport android.widget.ImageView.ScaleType;\n\nimport com.mob.tools.FakeActivity;\n\n/** 查看编辑页面中图片的例子 */\npublic class PicViewer extends FakeActivity implements OnTouchListener {\n\tprivate ImageView ivViewer;\n\tprivate Bitmap pic;\n\n\tMatrix matrix = new Matrix();\n    Matrix savedMatrix = new Matrix();\n    DisplayMetrics dm;\n\n    /** 最小缩放比例*/\n    float minScaleR = 1f;\n    /** 最大缩放比例*/\n    static final float MAX_SCALE = 10f;\n\n    /** 初始状态*/\n    static final int NONE = 0;\n    /** 拖动*/\n    static final int DRAG = 1;\n    /** 缩放*/\n    static final int ZOOM = 2;\n\n    /** 当前模式*/\n    int mode = NONE;\n\n    PointF prev = new PointF();\n    PointF mid = new PointF();\n    float dist = 1f;\n\n\t/** 设置图片用于浏览 */\n\tpublic void setImageBitmap(Bitmap pic) {\n\t\tthis.pic = pic;\n\t\tif (ivViewer != null) {\n\t\t\tivViewer.setImageBitmap(pic);\n\t\t}\n\t}\n\n\tpublic void onCreate() {\n\t\tivViewer = new ImageView(activity);\n\t\tivViewer.setScaleType(ScaleType.MATRIX);\n\t\tivViewer.setBackgroundColor(0xc0000000);\n\t\tivViewer.setOnTouchListener(this);\n\t\tif (pic != null && !pic.isRecycled()) {\n\t\t\tivViewer.setImageBitmap(pic);\n\t\t}\n\t\tdm = new DisplayMetrics();\n\t\tactivity.getWindowManager().getDefaultDisplay().getMetrics(dm);// 获取分辨率\n        minZoom();\n        CheckView();\n        ivViewer.setImageMatrix(matrix);\n\t    activity.setContentView(ivViewer);\n\n\t}\n\n\n\n\t/**\n     * 触屏监听\n     */\n    public boolean onTouch(View v, MotionEvent event) {\n\n        switch (event.getAction() & MotionEvent.ACTION_MASK) {\n        // 主点按下\n        case MotionEvent.ACTION_DOWN:\n            savedMatrix.set(matrix);\n            prev.set(event.getX(), event.getY());\n            mode = DRAG;\n            break;\n        // 副点按下\n        case MotionEvent.ACTION_POINTER_DOWN:\n            dist = spacing(event);\n            // 如果连续两点距离大于10，则判定为多点模式\n            if (spacing(event) > 10f) {\n                savedMatrix.set(matrix);\n                midPoint(mid, event);\n                mode = ZOOM;\n            }\n            break;\n        case MotionEvent.ACTION_UP:\n        case MotionEvent.ACTION_POINTER_UP:\n            mode = NONE;\n            break;\n        case MotionEvent.ACTION_MOVE:\n            if (mode == DRAG) {\n                matrix.set(savedMatrix);\n                matrix.postTranslate(event.getX() - prev.x, event.getY()\n                        - prev.y);\n            } else if (mode == ZOOM) {\n                float newDist = spacing(event);\n                if (newDist > 10f) {\n                    matrix.set(savedMatrix);\n                    float tScale = newDist / dist;\n                    matrix.postScale(tScale, tScale, mid.x, mid.y);\n                }\n            }\n            break;\n        }\n        ivViewer.setImageMatrix(matrix);\n        CheckView();\n        return true;\n    }\n\n    /**\n     * 限制最大最小缩放比例，自动居中\n     */\n    private void CheckView() {\n        float p[] = new float[9];\n        matrix.getValues(p);\n        if (mode == ZOOM) {\n            if (p[0] < minScaleR) {\n//                Log.d(\"\", \"当前缩放级别:\"+p[0]+\",最小缩放级别:\"+minScaleR);\n                matrix.setScale(minScaleR, minScaleR);\n            }\n            if (p[0] > MAX_SCALE) {\n//                Log.d(\"\", \"当前缩放级别:\"+p[0]+\",最大缩放级别:\"+MAX_SCALE);\n                matrix.set(savedMatrix);\n            }\n        }\n        center();\n    }\n\n    /**\n     * 最小缩放比例，最大为100%\n     */\n    private void minZoom() {\n        minScaleR = Math.min(\n                (float) dm.widthPixels / (float) pic.getWidth(),\n                (float) dm.heightPixels / (float) pic.getHeight());\n        //以最小缩放比例显示\n        matrix.setScale(minScaleR, minScaleR);\n    }\n\n    private void center() {\n        center(true, true);\n    }\n\n    /**\n     * 横向、纵向居中\n     */\n    protected void center(boolean horizontal, boolean vertical) {\n\n    \t Matrix m = new Matrix();\n         m.set(matrix);\n         RectF rect = new RectF(0, 0, pic.getWidth(), pic.getHeight());\n         m.mapRect(rect);\n\n         float height = rect.height();\n         float width = rect.width();\n\n         float deltaX = 0, deltaY = 0;\n\n         if (vertical) {\n             // 图片小于屏幕大小，则居中显示。大于屏幕，上方留空则往上移，下方留空则往下移\n             int screenHeight = dm.heightPixels;\n             if (height < screenHeight) {\n                 deltaY = (screenHeight - height) / 2 - rect.top;\n             } else if (rect.top > 0) {\n                 deltaY = -rect.top;\n             } else if (rect.bottom < screenHeight) {\n                 deltaY = ivViewer.getHeight() - rect.bottom;\n             }\n         }\n\n         if (horizontal) {\n             int screenWidth = dm.widthPixels;\n             if (width < screenWidth) {\n                 deltaX = (screenWidth - width) / 2 - rect.left;\n             } else if (rect.left > 0) {\n                 deltaX = -rect.left;\n             } else if (rect.right < screenWidth) {\n                 deltaX = ivViewer.getWidth() - rect.right;\n             }\n         }\n         matrix.postTranslate(deltaX, deltaY);\n    }\n\n    /**\n     * 两点的距离\n     */\n\tprivate float spacing(MotionEvent event) {\n        float x = event.getX(0) - event.getX(1);\n        float y = event.getY(0) - event.getY(1);\n        return (float)Math.sqrt(x * x + y * y);\n    }\n\n    /**\n     * 两点的中点\n     */\n    private void midPoint(PointF point, MotionEvent event) {\n        float x = event.getX(0) + event.getX(1);\n        float y = event.getY(0) + event.getY(1);\n        point.set(x / 2, y / 2);\n    }\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/PlatformListFakeActivity.java",
    "content": "package cn.sharesdk.onekeyshare;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.view.KeyEvent;\nimport android.view.View;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\n\nimport com.mob.tools.FakeActivity;\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.ShareSDK;\n\npublic class PlatformListFakeActivity extends FakeActivity {\n\tprotected HashMap<String, Object> shareParamsMap;\n\tprotected boolean silent;\n\tprotected ArrayList<CustomerLogo> customerLogos;\n\tprotected HashMap<String, String> hiddenPlatforms;\n\tprivate boolean canceled = false;\n\tprotected View backgroundView;\n\n\tprotected OnShareButtonClickListener onShareButtonClickListener;\n\tprotected boolean dialogMode = false;\n\tprotected ThemeShareCallback themeShareCallback;\n\n\tpublic static interface OnShareButtonClickListener {\n\t\tvoid onClick(View v, List<Object> checkPlatforms);\n\t}\n\n\tpublic void onCreate() {\n\t\tsuper.onCreate();\n\n\t\tcanceled = false;\n\n\t\tif(themeShareCallback == null) {\n\t\t\tfinish();\n\t\t}\n\t}\n\n\tpublic boolean onKeyEvent(int keyCode, KeyEvent event) {\n\t\tif (keyCode == KeyEvent.KEYCODE_BACK) {\n\t\t\tcanceled = true;\n\t\t}\n\t\treturn super.onKeyEvent(keyCode, event);\n\t}\n\n\tprotected void setCanceled(boolean canceled) {\n\t\tthis.canceled = canceled;\n\t}\n\n\tpublic boolean onFinish() {\n\n\t\t// 取消分享菜单的统计\n\t\tif (canceled) {\n\t\t\tShareSDK.logDemoEvent(2, null);\n\t\t}\n\n\t\treturn super.onFinish();\n\t}\n\n\t@Override\n\tpublic void show(Context context, Intent i) {\n\t\tsuper.show(context, i);\n\t}\n\n\tpublic HashMap<String, Object> getShareParamsMap() {\n\t\treturn shareParamsMap;\n\t}\n\n\tpublic void setShareParamsMap(HashMap<String, Object> shareParamsMap) {\n\t\tthis.shareParamsMap = shareParamsMap;\n\t}\n\n\tpublic boolean isSilent() {\n\t\treturn silent;\n\t}\n\n\tpublic void setSilent(boolean silent) {\n\t\tthis.silent = silent;\n\t}\n\n\tpublic ArrayList<CustomerLogo> getCustomerLogos() {\n\t\treturn customerLogos;\n\t}\n\n\tpublic void setCustomerLogos(ArrayList<CustomerLogo> customerLogos) {\n\t\tthis.customerLogos = customerLogos;\n\t}\n\n\tpublic HashMap<String, String> getHiddenPlatforms() {\n\t\treturn hiddenPlatforms;\n\t}\n\n\tpublic void setHiddenPlatforms(HashMap<String, String> hiddenPlatforms) {\n\t\tthis.hiddenPlatforms = hiddenPlatforms;\n\t}\n\n\tpublic View getBackgroundView() {\n\t\treturn backgroundView;\n\t}\n\n\tpublic void setBackgroundView(View backgroundView) {\n\t\tthis.backgroundView = backgroundView;\n\t}\n\n\tpublic OnShareButtonClickListener getOnShareButtonClickListener() {\n\t\treturn onShareButtonClickListener;\n\t}\n\n\tpublic void setOnShareButtonClickListener(OnShareButtonClickListener onShareButtonClickListener) {\n\t\tthis.onShareButtonClickListener = onShareButtonClickListener;\n\t}\n\n\tpublic boolean isDialogMode() {\n\t\treturn dialogMode;\n\t}\n\n\tpublic void setDialogMode(boolean dialogMode) {\n\t\tthis.dialogMode = dialogMode;\n\t}\n\n\tpublic ThemeShareCallback getThemeShareCallback() {\n\t\treturn themeShareCallback;\n\t}\n\n\tpublic void setThemeShareCallback(ThemeShareCallback themeShareCallback) {\n\t\tthis.themeShareCallback = themeShareCallback;\n\t}\n\n\tprotected void onShareButtonClick(View v, List<Object> checkedPlatforms) {\n\n\t\tif(onShareButtonClickListener != null) {\n\t\t\tonShareButtonClickListener.onClick(v, checkedPlatforms);\n\t\t}\n\n\t\tHashMap<Platform, HashMap<String, Object>> silentShareData = new HashMap<Platform, HashMap<String,Object>>();\n\t\tfinal List<Platform> supportEditPagePlatforms = new ArrayList<Platform>();\n\n\t\tPlatform plat;\n\t\tHashMap<String, Object> shareParam;\n\t\tfor(Object item : checkedPlatforms) {\n\t\t\tif(item instanceof CustomerLogo){\n\t\t\t\tCustomerLogo customerLogo = (CustomerLogo)item;\n\t\t\t\tcustomerLogo.listener.onClick(v);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tplat = (Platform)item;\n\t\t\tString name = plat.getName();\n\n\t\t\t// EditPage不支持微信平台、Google+、QQ分享、Pinterest、信息和邮件，总是执行直接分享\n\t\t\tif(silent || ShareCore.isDirectShare(plat)) {\n\t\t\t\tshareParam = new HashMap<String, Object>(shareParamsMap);\n\t\t\t\tshareParam.put(\"platform\", name);\n\t\t\t\tsilentShareData.put(plat, shareParam);\n\t\t\t} else {\n\t\t\t\tsupportEditPagePlatforms.add(plat);\n\t\t\t}\n\t\t}\n\t\tif (silentShareData.size() > 0) {\n\t\t\tthemeShareCallback.doShare(silentShareData);\n\t\t}\n\n\t\t// 跳转EditPage分享\n\t\tif(supportEditPagePlatforms.size() > 0) {\n\t\t\tshowEditPage(supportEditPagePlatforms);\n\t\t}\n\n\t\tfinish();\n\t}\n\n\tprotected void showEditPage(List<Platform> platforms) {\n\t\tshowEditPage(getContext(), platforms);\n\t}\n\n\tpublic void showEditPage(Context context, Platform platform) {\n\t\tArrayList<Platform> platforms = new ArrayList<Platform>(1);\n\t\tplatforms.add(platform);\n\t\tshowEditPage(context, platforms);\n\t}\n\n\tprotected void showEditPage(Context context, List<Platform> platforms) {\n\t\t// 编辑分享内容的统计\n\t\tShareSDK.logDemoEvent(3, null);\n\n\t\tEditPageFakeActivity editPageFakeActivity;\n\t\tString editPageClass = ((Object)this).getClass().getPackage().getName()+\".EditPage\";\n\t\ttry {\n\t\t\teditPageFakeActivity = (EditPageFakeActivity) Class.forName(editPageClass).newInstance();\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t\treturn;\n\t\t}\n\n\t\teditPageFakeActivity.setBackgroundView(backgroundView);\n\t\teditPageFakeActivity.setShareData(shareParamsMap);\n\t\teditPageFakeActivity.setPlatforms(platforms);\n\t\tif (dialogMode) {\n\t\t\teditPageFakeActivity.setDialogMode();\n\t\t}\n\t\teditPageFakeActivity.showForResult(context, null, new FakeActivity() {\n\t\t\tpublic void onResult(HashMap<String, Object> data) {\n\t\t\t\tif(data == null)\n\t\t\t\t\treturn;\n\t\t\t\tif (data.containsKey(\"editRes\")) {\n\t\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\t\tHashMap<Platform, HashMap<String, Object>> editRes\n\t\t\t\t\t\t\t= (HashMap<Platform, HashMap<String, Object>>) data.get(\"editRes\");\n\t\t\t\t\tthemeShareCallback.doShare(editRes);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/ReflectableShareContentCustomizeCallback.java",
    "content": "package cn.sharesdk.onekeyshare;\n\nimport android.os.Handler.Callback;\nimport android.os.Message;\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.Platform.ShareParams;\nimport com.mob.tools.utils.UIHandler;\n\n/**\n * 此类在Onekeyshare中并无用途，只是在Socialization中考虑到耦合度，需要通过反射的方式操作Onekeyshare，\n *而原先的{@link ShareContentCustomizeCallback}无法完成此需求，故创建本类，以供外部设置操作回调。\n *\n * @author Brook\n */\npublic class ReflectableShareContentCustomizeCallback implements ShareContentCustomizeCallback {\n\tprivate int onShareWhat;\n\tprivate Callback onShareCallback;\n\n\tpublic void setOnShareCallback(int what, Callback callback) {\n\t\tonShareWhat = what;\n\t\tonShareCallback = callback;\n\t}\n\n\t@Override\n\tpublic void onShare(Platform platform, ShareParams paramsToShare) {\n\t\tif (onShareCallback != null) {\n\t\t\tMessage msg = new Message();\n\t\t\tmsg.what = onShareWhat;\n\t\t\tmsg.obj = new Object[] {platform, paramsToShare};\n\t\t\tUIHandler.sendMessage(msg, onShareCallback);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/Shake2Share.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare;\n\nimport static cn.sharesdk.framework.utils.ShareSDKR.getBitmapRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\nimport android.app.Activity;\nimport android.content.Context;\nimport android.hardware.Sensor;\nimport android.hardware.SensorEvent;\nimport android.hardware.SensorEventListener;\nimport android.hardware.SensorManager;\nimport android.view.Window;\nimport android.widget.ImageView;\nimport android.widget.ImageView.ScaleType;\nimport android.widget.Toast;\n\nimport com.mob.tools.FakeActivity;\n\n/** 摇一摇启动分享的例子 */\npublic class Shake2Share extends FakeActivity implements SensorEventListener {\n\t// 检测的时间间隔\n\tprivate static final int UPDATE_INTERVAL = 100;\n\t// 摇晃检测阈值，决定了对摇晃的敏感程度，越小越敏感\n\tprivate static final int SHAKE_THRESHOLD = 1500;\n\n\tprivate OnShakeListener listener;\n\tprivate SensorManager mSensorManager;\n\tprivate long mLastUpdateTime;\n\tprivate float mLastX;\n\tprivate float mLastY;\n\tprivate float mLastZ;\n\tprivate boolean shaken;\n\n\tpublic void setOnShakeListener(OnShakeListener listener) {\n\t\tthis.listener = listener;\n\t}\n\n\tpublic void setActivity(Activity activity) {\n\t\tsuper.setActivity(activity);\n\t\tint resId = getBitmapRes(activity, \"ssdk_oks_shake_to_share_back\");\n\t\tif (resId > 0) {\n\t\t\tactivity.setTheme(android.R.style.Theme_Dialog);\n\t\t\tactivity.requestWindowFeature(Window.FEATURE_NO_TITLE);\n\t\t\tWindow win = activity.getWindow();\n\t\t\twin.setBackgroundDrawableResource(resId);\n\t\t}\n\t}\n\n\tpublic void onCreate() {\n\t\tstartSensor();\n\n\t\tint resId = getBitmapRes(activity, \"ssdk_oks_yaoyiyao\");\n\t\tif (resId > 0) {\n\t\t\tImageView iv = new ImageView(activity);\n\t\t\tiv.setScaleType(ScaleType.CENTER_INSIDE);\n\t\t\tiv.setImageResource(resId);\n\t\t\tactivity.setContentView(iv);\n\t\t}\n\n\t\tresId = getStringRes(activity, \"ssdk_oks_shake2share\");\n\t\tif (resId > 0) {\n\t\t\tToast.makeText(activity, resId, Toast.LENGTH_SHORT).show();\n\t\t}\n\t}\n\n\tprivate void startSensor() {\n\t\tmSensorManager = (SensorManager) activity.getSystemService(Context.SENSOR_SERVICE);\n\t\tif (mSensorManager == null) {\n\t\t\tthrow new UnsupportedOperationException();\n\t\t}\n\t\tSensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);\n\t\tif (sensor == null) {\n\t\t\tthrow new UnsupportedOperationException();\n\t\t}\n\t\tboolean success = mSensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);\n\t\tif (!success) {\n\t\t\tthrow new UnsupportedOperationException();\n\t\t}\n\t}\n\n\tpublic void onDestroy() {\n\t\tstopSensor();\n\t}\n\n\tprivate void stopSensor() {\n\t\tif (mSensorManager != null) {\n\t\t\tmSensorManager.unregisterListener(this);\n\t\t\tmSensorManager = null;\n\t\t}\n\t}\n\n\tpublic void onSensorChanged(SensorEvent event) {\n\t\tlong currentTime = System.currentTimeMillis();\n\t\tlong diffTime = currentTime - mLastUpdateTime;\n\t\tif (diffTime > UPDATE_INTERVAL) {\n\t\t\tif(mLastUpdateTime != 0) {\n\t\t\t\tfloat x = event.values[0];\n\t\t\t\tfloat y = event.values[1];\n\t\t\t\tfloat z = event.values[2];\n\t\t\t\tfloat deltaX = x - mLastX;\n\t\t\t\tfloat deltaY = y - mLastY;\n\t\t\t\tfloat deltaZ = z - mLastZ;\n\t\t\t\tfloat delta = (float)Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) / diffTime * 10000;\n\t\t\t\tif (delta > SHAKE_THRESHOLD) {\n\t\t\t\t\tif (!shaken) {\n\t\t\t\t\t\tshaken = true;\n\t\t\t\t\t\tfinish();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (listener != null) {\n\t\t\t\t\t\tlistener.onShake();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmLastX = x;\n\t\t\t\tmLastY = y;\n\t\t\t\tmLastZ = z;\n\t\t\t}\n\t\t\tmLastUpdateTime = currentTime;\n\t\t}\n\t}\n\n\tpublic void onAccuracyChanged(Sensor sensor, int accuracy) {\n\n\t}\n\n\tpublic static interface OnShakeListener {\n\t\tpublic void onShake();\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/ShareContentCustomizeCallback.java",
    "content": "package cn.sharesdk.onekeyshare;\n\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.Platform.ShareParams;\n\npublic interface ShareContentCustomizeCallback {\n\n\tpublic void onShare(Platform platform, ShareParams paramsToShare);\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/ShareCore.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.util.HashMap;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.content.pm.ResolveInfo;\nimport android.graphics.Bitmap;\nimport android.graphics.Bitmap.CompressFormat;\nimport android.text.TextUtils;\nimport cn.sharesdk.framework.CustomPlatform;\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.Platform.ShareParams;\nimport cn.sharesdk.framework.ShareSDK;\nimport com.mob.tools.utils.R;\n\n/**\n * ShareCore是快捷分享的实际出口，此类使用了反射的方式，配合传递进来的HashMap，\n *构造{@link ShareParams}对象，并执行分享，使快捷分享不再需要考虑目标平台\n */\npublic class ShareCore {\n\tprivate ShareContentCustomizeCallback customizeCallback;\n\n\t/** 设置用于分享过程中，根据不同平台自定义分享内容的回调 */\n\tpublic void setShareContentCustomizeCallback(ShareContentCustomizeCallback callback) {\n\t\tcustomizeCallback = callback;\n\t}\n\n\t/**\n\t * 向指定平台分享内容\n\t * <p>\n\t * <b>注意：</b><br>\n\t * 参数data的键值需要严格按照{@link ShareParams}不同子类具体字段来命名，\n\t *否则无法反射此字段，也无法设置其值。\n\t */\n\tpublic boolean share(Platform plat, HashMap<String, Object> data) {\n\t\tif (plat == null || data == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tString imagePath = (String) data.get(\"imagePath\");\n\t\t\tBitmap viewToShare = (Bitmap) data.get(\"viewToShare\");\n\t\t\tif (TextUtils.isEmpty(imagePath) && viewToShare != null && !viewToShare.isRecycled()) {\n\t\t\t\tString path = R.getCachePath(plat.getContext(), \"screenshot\");\n\t\t\t\tFile ss = new File(path, String.valueOf(System.currentTimeMillis()) + \".jpg\");\n\t\t\t\tFileOutputStream fos = new FileOutputStream(ss);\n\t\t\t\tviewToShare.compress(CompressFormat.JPEG, 100, fos);\n\t\t\t\tfos.flush();\n\t\t\t\tfos.close();\n\t\t\t\tdata.put(\"imagePath\", ss.getAbsolutePath());\n\t\t\t}\n\t\t} catch (Throwable t) {\n\t\t\tt.printStackTrace();\n\t\t\treturn false;\n\t\t}\n\n\t\tShareParams sp = new ShareParams(data);\n\t\tif (customizeCallback != null) {\n\t\t\tcustomizeCallback.onShare(plat, sp);\n\t\t}\n\n\t\tplat.share(sp);\n\t\treturn true;\n\t}\n\n\t/** 判断指定平台是否使用客户端分享 */\n\tpublic static boolean isUseClientToShare(String platform) {\n\t\tif (\"Wechat\".equals(platform) || \"WechatMoments\".equals(platform)\n\t\t\t\t|| \"WechatFavorite\".equals(platform) || \"ShortMessage\".equals(platform)\n\t\t\t\t|| \"Email\".equals(platform) || \"GooglePlus\".equals(platform)\n\t\t\t\t|| \"QQ\".equals(platform) || \"Pinterest\".equals(platform)\n\t\t\t\t|| \"Instagram\".equals(platform) || \"Yixin\".equals(platform)\n\t\t\t\t|| \"YixinMoments\".equals(platform) || \"QZone\".equals(platform)\n\t\t\t\t|| \"Mingdao\".equals(platform) || \"Line\".equals(platform)\n\t\t\t\t|| \"KakaoStory\".equals(platform) || \"KakaoTalk\".equals(platform)\n\t\t\t\t|| \"Bluetooth\".equals(platform) || \"WhatsApp\".equals(platform)\n\t\t\t\t|| \"BaiduTieba\".equals(platform) || \"Laiwang\".equals(platform)\n\t\t\t\t|| \"LaiwangMoments\".equals(platform) || \"Alipay\".equals(platform)\n\t\t\t\t) {\n\t\t\treturn true;\n\t\t} else if (\"Evernote\".equals(platform)) {\n\t\t\tPlatform plat = ShareSDK.getPlatform(platform);\n\t\t\tif (\"true\".equals(plat.getDevinfo(\"ShareByAppClient\"))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (\"SinaWeibo\".equals(platform)) {\n\t\t\tPlatform plat = ShareSDK.getPlatform(platform);\n\t\t\tif (\"true\".equals(plat.getDevinfo(\"ShareByAppClient\"))) {\n\t\t\t\tIntent test = new Intent(Intent.ACTION_SEND);\n\t\t\t\ttest.setPackage(\"com.sina.weibo\");\n\t\t\t\ttest.setType(\"image/*\");\n\t\t\t\tResolveInfo ri = plat.getContext().getPackageManager().resolveActivity(test, 0);\n\t\t\t\treturn (ri != null);\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/** 判断指定平台是否可以用来授权 */\n\tpublic static boolean canAuthorize(Context context, String platform) {\n\t\treturn !(\"WechatMoments\".equals(platform)\n\t\t\t\t|| \"WechatFavorite\".equals(platform) || \"ShortMessage\".equals(platform)\n\t\t\t\t|| \"Email\".equals(platform)\n\t\t\t\t|| \"Pinterest\".equals(platform) || \"Yixin\".equals(platform)\n\t\t\t\t|| \"YixinMoments\".equals(platform) || \"Line\".equals(platform)\n\t\t\t\t|| \"Bluetooth\".equals(platform) || \"WhatsApp\".equals(platform)\n\t\t\t\t|| \"BaiduTieba\".equals(platform) || \"Laiwang\".equals(platform)\n\t\t\t\t|| \"LaiwangMoments\".equals(platform) || \"Alipay\".equals(platform));\n\t}\n\n\n\t/** 判断指定平台是否可以用来获取用户资料 */\n\tpublic static boolean canGetUserInfo(Context context, String platform) {\n\t\treturn !(\"WechatMoments\".equals(platform)\n\t\t\t\t|| \"WechatFavorite\".equals(platform) || \"ShortMessage\".equals(platform)\n\t\t\t\t|| \"Email\".equals(platform)\n\t\t\t\t|| \"Pinterest\".equals(platform) || \"Yixin\".equals(platform)\n\t\t\t\t|| \"YixinMoments\".equals(platform) || \"Line\".equals(platform)\n\t\t\t\t|| \"Bluetooth\".equals(platform) || \"WhatsApp\".equals(platform)\n\t\t\t\t|| \"Pocket\".equals(platform) || \"BaiduTieba\".equals(platform)\n\t\t\t\t|| \"Laiwang\".equals(platform) || \"LaiwangMoments\".equals(platform)\n\t\t\t\t|| \"Alipay\".equals(platform));\n\t}\n\n\t/** 判断是否直接分享 */\n\tpublic static boolean isDirectShare(Platform platform) {\n\t\treturn platform instanceof CustomPlatform || isUseClientToShare(platform.getName());\n\t}\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/ThemeShareCallback.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare;\n\nimport java.util.HashMap;\n\nimport cn.sharesdk.framework.Platform;\n\npublic interface ThemeShareCallback {\n\tpublic void doShare(HashMap<Platform, HashMap<String, Object>> shareData);\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/classic/EditPage.java",
    "content": "/*\n * Offical Website:http://www.mob.com\n * Support QQ: 4006852216\n * Offical Wechat Account:ShareSDK   (We will inform you our updated news at the first time by Wechat, if we release a new version. If you get any problem, you can also contact us with Wechat, we will reply you within 24 hours.)\n *\n * Copyright (c) 2013 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.classic;\n\nimport static com.mob.tools.utils.BitmapHelper.blur;\nimport static com.mob.tools.utils.BitmapHelper.captureView;\nimport static com.mob.tools.utils.R.dipToPx;\nimport static com.mob.tools.utils.R.getScreenWidth;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getBitmapRes;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.res.Configuration;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.graphics.Typeface;\nimport android.graphics.drawable.BitmapDrawable;\nimport android.graphics.drawable.ColorDrawable;\nimport android.graphics.drawable.Drawable;\nimport android.graphics.drawable.LayerDrawable;\nimport android.os.Handler.Callback;\nimport android.os.Message;\nimport android.text.Editable;\nimport android.text.TextWatcher;\nimport android.util.TypedValue;\nimport android.view.Gravity;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.Window;\nimport android.view.WindowManager;\nimport android.view.inputmethod.InputMethodManager;\nimport android.widget.Button;\nimport android.widget.EditText;\nimport android.widget.FrameLayout;\nimport android.widget.HorizontalScrollView;\nimport android.widget.ImageView;\nimport android.widget.ImageView.ScaleType;\nimport android.widget.LinearLayout;\nimport android.widget.LinearLayout.LayoutParams;\nimport android.widget.ProgressBar;\nimport android.widget.RelativeLayout;\nimport android.widget.TextView;\nimport android.widget.Toast;\nimport cn.sharesdk.framework.CustomPlatform;\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.ShareSDK;\nimport cn.sharesdk.framework.TitleLayout;\nimport cn.sharesdk.onekeyshare.EditPageFakeActivity;\nimport cn.sharesdk.onekeyshare.PicViewer;\nimport cn.sharesdk.onekeyshare.ShareCore;\n\nimport com.mob.tools.utils.UIHandler;\n\n/**\n * Photo-text Sharing will be handling in this page\n * <p>\n * note:\n * wechat, yixin, qzone, etc. are shared in their clients, not in this page\n */\npublic class EditPage extends EditPageFakeActivity implements OnClickListener, TextWatcher {\n\tprivate static final int MAX_TEXT_COUNT = 140;\n\tprivate static final int DIM_COLOR = 0x7f323232;\n\tprivate RelativeLayout rlPage;\n\tprivate TitleLayout llTitle;\n\tprivate LinearLayout llBody;\n\tprivate RelativeLayout rlThumb;\n\t// share content editor\n\tprivate EditText etContent;\n\t// Words counter\n\tprivate TextView tvCounter;\n\t// the pin\n\tprivate ImageView ivPin;\n\t// the image info of share image\n\tprivate ImageInfo imgInfo;\n\t// shared image container\n\tprivate ImageView ivImage;\n\tprivate ProgressBar progressBar;\n\tprivate Bitmap image;\n\tprivate LinearLayout llPlat;\n//\tprivate LinearLayout llAt;\n\tprivate View[] views;\n\tprivate Drawable background;\n\n\tprivate Platform[] platformList;\n\n\tpublic void setActivity(Activity activity) {\n\t\tsuper.setActivity(activity);\n\t\tWindow win = activity.getWindow();\n\t\tint orientation = activity.getResources().getConfiguration().orientation;\n\t\tif (orientation == Configuration.ORIENTATION_LANDSCAPE) {\n\t\t\twin.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN\n\t\t\t\t\t| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);\n\t\t} else {\n\t\t\twin.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE\n\t\t\t\t\t| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);\n\t\t}\n\t}\n\n\tpublic void onCreate() {\n\t\tif (shareParamMap == null || platforms == null || platforms.size() < 1) {\n\t\t\tfinish();\n\t\t\treturn;\n\t\t}\n\n\t\tgetBackground();\n\t\tactivity.setContentView(getPageView());\n\t\tonTextChanged(etContent.getText(), 0, etContent.length(), 0);\n\t\tshowThumb();\n\n\t\t// requests platform list and remove platforms share in their clients\n\t\tnew Thread(){\n\t\t\tpublic void run() {\n\t\t\t\ttry {\n\t\t\t\t\tplatformList = ShareSDK.getPlatformList();\n\t\t\t\t\tif (platformList == null) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tArrayList<Platform> list = new ArrayList<Platform>();\n\t\t\t\t\tfor (Platform plat : platformList) {\n\t\t\t\t\t\tString name = plat.getName();\n\t\t\t\t\t\tif ((plat instanceof CustomPlatform)\n\t\t\t\t\t\t\t\t|| ShareCore.isUseClientToShare(name)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlist.add(plat);\n\t\t\t\t\t}\n\t\t\t\t\tplatformList = new Platform[list.size()];\n\t\t\t\t\tfor (int i = 0; i < platformList.length; i++) {\n\t\t\t\t\t\tplatformList[i] = list.get(i);\n\t\t\t\t\t}\n\n\t\t\t\t\tUIHandler.sendEmptyMessage(1, new Callback() {\n\t\t\t\t\t\tpublic boolean handleMessage(Message msg) {\n\t\t\t\t\t\t\tafterPlatformListGot();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} catch (Throwable t) {\n\t\t\t\t\tt.printStackTrace();\n\t\t\t\t}\n\t\t\t}\n\t\t}.start();\n\t}\n\n\tprivate RelativeLayout getPageView() {\n\t\trlPage = new RelativeLayout(getContext());\n\t\trlPage.setBackgroundDrawable(background);\n\t\tif (dialogMode) {\n\t\t\tRelativeLayout rlDialog = new RelativeLayout(getContext());\n\t\t\trlDialog.setBackgroundColor(0xc0323232);\n\t\t\tint dp_8 = dipToPx(getContext(), 8);\n\t\t\tint width = getScreenWidth(getContext()) - dp_8 * 2;\n\t\t\tRelativeLayout.LayoutParams lpDialog = new RelativeLayout.LayoutParams(\n\t\t\t\t\twidth, LayoutParams.WRAP_CONTENT);\n\t\t\tlpDialog.topMargin = dp_8;\n\t\t\tlpDialog.bottomMargin = dp_8;\n\t\t\tlpDialog.addRule(RelativeLayout.CENTER_IN_PARENT);\n\t\t\trlDialog.setLayoutParams(lpDialog);\n\t\t\trlPage.addView(rlDialog);\n\n\t\t\trlDialog.addView(getPageTitle());\n\t\t\trlDialog.addView(getPageBody());\n\t\t\trlDialog.addView(getImagePin());\n\t\t} else {\n\t\t\trlPage.addView(getPageTitle());\n\t\t\trlPage.addView(getPageBody());\n\t\t\trlPage.addView(getImagePin());\n\t\t}\n\t\treturn rlPage;\n\t}\n\n\t// title bar\n\tprivate TitleLayout getPageTitle() {\n\t\tllTitle = new TitleLayout(getContext());\n\t\tllTitle.setId(1);\n//\t\tint resId = getBitmapRes(activity, \"title_back\");\n//\t\tif (resId > 0) {\n//\t\t\tllTitle.setBackgroundResource(resId);\n//\t\t}\n\t\tllTitle.getBtnBack().setOnClickListener(this);\n\t\tint resId = getStringRes(activity, \"ssdk_oks_multi_share\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.getTvTitle().setText(resId);\n\t\t}\n\t\tllTitle.getBtnRight().setVisibility(View.VISIBLE);\n\t\tresId = getStringRes(activity, \"ssdk_oks_share\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.getBtnRight().setText(resId);\n\t\t}\n\t\tllTitle.getBtnRight().setOnClickListener(this);\n\t\tRelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);\n\t\tlp.addRule(RelativeLayout.ALIGN_PARENT_TOP);\n\t\tlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);\n\t\tllTitle.setLayoutParams(lp);\n\n\t\treturn llTitle;\n\t}\n\n\t// page body\n\tprivate LinearLayout getPageBody() {\n\t\tllBody = new LinearLayout(getContext());\n\t\tllBody.setId(2);\n\t\tint resId = getBitmapRes(activity, \"ssdk_oks_edittext_back\");\n\t\tif (resId > 0) {\n\t\t\tllBody.setBackgroundResource(resId);\n\t\t}\n\t\tllBody.setOrientation(LinearLayout.VERTICAL);\n\t\tRelativeLayout.LayoutParams lpBody = new RelativeLayout.LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpBody.addRule(RelativeLayout.ALIGN_LEFT, llTitle.getId());\n\t\tlpBody.addRule(RelativeLayout.BELOW, llTitle.getId());\n\t\tlpBody.addRule(RelativeLayout.ALIGN_RIGHT, llTitle.getId());\n\t\tif (!dialogMode) {\n\t\t\tlpBody.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);\n\t\t}\n\t\tint dp_3 = dipToPx(getContext(), 3);\n\t\tlpBody.setMargins(dp_3, dp_3, dp_3, dp_3);\n\t\tllBody.setLayoutParams(lpBody);\n\n\t\tllBody.addView(getMainBody());\n\t\tllBody.addView(getSep());\n\t\tllBody.addView(getPlatformList());\n\n\t\treturn llBody;\n\t}\n\n\tprivate LinearLayout getMainBody() {\n\t\tLinearLayout llMainBody = new LinearLayout(getContext());\n\t\tllMainBody.setOrientation(LinearLayout.VERTICAL);\n\t\tLayoutParams lpMain = new LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);\n\t\tlpMain.weight = 1;\n\t\tint dp_4 = dipToPx(getContext(), 4);\n\t\tlpMain.setMargins(dp_4, dp_4, dp_4, dp_4);\n\t\tllMainBody.setLayoutParams(lpMain);\n\n\t\tLinearLayout llContent = new LinearLayout(getContext());\n\t\tLayoutParams lpContent = new LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);\n\t\tlpContent.weight = 1;\n\t\tllMainBody.addView(llContent, lpContent);\n\n\t\t// share content editor\n\t\tetContent = new EditText(getContext());\n\t\tetContent.setGravity(Gravity.LEFT | Gravity.TOP);\n\t\tetContent.setBackgroundDrawable(null);\n\t\tetContent.setText(String.valueOf(shareParamMap.get(\"text\")));\n\t\tetContent.addTextChangedListener(this);\n\t\tLayoutParams lpEt = new LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpEt.weight = 1;\n\t\tetContent.setLayoutParams(lpEt);\n\t\tllContent.addView(etContent);\n\n\t\tllContent.addView(getThumbView());\n\t\tllMainBody.addView(getBodyBottom());\n\n\t\treturn llMainBody;\n\t}\n\n\t// shared image container\n\tprivate RelativeLayout getThumbView() {\n\t\trlThumb = new RelativeLayout(getContext());\n\t\trlThumb.setId(1);\n\t\tint dp_82 = dipToPx(getContext(), 82);\n\t\tint dp_98 = dipToPx(getContext(), 98);\n\t\tLayoutParams lpThumb\n\t\t\t\t= new LayoutParams(dp_82, dp_98);\n\t\trlThumb.setLayoutParams(lpThumb);\n\n\t\tivImage = new ImageView(getContext());\n\t\tint resId = getBitmapRes(activity, \"ssdk_oks_btn_back_nor\");\n\t\tif (resId > 0) {\n\t\t\tivImage.setBackgroundResource(resId);\n\t\t}\n\t\tivImage.setScaleType(ScaleType.CENTER_INSIDE);\n\t\tivImage.setImageBitmap(image);\n\n\t\tint dp_4 = dipToPx(getContext(), 4);\n\t\tivImage.setPadding(dp_4, dp_4, dp_4, dp_4);\n\t\tint dp_74 = dipToPx(getContext(), 74);\n\t\tRelativeLayout.LayoutParams lpImage\n\t\t\t\t= new RelativeLayout.LayoutParams(dp_74, dp_74);\n\t\tint dp_16 = dipToPx(getContext(), 16);\n\t\tint dp_8 = dipToPx(getContext(), 8);\n\t\tlpImage.setMargins(0, dp_16, dp_8, 0);\n\t\tivImage.setLayoutParams(lpImage);\n\t\tivImage.setOnClickListener(new OnClickListener() {\n\t\t\tpublic void onClick(View v) {\n\t\t\t\tif (image != null && !image.isRecycled()) {\n\t\t\t\t\tPicViewer pv = new PicViewer();\n\t\t\t\t\tpv.setImageBitmap(image);\n\t\t\t\t\tpv.show(activity, null);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\trlThumb.addView(ivImage);\n\n\t\tint dp_24 = dipToPx(getContext(), 24);\n\t\tprogressBar = new ProgressBar(getContext());\n\t\tprogressBar.setPadding(dp_24, dp_24, dp_24, dp_24);\n\t\tRelativeLayout.LayoutParams pb\n\t\t\t= new RelativeLayout.LayoutParams(dp_74, dp_74);\n\t\tpb.setMargins(0, dp_16, dp_8, 0);\n\t\tprogressBar.setLayoutParams(pb);\n\t\trlThumb.addView(progressBar);\n\n\t\tButton btn = new Button(getContext());\n\t\tbtn.setOnClickListener(new OnClickListener() {\n\t\t\tpublic void onClick(View v) {\n\t\t\t\t// remove the photo to share\n\t\t\t\trlThumb.setVisibility(View.GONE);\n\t\t\t\tivPin.setVisibility(View.GONE);\n\t\t\t\tremoveImage(imgInfo);\n\t\t\t}\n\t\t});\n\t\tresId = getBitmapRes(activity, \"ssdk_oks_img_cancel\");\n\t\tif (resId > 0) {\n\t\t\tbtn.setBackgroundResource(resId);\n\t\t}\n\t\tint dp_20 = dipToPx(getContext(), 20);\n\t\tRelativeLayout.LayoutParams lpBtn\n\t\t\t\t= new RelativeLayout.LayoutParams(dp_20, dp_20);\n\t\tlpBtn.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);\n\t\tlpBtn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);\n\t\tbtn.setLayoutParams(lpBtn);\n\t\trlThumb.addView(btn);\n\n\t\tif(!haveImage()){\n\t\t\trlThumb.setVisibility(View.GONE);\n\t\t}\n\t\treturn rlThumb;\n\t}\n\n\tprivate void showThumb() {\n\t\tinitImageList(new ImageListResultsCallback() {\n\t\t\t@Override\n\t\t\tpublic void onFinish(ArrayList<ImageInfo> results) {\n\t\t\t\tif(results == null || results.size() == 0)\n\t\t\t\t\treturn;\n\t\t\t\t//支持多图\n\t\t\t\timgInfo = results.get(0);\n\t\t\t\timage = imgInfo.bitmap;\n\t\t\t\trlThumb.setVisibility(View.VISIBLE);\n\t\t\t\tivPin.setVisibility(View.VISIBLE);\n\t\t\t\tprogressBar.setVisibility(View.GONE);\n\t\t\t\tivImage.setImageBitmap(image);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate LinearLayout getBodyBottom() {\n\t\tLinearLayout llBottom = new LinearLayout(getContext());\n\t\tllBottom.setLayoutParams(new LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));\n\n\t\tLinearLayout line = getAtLine(platforms.get(0).getName());\n\t\tif (line != null) {\n\t\t\tllBottom.addView(line);\n\t\t}\n\n\t\t// Words counter\n\t\ttvCounter = new TextView(getContext());\n\t\ttvCounter.setText(String.valueOf(MAX_TEXT_COUNT));\n\t\ttvCounter.setTextColor(0xffcfcfcf);\n\t\ttvCounter.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\ttvCounter.setTypeface(Typeface.DEFAULT_BOLD);\n\t\tLayoutParams lpCounter = new LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpCounter.gravity = Gravity.CENTER_VERTICAL;\n\t\ttvCounter.setLayoutParams(lpCounter);\n\t\tllBottom.addView(tvCounter);\n\n\t\treturn llBottom;\n\t}\n\n\t// if platform selected form platform gridview is SinaWeibo,\n\t// TencentWeibo, Facebook, or Twitter, there will be a button\n\t// in the left-bottom of the page, which provides At-friends function\n\tprivate LinearLayout getAtLine(String platform) {\n\t\tif (!isShowAtUserLayout(platform)) {\n\t\t\treturn null;\n\t\t}\n\t\tLinearLayout llAt = new LinearLayout(getContext());\n\t\tLayoutParams lpAt = new LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpAt.rightMargin = dipToPx(getContext(), 4);\n\t\tlpAt.gravity = Gravity.LEFT | Gravity.BOTTOM;\n\t\tlpAt.weight = 1;\n\t\tllAt.setLayoutParams(lpAt);\n\t\tllAt.setOnClickListener(new OnClickListener() {\n\t\t\tpublic void onClick(View v) {\n\t\t\t\tif(platforms != null && platforms.size() > 0){\n\t\t\t\t\tFollowListPage subPage = new FollowListPage();\n\t\t\t\t\tsubPage.setPlatform(platforms.get(0));\n\t\t\t\t\tsubPage.showForResult(activity, null, EditPage.this);\n\t\t\t\t} else {\n\t\t\t\t\tint resId = getStringRes(activity, \"ssdk_oks_select_one_plat_at_least\");\n\t\t\t\t\tif (resId > 0) {\n\t\t\t\t\t\tToast.makeText(getContext(), resId, Toast.LENGTH_SHORT).show();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tTextView tvAt = new TextView(getContext());\n\t\tint resId = getBitmapRes(activity, \"ssdk_oks_btn_back_nor\");\n\t\tif (resId > 0) {\n\t\t\ttvAt.setBackgroundResource(resId);\n\t\t}\n\t\tint dp_32 = dipToPx(getContext(), 32);\n\t\ttvAt.setLayoutParams(new LayoutParams(dp_32, dp_32));\n\t\ttvAt.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\ttvAt.setText(getAtUserButtonText(platform));\n\t\tint dp_2 = dipToPx(getContext(), 2);\n\t\ttvAt.setPadding(0, 0, 0, dp_2);\n\t\ttvAt.setTypeface(Typeface.DEFAULT_BOLD);\n\t\ttvAt.setTextColor(0xff000000);\n\t\ttvAt.setGravity(Gravity.CENTER);\n\t\tllAt.addView(tvAt);\n\n\t\tTextView tvName = new TextView(getContext());\n\t\ttvName.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\ttvName.setTextColor(0xff000000);\n\t\tresId = getStringRes(activity, \"ssdk_oks_list_friends\");\n\t\tString text = getContext().getString(resId, getName(platform));\n\t\ttvName.setText(text);\n\t\tLayoutParams lpName = new LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpName.gravity = Gravity.CENTER_VERTICAL;\n\t\ttvName.setLayoutParams(lpName);\n\t\tllAt.addView(tvName);\n\n\t\treturn llAt;\n\t}\n\n\tprivate View getSep() {\n\t\tView vSep = new View(getContext());\n\t\tvSep.setBackgroundColor(0xff000000);\n\t\tint dp_1 = dipToPx(getContext(), 1);\n\t\tLayoutParams lpSep = new LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, dp_1);\n\t\tvSep.setLayoutParams(lpSep);\n\t\treturn vSep;\n\t}\n\n\t// platform logos\n\tprivate LinearLayout getPlatformList() {\n\t\tLinearLayout llToolBar = new LinearLayout(getContext());\n\t\tLayoutParams lpTb = new LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);\n\t\tllToolBar.setLayoutParams(lpTb);\n\n\t\tTextView tvShareTo = new TextView(getContext());\n\t\tint resId = getStringRes(activity, \"ssdk_oks_share_to\");\n\t\tif (resId > 0) {\n\t\t\ttvShareTo.setText(resId);\n\t\t}\n\t\ttvShareTo.setTextColor(0xffcfcfcf);\n\t\ttvShareTo.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\tint dp_9 = dipToPx(getContext(), 9);\n\t\tLayoutParams lpShareTo = new LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpShareTo.gravity = Gravity.CENTER_VERTICAL;\n\t\tlpShareTo.setMargins(dp_9, 0, 0, 0);\n\t\ttvShareTo.setLayoutParams(lpShareTo);\n\t\tllToolBar.addView(tvShareTo);\n\n\t\tHorizontalScrollView sv = new HorizontalScrollView(getContext());\n\t\tsv.setHorizontalScrollBarEnabled(false);\n\t\tsv.setHorizontalFadingEdgeEnabled(false);\n\t\tLayoutParams lpSv = new LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpSv.setMargins(dp_9, dp_9, dp_9, dp_9);\n\t\tsv.setLayoutParams(lpSv);\n\t\tllToolBar.addView(sv);\n\n\t\tllPlat = new LinearLayout(getContext());\n\t\tllPlat.setLayoutParams(new HorizontalScrollView.LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));\n\t\tsv.addView(llPlat);\n\n\t\treturn llToolBar;\n\t}\n\n\t// the pin\n\tprivate ImageView getImagePin() {\n\t\tivPin = new ImageView(getContext());\n\t\tint resId = getBitmapRes(activity, \"ssdk_oks_pin\");\n\t\tif (resId > 0) {\n\t\t\tivPin.setImageResource(resId);\n\t\t}\n\t\tint dp_80 = dipToPx(getContext(), 80);\n\t\tint dp_36 = dipToPx(getContext(), 36);\n\t\tRelativeLayout.LayoutParams lp\n\t\t\t\t= new RelativeLayout.LayoutParams(dp_80, dp_36);\n\t\tlp.topMargin = dipToPx(getContext(), 6);\n\t\tlp.addRule(RelativeLayout.ALIGN_TOP, llBody.getId());\n\t\tlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);\n\t\tivPin.setLayoutParams(lp);\n\t\tivPin.setVisibility(View.GONE);\n\n\t\treturn ivPin;\n\t}\n\n\tprivate void getBackground() {\n\t\tbackground = new ColorDrawable(DIM_COLOR);\n\t\tif (backgroundView != null) {\n\t\t\ttry {\n\t\t\t\tBitmap bgBm = captureView(backgroundView, backgroundView.getWidth(), backgroundView.getHeight());\n\t\t\t\tbgBm = blur(bgBm, 20, 8);\n\t\t\t\tBitmapDrawable blurBm = new BitmapDrawable(activity.getResources(), bgBm);\n\t\t\t\tbackground = new LayerDrawable(new Drawable[] {blurBm, background});\n\t\t\t} catch (Throwable e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate String getName(String platform) {\n\t\tif (platform == null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tint resId = getStringRes(getContext(), \"ssdk_\" + platform.toLowerCase());\n\t\treturn getContext().getString(resId);\n\t}\n\n\tpublic void onClick(View v) {\n\t\tif (v.equals(llTitle.getBtnBack())) {\n\t\t\tPlatform plat = null;\n\t\t\tfor (int i = 0; i < views.length; i++) {\n\t\t\t\tif (views[i].getVisibility() == View.INVISIBLE) {\n\t\t\t\t\tplat = platformList[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// a statistics of Cancel-sharing\n\t\t\tif (plat != null) {\n\t\t\t\tShareSDK.logDemoEvent(5, plat);\n\t\t\t}\n\t\t\tfinish();\n\t\t\treturn;\n\t\t}\n\n\t\tif (v.equals(llTitle.getBtnRight())) {\n\t\t\tString text = etContent.getText().toString();\n\t\t\tshareParamMap.put(\"text\", text);\n\n\t\t\tplatforms.clear();\n\t\t\tfor (int i = 0; i < views.length; i++) {\n\t\t\t\tif (views[i].getVisibility() != View.VISIBLE) {\n\t\t\t\t\tplatforms.add(platformList[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (platforms.size() > 0) {\n\t\t\t\tsetResultAndFinish();\n\t\t\t} else {\n\t\t\t\tint resId = getStringRes(activity, \"ssdk_oks_select_one_plat_at_least\");\n\t\t\t\tif (resId > 0) {\n\t\t\t\t\tToast.makeText(getContext(), resId, Toast.LENGTH_SHORT).show();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (v instanceof FrameLayout) {\n\t\t\t((FrameLayout) v).getChildAt(1).performClick();\n\t\t\treturn;\n\t\t}\n\n\t\tif (v.getVisibility() == View.INVISIBLE) {\n\t\t\tv.setVisibility(View.VISIBLE);\n\t\t} else {\n\t\t\tv.setVisibility(View.INVISIBLE);\n\t\t}\n\t}\n\n\t/** display platform list */\n\tpublic void afterPlatformListGot() {\n\t\tint size = platformList == null ? 0 : platformList.length;\n\t\tviews = new View[size];\n\n\t\tfinal int dp_24 = dipToPx(getContext(), 24);\n\t\tLayoutParams lpItem = new LayoutParams(dp_24, dp_24);\n\t\tfinal int dp_9 = dipToPx(getContext(), 9);\n\t\tlpItem.setMargins(0, 0, dp_9, 0);\n\t\tFrameLayout.LayoutParams lpMask = new FrameLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);\n\t\tlpMask.gravity = Gravity.LEFT | Gravity.TOP;\n\t\tint selection = 0;\n\t\tfor (int i = 0; i < size; i++) {\n\t\t\tFrameLayout fl = new FrameLayout(getContext());\n\t\t\tfl.setLayoutParams(lpItem);\n\t\t\tif (i >= size - 1) {\n\t\t\t\tfl.setLayoutParams(new LayoutParams(dp_24, dp_24));\n\t\t\t}\n\t\t\tllPlat.addView(fl);\n\t\t\tfl.setOnClickListener(this);\n\n\t\t\tImageView iv = new ImageView(getContext());\n\t\t\tiv.setScaleType(ScaleType.CENTER_INSIDE);\n\t\t\tiv.setImageBitmap(getPlatLogo(platformList[i]));\n\t\t\tiv.setLayoutParams(new FrameLayout.LayoutParams(\n\t\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));\n\t\t\tfl.addView(iv);\n\n\t\t\tviews[i] = new View(getContext());\n\t\t\tviews[i].setBackgroundColor(0xcfffffff);\n\t\t\tviews[i].setOnClickListener(this);\n\t\t\tString platformName = platformList[i].getName();\n\t\t\tfor(Platform plat : platforms) {\n\t\t\t\tif(platformName.equals(plat.getName())) {\n\t\t\t\t\tviews[i].setVisibility(View.INVISIBLE);\n\t\t\t\t\tselection = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tviews[i].setLayoutParams(lpMask);\n\t\t\tfl.addView(views[i]);\n\t\t}\n\n\t\tfinal int postSel = selection;\n\t\tUIHandler.sendEmptyMessageDelayed(0, 333, new Callback() {\n\t\t\tpublic boolean handleMessage(Message msg) {\n\t\t\t\tHorizontalScrollView hsv = (HorizontalScrollView)llPlat.getParent();\n\t\t\t\thsv.scrollTo(postSel * (dp_24 + dp_9), 0);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate Bitmap getPlatLogo(Platform plat) {\n\t\tif (plat == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tString name = plat.getName();\n\t\tif (name == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tString resName = \"ssdk_oks_logo_\" + plat.getName();\n\t\tint resId = getBitmapRes(activity, resName.toLowerCase());\n\t\tif(resId > 0) {\n\t\t\treturn BitmapFactory.decodeResource(activity.getResources(), resId);\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void beforeTextChanged(CharSequence s, int start, int count,\n\t\t\tint after) {\n\n\t}\n\n\tpublic void onTextChanged(CharSequence s, int start, int before, int count) {\n\t\tint remain = MAX_TEXT_COUNT - etContent.length();\n\t\ttvCounter.setText(String.valueOf(remain));\n\t\ttvCounter.setTextColor(remain > 0 ? 0xffcfcfcf : 0xffff0000);\n\t}\n\n\tpublic void afterTextChanged(Editable s) {\n\n\t}\n\n\tpublic void onResult(HashMap<String, Object> data) {\n\t\tString atText = getJoinSelectedUser(data);\n\t\tif(atText != null) {\n\t\t\tetContent.append(atText);\n\t\t}\n\t}\n\n\tprivate void hideSoftInput() {\n\t\ttry {\n\t\t\tInputMethodManager imm = (InputMethodManager) activity.getSystemService(\n\t\t\t\t\tContext.INPUT_METHOD_SERVICE);\n\t\t\timm.hideSoftInputFromWindow(etContent.getWindowToken(), 0);\n\t\t} catch (Throwable t) {\n\t\t\tt.printStackTrace();\n\t\t}\n\t}\n\n\tpublic boolean onFinish() {\n\t\thideSoftInput();\n\t\treturn super.onFinish();\n\t}\n\n\tpublic void onConfigurationChanged(Configuration newConfig) {\n\t\tint orientation = activity.getResources().getConfiguration().orientation;\n\t\tif (orientation == Configuration.ORIENTATION_LANDSCAPE) {\n\t\t\thideSoftInput();\n\t\t\tWindow win = activity.getWindow();\n\t\t\twin.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN\n\t\t\t\t\t| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);\n\t\t\trlPage.setBackgroundColor(DIM_COLOR);\n\t\t\trlPage.postDelayed(new Runnable() {\n\t\t\t\tpublic void run() {\n\t\t\t\t\tgetBackground();\n\t\t\t\t\trlPage.setBackgroundDrawable(background);\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t} else {\n\t\t\thideSoftInput();\n\t\t\tWindow win = activity.getWindow();\n\t\t\twin.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE\n\t\t\t\t\t| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);\n\t\t\trlPage.setBackgroundColor(DIM_COLOR);\n\t\t\trlPage.postDelayed(new Runnable() {\n\t\t\t\tpublic void run() {\n\t\t\t\t\tgetBackground();\n\t\t\t\t\trlPage.setBackgroundDrawable(background);\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/classic/FollowListPage.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.classic;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.graphics.Canvas;\nimport android.os.Handler.Callback;\nimport android.os.Message;\nimport android.util.TypedValue;\nimport android.view.Gravity;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.AdapterView;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.FrameLayout;\nimport android.widget.ImageView;\nimport android.widget.LinearLayout;\nimport android.widget.LinearLayout.LayoutParams;\nimport android.widget.ProgressBar;\nimport android.widget.TextView;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\n\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.PlatformActionListener;\nimport cn.sharesdk.framework.TitleLayout;\nimport com.mob.tools.gui.AsyncImageView;\nimport com.mob.tools.gui.BitmapProcessor;\nimport com.mob.tools.gui.PullToRefreshListAdapter;\nimport com.mob.tools.gui.PullToRefreshView;\nimport com.mob.tools.utils.UIHandler;\nimport cn.sharesdk.onekeyshare.FollowerListFakeActivity;\n\nimport static com.mob.tools.utils.R.dipToPx;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getBitmapRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\n\n/** 获取好友或关注列表 */\npublic class FollowListPage extends FollowerListFakeActivity implements OnClickListener, OnItemClickListener {\n\tprivate TitleLayout llTitle;\n\tprivate FollowAdapter adapter;\n\tprivate int lastPosition = -1;\n\n\tpublic void onCreate() {\n\t\tLinearLayout llPage = new LinearLayout(getContext());\n\t\tllPage.setBackgroundColor(0xfff5f5f5);\n\t\tllPage.setOrientation(LinearLayout.VERTICAL);\n\t\tactivity.setContentView(llPage);\n\n\t\t// 标题栏\n\t\tllTitle = new TitleLayout(getContext());\n\t\tint resId = getBitmapRes(getContext(), \"ssdk_oks_title_back\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.setBackgroundResource(resId);\n\t\t}\n\t\tllTitle.getBtnBack().setOnClickListener(this);\n\t\tresId = getStringRes(getContext(), \"ssdk_oks_multi_share\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.getTvTitle().setText(resId);\n\t\t}\n\t\tllTitle.getBtnRight().setVisibility(View.VISIBLE);\n\t\tresId = getStringRes(getContext(), \"ssdk_oks_finish\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.getBtnRight().setText(resId);\n\t\t}\n\t\tllTitle.getBtnRight().setOnClickListener(this);\n\t\tllTitle.setLayoutParams(new LinearLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));\n\t\tllPage.addView(llTitle);\n\n\t\tFrameLayout flPage = new FrameLayout(getContext());\n\t\tLinearLayout.LayoutParams lpFl = new LinearLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);\n\t\tlpFl.weight = 1;\n\t\tflPage.setLayoutParams(lpFl);\n\t\tllPage.addView(flPage);\n\n\t\t// 关注（或朋友）列表\n\t\tPullToRefreshView followList = new PullToRefreshView(getContext());\n\t\tFrameLayout.LayoutParams lpLv = new FrameLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);\n\t\tfollowList.setLayoutParams(lpLv);\n\t\tflPage.addView(followList);\n\t\tadapter = new FollowAdapter(followList);\n\t\tadapter.setPlatform(platform);\n\t\tfollowList.setAdapter(adapter);\n\t\tadapter.getListView().setOnItemClickListener(this);\n\n\t\tImageView ivShadow = new ImageView(getContext());\n\t\tresId = getBitmapRes(getContext(), \"ssdk_oks_title_shadow\");\n\t\tif (resId > 0) {\n\t\t\tivShadow.setBackgroundResource(resId);\n\t\t}\n\t\tFrameLayout.LayoutParams lpSd = new FrameLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);\n\t\tivShadow.setLayoutParams(lpSd);\n\t\tflPage.addView(ivShadow);\n\n\t\t// 请求数据\n\t\tfollowList.performPulling(true);\n\t}\n\n\tpublic void onClick(View v) {\n\t\tif (v.equals(llTitle.getBtnRight())) {\n\t\t\tArrayList<String> selected = new ArrayList<String>();\n\t\t\tfor (int i = 0, size = adapter.getCount(); i < size; i++) {\n\t\t\t\tif (adapter.getItem(i).checked) {\n\t\t\t\t\tselected.add(adapter.getItem(i).atName);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetResultForChecked(selected);\n\t\t}\n\n\t\tfinish();\n\t}\n\n\tpublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {\n\t\tString name = platform.getName();\n\t\tif (isRadioMode(name)) {\n\t\t\tif(lastPosition >= 0) {\n\t\t\t\tFollowing lastFollwing = adapter.getItem(lastPosition);\n\t\t\t\tlastFollwing.checked = false;\n\t\t\t}\n\t\t\tlastPosition  = position;\n\t\t}\n\t\tFollowing following = adapter.getItem(position);\n\t\tfollowing.checked = !following.checked;\n\t\tadapter.notifyDataSetChanged();\n\t}\n\n\tprivate static class FollowAdapter extends PullToRefreshListAdapter\n\t\t\timplements PlatformActionListener, Callback {\n\t\tprivate static final int FOLLOW_LIST_EMPTY = 2;\n\t\tprivate int curPage;\n\t\tprivate ArrayList<Following> follows;\n\t\tprivate HashMap<String, Boolean> map;\n\t\tprivate boolean hasNext;\n\t\tprivate Platform platform;\n\t\tprivate PRTHeader llHeader;\n\t\tprivate Bitmap bmChd;\n\t\tprivate Bitmap bmUnch;\n\n\t\tpublic FollowAdapter(PullToRefreshView view) {\n\t\t\tsuper(view);\n\t\t\tcurPage = -1;\n\t\t\thasNext = true;\n\t\t\tmap = new HashMap<String, Boolean>();\n\t\t\tfollows = new ArrayList<Following>();\n\n\t\t\tllHeader = new PRTHeader(getContext());\n\n\t\t\tint resId = getBitmapRes(getContext(), \"ssdk_oks_auth_follow_cb_chd\");\n\t\t\tif (resId > 0) {\n\t\t\t\tbmChd = BitmapFactory.decodeResource(view.getResources(), resId);\n\t\t\t}\n\t\t\tresId = getBitmapRes(getContext(), \"ssdk_oks_auth_follow_cb_unc\");\n\t\t\tif (resId > 0) {\n\t\t\t\tbmUnch = BitmapFactory.decodeResource(view.getResources(), resId);\n\t\t\t}\n\t\t}\n\n\t\tpublic void setPlatform(Platform platform) {\n\t\t\tthis.platform = platform;\n\t\t\tplatform.setPlatformActionListener(this);\n\t\t}\n\n\t\tprivate void next() {\n\t\t\tif (hasNext) {\n\t\t\t\tplatform.listFriend(15, curPage + 1, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic View getView(int position, View convertView, ViewGroup parent) {\n\t\t\tFollowListItem item = null;\n\t\t\tboolean simpleMode = \"FacebookMessenger\".equals(platform.getName());\n\t\t\tif (convertView == null) {\n\t\t\t\tLinearLayout llItem = new LinearLayout(parent.getContext());\n\t\t\t\titem = new FollowListItem();\n\t\t\t\tllItem.setTag(item);\n\t\t\t\tconvertView = llItem;\n\n\t\t\t\tint dp_52 = com.mob.tools.utils.R.dipToPx(getContext(), 52);\n\t\t\t\tint dp_10 = com.mob.tools.utils.R.dipToPx(parent.getContext(), 10);\n\t\t\t\tint dp_5 = com.mob.tools.utils.R.dipToPx(parent.getContext(), 5);\n\n\t\t\t\tif(!simpleMode) {\n\t\t\t\t\titem.aivIcon = new AsyncImageView(getContext());\n\t\t\t\t\tLinearLayout.LayoutParams lpIcon = new LinearLayout.LayoutParams(dp_52, dp_52);\n\t\t\t\t\tlpIcon.gravity = Gravity.CENTER_VERTICAL;\n\t\t\t\t\tlpIcon.setMargins(dp_10, dp_5, dp_10, dp_5);\n\t\t\t\t\titem.aivIcon.setLayoutParams(lpIcon);\n\t\t\t\t\tllItem.addView(item.aivIcon);\n\t\t\t\t}\n\n\t\t\t\tLinearLayout llText = new LinearLayout(parent.getContext());\n\t\t\t\tllText.setPadding(0, dp_10, dp_10, dp_10);\n\t\t\t\tllText.setOrientation(LinearLayout.VERTICAL);\n\t\t\t\tLinearLayout.LayoutParams lpText = new LinearLayout.LayoutParams(\n\t\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\t\tlpText.gravity = Gravity.CENTER_VERTICAL;\n\t\t\t\tlpText.weight = 1;\n\t\t\t\tllText.setLayoutParams(lpText);\n\t\t\t\tllItem.addView(llText);\n\n\t\t\t\titem.tvName = new TextView(parent.getContext());\n\t\t\t\titem.tvName.setTextColor(0xff000000);\n\t\t\t\titem.tvName.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\t\t\titem.tvName.setSingleLine();\n\t\t\t\tif(simpleMode) {\n\t\t\t\t\titem.tvName.setPadding(dp_10, 0, 0, 0);\n\t\t\t\t}\n\t\t\t\tllText.addView(item.tvName);\n\n\t\t\t\tif(!simpleMode) {\n\t\t\t\t\titem.tvSign = new TextView(parent.getContext());\n\t\t\t\t\titem.tvSign.setTextColor(0x7f000000);\n\t\t\t\t\titem.tvSign.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);\n\t\t\t\t\titem.tvSign.setSingleLine();\n\t\t\t\t\tllText.addView(item.tvSign);\n\t\t\t\t}\n\n\t\t\t\titem.ivCheck = new ImageView(parent.getContext());\n\t\t\t\titem.ivCheck.setPadding(0, 0, dp_10, 0);\n\t\t\t\tLinearLayout.LayoutParams lpCheck = new LinearLayout.LayoutParams(\n\t\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\t\tlpCheck.gravity = Gravity.CENTER_VERTICAL;\n\t\t\t\titem.ivCheck.setLayoutParams(lpCheck);\n\t\t\t\tllItem.addView(item.ivCheck);\n\t\t\t} else {\n\t\t\t\titem = (FollowListItem) convertView.getTag();\n\t\t\t}\n\n\t\t\tFollowing following = getItem(position);\n\t\t\titem.tvName.setText(following.screenName);\n\t\t\tif(!simpleMode) {\n\t\t\t\titem.tvSign.setText(following.description);\n\t\t\t}\n\t\t\titem.ivCheck.setImageBitmap(following.checked ? bmChd : bmUnch);\n\t\t\tif(!simpleMode) {\n\t\t\t\tif (isFling()) {\n\t\t\t\t\tBitmap bm = BitmapProcessor.getBitmapFromCache(following.icon);\n\t\t\t\t\tif (bm != null && !bm.isRecycled()) {\n\t\t\t\t\t\titem.aivIcon.setImageBitmap(bm);\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.aivIcon.execute(null, 0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\titem.aivIcon.execute(following.icon,0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (position == getCount() - 1) {\n\t\t\t\tnext();\n\t\t\t}\n\t\t\treturn convertView;\n\t\t}\n\n\t\tpublic Following getItem(int position) {\n\t\t\treturn follows.get(position);\n\t\t}\n\n\t\tpublic long getItemId(int position) {\n\t\t\treturn position;\n\t\t}\n\n\t\tpublic int getCount() {\n\t\t\treturn follows == null ? 0 : follows.size();\n\t\t}\n\n\t\tpublic View getHeaderView() {\n\t\t\treturn llHeader;\n\t\t}\n\n\t\tpublic void onPullDown(int percent) {\n\t\t\tllHeader.onPullDown(percent);\n\t\t}\n\n\t\tpublic void onRequest() {\n\t\t\tllHeader.onRequest();\n\t\t\tcurPage = -1;\n\t\t\thasNext = true;\n\t\t\tmap.clear();\n\t\t\tnext();\n\t\t}\n\n\t\tpublic void onCancel(Platform plat, int action) {\n\t\t\tUIHandler.sendEmptyMessage(-1, this);\n\t\t}\n\n\t\tpublic void onComplete(Platform plat, int action, HashMap<String, Object> res) {\n\t\t\tFollowersResult followersResult = parseFollowers(platform.getName(), res, map);\n\n\t\t\tif(followersResult == null) {\n\t\t\t\tUIHandler.sendEmptyMessage(FOLLOW_LIST_EMPTY, this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\thasNext = followersResult.hasNextPage;\n\t\t\tif (followersResult.list != null && followersResult.list.size() > 0) {\n\t\t\t\tcurPage++;\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = 1;\n\t\t\t\tmsg.obj = followersResult.list;\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t}\n\t\t}\n\n\t\tpublic void onError(Platform plat, int action, Throwable t) {\n\t\t\tt.printStackTrace();\n\t\t}\n\n\t\tpublic boolean handleMessage(Message msg) {\n\t\t\tif (msg.what < 0) {\n\t\t\t\t((Activity) getContext()).finish();\n\t\t\t} else if(msg.what == FOLLOW_LIST_EMPTY) {\n\t\t\t\tnotifyDataSetChanged();\n\t\t\t} else {\n\t\t\t\tif (curPage <= 0) {\n\t\t\t\t\tfollows.clear();\n\t\t\t\t}\n\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\tArrayList<Following> data = (ArrayList<Following>) msg.obj;\n\t\t\t\tfollows.addAll(data);\n\t\t\t\tnotifyDataSetChanged();\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic void onReversed() {\n\t\t\tsuper.onReversed();\n\t\t\tllHeader.reverse();\n\t\t}\n\n\t}\n\n\tprivate static class FollowListItem {\n\t\tpublic AsyncImageView aivIcon;\n\t\tpublic TextView tvName;\n\t\tpublic TextView tvSign;\n\t\tpublic ImageView ivCheck;\n\t}\n\n\tprivate static class PRTHeader extends LinearLayout {\n\t\tprivate TextView tvHeader;\n\t\tprivate RotateImageView ivArrow;\n\t\tprivate ProgressBar pbRefreshing;\n\n\t\tpublic PRTHeader(Context context) {\n\t\t\tsuper(context);\n\t\t\tsetOrientation(VERTICAL);\n\n\t\t\tLinearLayout llInner = new LinearLayout(context);\n\t\t\tLinearLayout.LayoutParams lpInner = new LinearLayout.LayoutParams(\n\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\tlpInner.gravity = Gravity.CENTER_HORIZONTAL;\n\t\t\taddView(llInner, lpInner);\n\n\t\t\tivArrow = new RotateImageView(context);\n\t\t\tint resId = getBitmapRes(context, \"ssdk_oks_ptr_ptr\");\n\t\t\tif (resId > 0) {\n\t\t\t\tivArrow.setImageResource(resId);\n\t\t\t}\n\t\t\tint dp_32 = dipToPx(context, 32);\n\t\t\tLayoutParams lpIv = new LayoutParams(dp_32, dp_32);\n\t\t\tlpIv.gravity = Gravity.CENTER_VERTICAL;\n\t\t\tllInner.addView(ivArrow, lpIv);\n\n\t\t\tpbRefreshing = new ProgressBar(context);\n\t\t\tllInner.addView(pbRefreshing, lpIv);\n\t\t\tpbRefreshing.setVisibility(View.GONE);\n\n\t\t\ttvHeader = new TextView(getContext());\n\t\t\ttvHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\t\ttvHeader.setGravity(Gravity.CENTER);\n\t\t\tint dp_10 = com.mob.tools.utils.R.dipToPx(getContext(), 10);\n\t\t\ttvHeader.setPadding(dp_10, dp_10, dp_10, dp_10);\n\t\t\ttvHeader.setTextColor(0xff000000);\n\t\t\tLayoutParams lpTv = new LayoutParams(\n\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\tlpTv.gravity = Gravity.CENTER_VERTICAL;\n\t\t\tllInner.addView(tvHeader, lpTv);\n\t\t}\n\n\t\tpublic void onPullDown(int percent) {\n\t\t\tif (percent > 100) {\n\t\t\t\tint degree = (percent - 100) * 180 / 20;\n\t\t\t\tif (degree > 180) {\n\t\t\t\t\tdegree = 180;\n\t\t\t\t}\n\t\t\t\tif (degree < 0) {\n\t\t\t\t\tdegree = 0;\n\t\t\t\t}\n\t\t\t\tivArrow.setRotation(degree);\n\t\t\t} else {\n\t\t\t\tivArrow.setRotation(0);\n\t\t\t}\n\n\t\t\tif (percent < 100) {\n\t\t\t\tint resId = getStringRes(getContext(), \"ssdk_oks_pull_to_refresh\");\n\t\t\t\tif (resId > 0) {\n\t\t\t\t\ttvHeader.setText(resId);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tint resId = getStringRes(getContext(), \"ssdk_oks_release_to_refresh\");\n\t\t\t\tif (resId > 0) {\n\t\t\t\t\ttvHeader.setText(resId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void onRequest() {\n\t\t\tivArrow.setVisibility(View.GONE);\n\t\t\tpbRefreshing.setVisibility(View.VISIBLE);\n\t\t\tint resId = getStringRes(getContext(), \"ssdk_oks_refreshing\");\n\t\t\tif (resId > 0) {\n\t\t\t\ttvHeader.setText(resId);\n\t\t\t}\n\t\t}\n\n\t\tpublic void reverse() {\n\t\t\tpbRefreshing.setVisibility(View.GONE);\n\t\t\tivArrow.setRotation(180);\n\t\t\tivArrow.setVisibility(View.VISIBLE);\n\t\t}\n\n\t}\n\n\tprivate static class RotateImageView extends ImageView {\n\t\tprivate int rotation;\n\n\t\tpublic RotateImageView(Context context) {\n\t\t\tsuper(context);\n\t\t}\n\n\t\tpublic void setRotation(int degree) {\n\t\t\trotation = degree;\n\t\t\tinvalidate();\n\t\t}\n\n\t\tprotected void onDraw(Canvas canvas) {\n\t\t\tcanvas.rotate(rotation, getWidth() / 2, getHeight() / 2);\n\t\t\tsuper.onDraw(canvas);\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/classic/PlatformGridView.java",
    "content": "/*\n * Offical Website:http://www.mob.com\n * Support QQ: 4006852216\n * Offical Wechat Account:ShareSDK   (We will inform you our updated news at the first time by Wechat, if we release a new version. If you get any problem, you can also contact us with Wechat, we will reply you within 24 hours.)\n *\n * Copyright (c) 2013 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.classic;\n\nimport static cn.sharesdk.framework.utils.ShareSDKR.getBitmapRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.List;\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.os.Build;\nimport android.os.Handler.Callback;\nimport android.os.Message;\nimport android.util.AttributeSet;\nimport android.util.TypedValue;\nimport android.view.Gravity;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.ImageView;\nimport android.widget.ImageView.ScaleType;\nimport android.widget.LinearLayout;\nimport android.widget.TextView;\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.ShareSDK;\nimport com.mob.tools.gui.ViewPagerAdapter;\nimport com.mob.tools.gui.ViewPagerClassic;\nimport com.mob.tools.utils.UIHandler;\nimport cn.sharesdk.onekeyshare.CustomerLogo;\n\n/** platform logo list gridview */\n@SuppressWarnings(\"deprecation\")\npublic class PlatformGridView extends LinearLayout implements\n\t\tOnClickListener, Callback {\n\tprivate static final int MIN_CLICK_INTERVAL = 1000;\n\tprivate static final int MSG_PLATFORM_LIST_GOT = 1;\n\t// grids in each line\n\tprivate int LINE_PER_PAGE;\n\t// lines in each page\n\tprivate int COLUMN_PER_LINE;\n\t// grids in each page\n\tprivate int PAGE_SIZE;\n\t// grids container\n\tprivate ViewPagerClassic pager;\n\t// indicators\n\tprivate ImageView[] points;\n\tprivate Bitmap grayPoint;\n\tprivate Bitmap bluePoint;\n\t// Determine whether don't jump editpage and share directly\n\tprivate boolean silent;\n\t// platforms\n\tprivate Platform[] platformList;\n\t// data to share\n\tprivate HashMap<String, Object> reqData;\n\tprivate PlatformListPage parent;\n\tprivate ArrayList<CustomerLogo> customers;\n\tprivate HashMap<String, String> hiddenPlatforms;\n\tprivate View bgView;\n\tprivate long lastClickTime;\n\n\tpublic PlatformGridView(Context context) {\n\t\tsuper(context);\n\t\tinit(context);\n\t}\n\n\tpublic PlatformGridView(Context context, AttributeSet attrs) {\n\t\tsuper(context, attrs);\n\t\tinit(context);\n\t}\n\n\tprivate void init(final Context context) {\n\t\tcalPageSize();\n\t\tsetOrientation(VERTICAL);\n\n\t\tpager = new ViewPagerClassic(context);\n\t\tdisableOverScrollMode(pager);\n\t\tpager.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));\n\t\taddView(pager);\n\n\t\t// in order to have a better UI effect, opening a thread request the list of platforms\n\t\tnew Thread() {\n\t\t\tpublic void run() {\n\t\t\t\ttry {\n\t\t\t\t\tplatformList = ShareSDK.getPlatformList();\n\t\t\t\t\tif (platformList == null) {\n\t\t\t\t\t\tplatformList = new Platform[0];\n\t\t\t\t\t}\n\t\t\t\t\tUIHandler.sendEmptyMessage(MSG_PLATFORM_LIST_GOT, PlatformGridView.this);\n\t\t\t\t} catch (Throwable t) {\n\t\t\t\t\tt.printStackTrace();\n\t\t\t\t}\n\t\t\t}\n\t\t}.start();\n\t}\n\n\tprivate void calPageSize() {\n\t\tfloat scrW = com.mob.tools.utils.R.getScreenWidth(getContext());\n\t\tfloat scrH = com.mob.tools.utils.R.getScreenHeight(getContext());\n\t\tfloat whR = scrW / scrH;\n\t\tif (whR < 0.63) {\n\t\t\tCOLUMN_PER_LINE = 3;\n\t\t\tLINE_PER_PAGE = 3;\n\t\t} else if (whR < 0.75) {\n\t\t\tCOLUMN_PER_LINE = 3;\n\t\t\tLINE_PER_PAGE = 2;\n\t\t} else {\n\t\t\tLINE_PER_PAGE = 1;\n\t\t\tif (whR >= 1.75) {\n\t\t\t\tCOLUMN_PER_LINE = 6;\n\t\t\t} else if (whR >= 1.5) {\n\t\t\t\tCOLUMN_PER_LINE = 5;\n\t\t\t} else if (whR >= 1.3) {\n\t\t\t\tCOLUMN_PER_LINE = 4;\n\t\t\t} else {\n\t\t\t\tCOLUMN_PER_LINE = 3;\n\t\t\t}\n\t\t}\n\t\tPAGE_SIZE = COLUMN_PER_LINE * LINE_PER_PAGE;\n\t}\n\n\tpublic boolean handleMessage(Message msg) {\n\t\tswitch (msg.what) {\n\t\t\tcase MSG_PLATFORM_LIST_GOT: {\n\t\t\t\tafterPlatformListGot();\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// initializes the girdview of platforms\n\tpublic void afterPlatformListGot() {\n\t\tPlatformAdapter adapter = new PlatformAdapter(this);\n\t\tpager.setAdapter(adapter);\n\t\tint pageCount = 0;\n\t\tif (platformList != null) {\n\t\t\tint cusSize = customers == null ? 0 : customers.size();\n\t\t\tint platSize = platformList == null ? 0 : platformList.length;\n\t\t\tint hideSize = hiddenPlatforms == null ? 0 : hiddenPlatforms.size();\n\t\t\tplatSize = platSize-hideSize;\n\t\t\tint size = platSize + cusSize;\n\t\t\tpageCount = size / PAGE_SIZE;\n\t\t\tif (size % PAGE_SIZE > 0) {\n\t\t\t\tpageCount++;\n\t\t\t}\n\t\t}\n\t\tpoints = new ImageView[pageCount];\n\t\tif (points.length <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tContext context = getContext();\n\t\tLinearLayout llPoints = new LinearLayout(context);\n\t\t// if the total number of pages exceeds 1, we set the page indicators\n\t\tllPoints.setVisibility(pageCount > 1 ? View.VISIBLE: View.GONE);\n\t\tLayoutParams lpLl = new LayoutParams(\n\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\tlpLl.gravity = Gravity.CENTER_HORIZONTAL;\n\t\tllPoints.setLayoutParams(lpLl);\n\t\taddView(llPoints);\n\n\t\tint dp_5 = com.mob.tools.utils.R.dipToPx(context, 5);\n\t\tint resId = getBitmapRes(getContext(), \"ssdk_oks_light_blue_point\");\n\t\tif (resId > 0) {\n\t\t\tgrayPoint = BitmapFactory.decodeResource(getResources(), resId);\n\t\t}\n\t\tresId = getBitmapRes(getContext(), \"ssdk_oks_blue_point\");\n\t\tif (resId > 0) {\n\t\t\tbluePoint = BitmapFactory.decodeResource(getResources(), resId);\n\t\t}\n\t\tfor (int i = 0; i < pageCount; i++) {\n\t\t\tpoints[i] = new ImageView(context);\n\t\t\tpoints[i].setScaleType(ScaleType.CENTER_INSIDE);\n\t\t\tpoints[i].setImageBitmap(grayPoint);\n\t\t\tLayoutParams lpIv = new LayoutParams(dp_5, dp_5);\n\t\t\tlpIv.setMargins(dp_5, dp_5, dp_5, 0);\n\t\t\tpoints[i].setLayoutParams(lpIv);\n\t\t\tllPoints.addView(points[i]);\n\t\t}\n\t\tint curPage = pager.getCurrentScreen();\n\t\tpoints[curPage].setImageBitmap(bluePoint);\n\t}\n\n\t/** after the screen rotates, this method will be called to refresh the list of gridviews */\n\tpublic void onConfigurationChanged() {\n\t\tint curFirst = pager.getCurrentScreen() * PAGE_SIZE;\n\t\tcalPageSize();\n\t\tint newPage = curFirst / PAGE_SIZE;\n\n\t\tremoveViewAt(1);\n\t\tafterPlatformListGot();\n\n\t\tpager.setCurrentScreen(newPage);\n\t}\n\n\tpublic void setData(HashMap<String, Object> data, boolean silent) {\n\t\treqData = data;\n\t\tthis.silent = silent;\n\t}\n\n\tpublic void setHiddenPlatforms(HashMap<String, String> hiddenPlatforms) {\n\t\tthis.hiddenPlatforms = hiddenPlatforms;\n\t}\n\n\t/** Set the Click event of the custom icon */\n\tpublic void setCustomerLogos(ArrayList<CustomerLogo> customers) {\n\t\tthis.customers = customers;\n\t}\n\n\tpublic void setEditPageBackground(View bgView) {\n\t\tthis.bgView = bgView;\n\t}\n\n\t/** Sets the callback page sharing operations */\n\tpublic void setParent(PlatformListPage parent) {\n\t\tthis.parent = parent;\n\t}\n\n\tpublic void onClick(View v) {\n\t\tlong time = System.currentTimeMillis();\n\t\tif (time - lastClickTime < MIN_CLICK_INTERVAL) {\n\t\t\treturn;\n\t\t}\n\t\tlastClickTime = time;\n\n\t\tArrayList<Object> platforms = new ArrayList<Object>(1);\n\t\tplatforms.add(v.getTag());\n\t\tparent.onPlatformIconClick(v, platforms);\n\t}\n\n\t// Disable the flashing effect when viewpages sliding to left/right edge\n\tprivate void disableOverScrollMode(View view) {\n\t\tif (Build.VERSION.SDK_INT < 9) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tMethod m = View.class.getMethod(\"setOverScrollMode\",\n\t\t\t\t\tnew Class[] { Integer.TYPE });\n\t\t\tm.setAccessible(true);\n\t\t\tm.invoke(view, new Object[] { Integer.valueOf(2) });\n\t\t} catch (Throwable t) {\n\t\t\tt.printStackTrace();\n\t\t}\n\t}\n\n\t/** gridview adapter */\n\tprivate static class PlatformAdapter extends ViewPagerAdapter {\n\t\tprivate GridView[] girds;\n\t\tprivate List<Object> logos;\n\t\tprivate OnClickListener callback;\n\t\tprivate int lines;\n\t\tprivate PlatformGridView platformGridView;\n\n\t\tpublic PlatformAdapter(PlatformGridView platformGridView) {\n\t\t\tthis.platformGridView = platformGridView;\n\t\t\tlogos = new ArrayList<Object>();\n\t\t\tPlatform[] platforms = platformGridView.platformList;\n\t\t\tHashMap<String, String> hiddenPlatforms = platformGridView.hiddenPlatforms;\n\t\t\tif (platforms != null) {\n\t\t\t\tif (hiddenPlatforms != null && hiddenPlatforms.size() > 0) {\n\t\t\t\t\tArrayList<Platform> ps = new ArrayList<Platform>();\n\t\t\t\t\tfor (Platform p : platforms) {\n\t\t\t\t\t\tif (hiddenPlatforms.containsKey(p.getName())) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tps.add(p);\n\t\t\t\t\t}\n\n\t\t\t\t\tplatforms = new Platform[ps.size()];\n\t\t\t\t\tfor (int i = 0; i < platforms.length; i++) {\n\t\t\t\t\t\tplatforms[i] = ps.get(i);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlogos.addAll(Arrays.asList(platforms));\n\t\t\t}\n\t\t\tArrayList<CustomerLogo> customers = platformGridView.customers;\n\t\t\tif (customers != null) {\n\t\t\t\tlogos.addAll(customers);\n\t\t\t}\n\t\t\tthis.callback = platformGridView;\n\t\t\tgirds = null;\n\n\t\t\tif (logos != null) {\n\t\t\t\tint size = logos.size();\n\t\t\t\tint PAGE_SIZE = platformGridView.PAGE_SIZE;\n\t\t\t\tint pageCount = size / PAGE_SIZE;\n\t\t\t\tif (size % PAGE_SIZE > 0) {\n\t\t\t\t\tpageCount++;\n\t\t\t\t}\n\t\t\t\tgirds = new GridView[pageCount];\n\t\t\t}\n\t\t}\n\n\t\tpublic int getCount() {\n\t\t\treturn girds == null ? 0 : girds.length;\n\t\t}\n\n\t\tpublic View getView(int position, View convertView, ViewGroup parent) {\n\t\t\tif (girds[position] == null) {\n\t\t\t\tint pageSize = platformGridView.PAGE_SIZE;\n\t\t\t\tint curSize = pageSize * position;\n\t\t\t\tint listSize = logos == null ? 0 : logos.size();\n\t\t\t\tif (curSize + pageSize > listSize) {\n\t\t\t\t\tpageSize = listSize - curSize;\n\t\t\t\t}\n\t\t\t\tObject[] gridBean = new Object[pageSize];\n\t\t\t\tfor (int i = 0; i < pageSize; i++) {\n\t\t\t\t\tgridBean[i] = logos.get(curSize + i);\n\t\t\t\t}\n\n\t\t\t\tif (position == 0) {\n\t\t\t\t\tint COLUMN_PER_LINE = platformGridView.COLUMN_PER_LINE;\n\t\t\t\t\tlines = gridBean.length / COLUMN_PER_LINE;\n\t\t\t\t\tif (gridBean.length % COLUMN_PER_LINE > 0) {\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tgirds[position] = new GridView(this);\n\t\t\t\tgirds[position].setData(lines, gridBean);\n\t\t\t}\n\n\t\t\treturn girds[position];\n\t\t}\n\n\t\t/** This method will be called after sliding the gridview */\n\t\tpublic void onScreenChange(int currentScreen, int lastScreen) {\n\t\t\tImageView[] points = platformGridView.points;\n\t\t\tfor (int i = 0; i < points.length; i++) {\n\t\t\t\tpoints[i].setImageBitmap(platformGridView.grayPoint);\n\t\t\t}\n\n\t\t\tpoints[currentScreen].setImageBitmap(platformGridView.bluePoint);\n\t\t}\n\n\t}\n\n\t/** a simple gridview */\n\tprivate static class GridView extends LinearLayout {\n\t\tprivate Object[] beans;\n\t\tprivate OnClickListener callback;\n\t\tprivate int lines;\n\t\tprivate PlatformAdapter platformAdapter;\n\n\t\tpublic GridView(PlatformAdapter platformAdapter) {\n\t\t\tsuper(platformAdapter.platformGridView.getContext());\n\t\t\tthis.platformAdapter = platformAdapter;\n\t\t\tthis.callback = platformAdapter.callback;\n\t\t}\n\n\t\tpublic void setData(int lines, Object[] beans) {\n\t\t\tthis.lines = lines;\n\t\t\tthis.beans = beans;\n\t\t\tinit();\n\t\t}\n\n\t\tprivate void init() {\n\t\t\tint dp_5 = com.mob.tools.utils.R.dipToPx(getContext(), 5);\n\t\t\tsetPadding(0, dp_5, 0, dp_5);\n\t\t\tsetOrientation(VERTICAL);\n\n\t\t\tint size = beans == null ? 0 : beans.length;\n\t\t\tint COLUMN_PER_LINE = platformAdapter.platformGridView.COLUMN_PER_LINE;\n\t\t\tint lineSize = size / COLUMN_PER_LINE;\n\t\t\tif (size % COLUMN_PER_LINE > 0) {\n\t\t\t\tlineSize++;\n\t\t\t}\n\t\t\tLayoutParams lp = new LayoutParams(\n\t\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);\n\t\t\tlp.weight = 1;\n\t\t\tfor (int i = 0; i < lines; i++) {\n\t\t\t\tLinearLayout llLine = new LinearLayout(getContext());\n\t\t\t\tllLine.setLayoutParams(lp);\n\t\t\t\tllLine.setPadding(dp_5, 0, dp_5, 0);\n\t\t\t\taddView(llLine);\n\n\t\t\t\tif (i >= lineSize) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (int j = 0; j < COLUMN_PER_LINE; j++) {\n\t\t\t\t\tfinal int index = i * COLUMN_PER_LINE + j;\n\t\t\t\t\tif (index >= size) {\n\t\t\t\t\t\tLinearLayout llItem = new LinearLayout(getContext());\n\t\t\t\t\t\tllItem.setLayoutParams(lp);\n\t\t\t\t\t\tllLine.addView(llItem);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tfinal LinearLayout llItem = getView(index, callback, getContext());\n\t\t\t\t\tllItem.setTag(beans[index]);\n\t\t\t\t\tllItem.setLayoutParams(lp);\n\t\t\t\t\tllLine.addView(llItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate LinearLayout getView(int position, OnClickListener ocL, Context context) {\n\t\t\tBitmap logo;\n\t\t\tString label;\n\t\t\tOnClickListener listener;\n\t\t\tif (beans[position] instanceof Platform) {\n\t\t\t\tlogo = getIcon((Platform) beans[position]);\n\t\t\t\tlabel = getName((Platform) beans[position]);\n\t\t\t\tlistener = ocL;\n\t\t\t} else {\n\t\t\t\tlogo = ((CustomerLogo) beans[position]).enableLogo;\n\t\t\t\tlabel = ((CustomerLogo) beans[position]).label;\n\t\t\t\tlistener = ocL;\n\t\t\t}\n\n\t\t\tLinearLayout ll = new LinearLayout(context);\n\t\t\tll.setOrientation(LinearLayout.VERTICAL);\n\n\t\t\tImageView iv = new ImageView(context);\n\t\t\tint dp_5 = com.mob.tools.utils.R.dipToPx(context, 5);\n\t\t\tiv.setPadding(dp_5, dp_5, dp_5, dp_5);\n\t\t\tiv.setScaleType(ScaleType.CENTER_INSIDE);\n\t\t\tLayoutParams lpIv = new LayoutParams(\n\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\tlpIv.setMargins(dp_5, dp_5, dp_5, dp_5);\n\t\t\tlpIv.gravity = Gravity.CENTER_HORIZONTAL;\n\t\t\tiv.setLayoutParams(lpIv);\n\t\t\tiv.setImageBitmap(logo);\n\t\t\tll.addView(iv);\n\n\t\t\tTextView tv = new TextView(context);\n\t\t\ttv.setTextColor(0xff000000);\n\t\t\ttv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);\n\t\t\ttv.setSingleLine();\n\t\t\ttv.setIncludeFontPadding(false);\n\t\t\tLayoutParams lpTv = new LayoutParams(\n\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\tlpTv.gravity = Gravity.CENTER_HORIZONTAL;\n\t\t\tlpTv.weight = 1;\n\t\t\tlpTv.setMargins(dp_5, 0, dp_5, dp_5);\n\t\t\ttv.setLayoutParams(lpTv);\n\t\t\ttv.setText(label);\n\t\t\tll.addView(tv);\n\t\t\tll.setOnClickListener(listener);\n\n\t\t\treturn ll;\n\t\t}\n\n\t\tprivate Bitmap getIcon(Platform plat) {\n\t\t\tif (plat == null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tString name = plat.getName();\n\t\t\tif (name == null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tString resName = \"logo_\" + plat.getName();\n\t\t\tint resId = getBitmapRes(getContext(), resName.toLowerCase());\n\t\t\treturn BitmapFactory.decodeResource(getResources(), resId);\n\t\t}\n\n\t\tprivate String getName(Platform plat) {\n\t\t\tif (plat == null) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tString name = plat.getName();\n\t\t\tif (name == null) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tint resId = getStringRes(getContext(), plat.getName().toLowerCase());\n\t\t\tif (resId > 0) {\n\t\t\t\treturn getContext().getString(resId);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/classic/PlatformListPage.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.classic;\n\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getBitmapRes;\n\nimport java.util.ArrayList;\n\nimport android.content.res.Configuration;\nimport android.graphics.drawable.ColorDrawable;\nimport android.util.TypedValue;\nimport android.view.Gravity;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.animation.Animation;\nimport android.view.animation.TranslateAnimation;\nimport android.widget.Button;\nimport android.widget.FrameLayout;\nimport android.widget.LinearLayout;\nimport cn.sharesdk.onekeyshare.PlatformListFakeActivity;\n\npublic class PlatformListPage extends PlatformListFakeActivity implements View.OnClickListener {\n\t// page container\n\tprivate FrameLayout flPage;\n\t// gridview of platform list\n\tprivate PlatformGridView grid;\n\t// cancel button\n\tprivate Button btnCancel;\n\t// sliding up animation\n\tprivate Animation animShow;\n\t// sliding down animation\n\tprivate Animation animHide;\n\tprivate boolean finishing;\n\tprivate LinearLayout llPage;\n\n\tpublic void onCreate() {\n\t\tsuper.onCreate();\n\n\t\tfinishing = false;\n\t\tinitPageView();\n\t\tinitAnim();\n\t\tactivity.setContentView(flPage);\n\n\t\t// set the data for platform gridview\n\t\tgrid.setData(shareParamsMap, silent);\n\t\tgrid.setHiddenPlatforms(hiddenPlatforms);\n\t\tgrid.setCustomerLogos(customerLogos);\n\t\tgrid.setParent(this);\n\t\tbtnCancel.setOnClickListener(this);\n\n\t\t// display gridviews\n\t\tllPage.clearAnimation();\n\t\tllPage.startAnimation(animShow);\n\t}\n\n\tprivate void initPageView() {\n\t\tflPage = new FrameLayout(getContext());\n\t\tflPage.setOnClickListener(this);\n\t\tflPage.setBackgroundDrawable(new ColorDrawable(0x55000000));\n\n\t\t// container of the platform gridview\n\t\tllPage = new LinearLayout(getContext()) {\n\t\t\tpublic boolean onTouchEvent(MotionEvent event) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\t\tllPage.setOrientation(LinearLayout.VERTICAL);\n\t\tllPage.setBackgroundDrawable(new ColorDrawable(0xffffffff));\n\t\tFrameLayout.LayoutParams lpLl = new FrameLayout.LayoutParams(\n\t\t\t\tFrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);\n\t\tlpLl.gravity = Gravity.BOTTOM;\n\t\tllPage.setLayoutParams(lpLl);\n\t\tflPage.addView(llPage);\n\n\t\t// gridview\n\t\tgrid = new PlatformGridView(getContext());\n\t\tgrid.setEditPageBackground(getBackgroundView());\n\t\tLinearLayout.LayoutParams lpWg = new LinearLayout.LayoutParams(\n\t\t\t\tLinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);\n\t\tgrid.setLayoutParams(lpWg);\n\t\tllPage.addView(grid);\n\n\t\t// cancel button\n\t\tbtnCancel = new Button(getContext());\n\t\tbtnCancel.setTextColor(0xff3a65ff);\n\t\tbtnCancel.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);\n\t\tint resId = getStringRes(getContext(), \"ssdk_oks_cancel\");\n\t\tif (resId > 0) {\n\t\t\tbtnCancel.setText(resId);\n\t\t}\n\t\tbtnCancel.setPadding(0, 0, 0, com.mob.tools.utils.R.dipToPx(getContext(), 5));\n\n\t\tresId = getBitmapRes(getContext(), \"ssdk_oks_classic_platform_corners_bg\");\n\t\tif(resId > 0){\n\t\t\tbtnCancel.setBackgroundResource(resId);\n\t\t}else {\n\t\t    btnCancel.setBackgroundDrawable(new ColorDrawable(0xffffffff));\n\t\t}\n\n\t\tLinearLayout.LayoutParams lpBtn = new LinearLayout.LayoutParams(\n\t\t\t\tLinearLayout.LayoutParams.MATCH_PARENT, com.mob.tools.utils.R.dipToPx(getContext(), 45));\n\t\tint dp_10 = com.mob.tools.utils.R.dipToPx(getContext(), 10);\n\t\tlpBtn.setMargins(dp_10, dp_10, dp_10, dp_10);\n\t\tbtnCancel.setLayoutParams(lpBtn);\n\t\tllPage.addView(btnCancel);\n\t}\n\n\tprivate void initAnim() {\n\t\tanimShow = new TranslateAnimation(\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 0,\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 0,\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 1,\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 0);\n\t\tanimShow.setDuration(300);\n\n\t\tanimHide = new TranslateAnimation(\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 0,\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 0,\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 0,\n\t\t\t\tAnimation.RELATIVE_TO_SELF, 1);\n\t\tanimHide.setDuration(300);\n\t}\n\n\tpublic void onConfigurationChanged(Configuration newConfig) {\n\t\tif (grid != null) {\n\t\t\tgrid.onConfigurationChanged();\n\t\t}\n\t}\n\n\tpublic boolean onFinish() {\n\t\tif (finishing) {\n\t\t\treturn super.onFinish();\n\t\t}\n\n\t\tif (animHide == null) {\n\t\t\tfinishing = true;\n\t\t\treturn false;\n\t\t}\n\n\t\tfinishing = true;\n\t\tanimHide.setAnimationListener(new Animation.AnimationListener() {\n\t\t\tpublic void onAnimationStart(Animation animation) {\n\n\t\t\t}\n\n\t\t\tpublic void onAnimationRepeat(Animation animation) {\n\n\t\t\t}\n\n\t\t\tpublic void onAnimationEnd(Animation animation) {\n\t\t\t\tflPage.setVisibility(View.GONE);\n\t\t\t\tfinish();\n\t\t\t}\n\t\t});\n\t\tllPage.clearAnimation();\n\t\tllPage.startAnimation(animHide);\n\t\t//中断finish操作\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void onClick(View v) {\n\t\tif (v.equals(flPage) || v.equals(btnCancel)) {\n\t\t\tsetCanceled(true);\n\t\t\tfinish();\n\t\t}\n\t}\n\n\tpublic void onPlatformIconClick(View v, ArrayList<Object> platforms) {\n\t\tonShareButtonClick(v, platforms);\n\t}\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/skyblue/EditPage.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.skyblue;\n\nimport android.text.Editable;\nimport android.text.TextWatcher;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.EditText;\nimport android.widget.HorizontalScrollView;\nimport android.widget.ImageView;\nimport android.widget.LinearLayout;\nimport android.widget.RelativeLayout;\nimport android.widget.TextView;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\n\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.ShareSDK;\nimport cn.sharesdk.onekeyshare.EditPageFakeActivity;\nimport cn.sharesdk.onekeyshare.PicViewer;\n\nimport static cn.sharesdk.framework.utils.ShareSDKR.getIdRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getLayoutRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\n\n/** 执行图文分享的页面，此页面不支持微信平台的分享 */\npublic class EditPage extends EditPageFakeActivity implements OnClickListener, TextWatcher {\n\tprivate static final int MAX_TEXT_COUNT = 140;\n\n\t// 字数计算器\n\tprivate TextView textCounterTextView;\n\tprivate EditText titleEditText;\n\tprivate EditText textEditText;\n\n\tpublic void onCreate() {\n\t\tif (shareParamMap == null || platforms == null) {\n\t\t\tfinish();\n\t\t\treturn;\n\t\t}\n\n\t\tactivity.setContentView(getLayoutRes(activity, \"ssdk_oks_skyblue_editpage\"));\n\t\tinitView();\n\t}\n\n\tprivate void initView() {\n\t\tif(!dialogMode) {\n\t\t\tRelativeLayout mainRelLayout = (RelativeLayout)findViewByResName(\"mainRelLayout\");\n\t\t\tRelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) mainRelLayout.getLayoutParams();\n\t\t\tlp.setMargins(0,0,0,0);\n\t\t\tlp.height = RelativeLayout.LayoutParams.MATCH_PARENT;\n\t\t\tmainRelLayout.setLayoutParams(lp);\n\t\t}\n\t\tinitTitleView();\n\t\tinitBodyView();\n\t\tinitImageListView();\n\t}\n\n\tprivate void initTitleView() {\n\t\tView backImageView = findViewByResName(\"backImageView\");\n\t\tbackImageView.setTag(\"close\");\n\t\tbackImageView.setOnClickListener(this);\n\n\t\tView okImageView = findViewByResName(\"okImageView\");\n\t\tokImageView.setTag(\"ok\");\n\t\tokImageView.setOnClickListener(this);\n\t}\n\n\tprivate void initBodyView() {\n\t\tView closeImageView = findViewByResName(\"closeImageView\");\n\t\tcloseImageView.setTag(\"close\");\n\t\tcloseImageView.setOnClickListener(this);\n\n\t\tif(shareParamMap.containsKey(\"title\")) {\n\t\t\ttitleEditText = (EditText) findViewByResName(\"titleEditText\");\n\t\t\ttitleEditText.setText(String.valueOf(shareParamMap.get(\"title\")));\n\t\t}\n\n\t\ttextCounterTextView = (TextView) findViewByResName(\"textCounterTextView\");\n\t\ttextCounterTextView.setText(String.valueOf(MAX_TEXT_COUNT));\n\n\t\ttextEditText = (EditText) findViewByResName(\"textEditText\");\n\t\ttextEditText.addTextChangedListener(this);\n\t\ttextEditText.setText(String.valueOf(shareParamMap.get(\"text\")));\n\n\t\tinitAtUserView();\n\t}\n\n\tprivate void initAtUserView() {\n\t\tLinearLayout atLayout = (LinearLayout) findViewByResName(\"atLayout\");\n\t\tfor(Platform platform : platforms) {\n\t\t\tString platformName = platform.getName();\n\t\t\tif (isShowAtUserLayout(platformName)) {\n\t\t\t\tView view = LayoutInflater.from(activity).inflate(getLayoutRes(activity, \"ssdk_oks_skyblue_editpage_at_layout\"), null);\n\t\t\t\tTextView atDescTextView = (TextView) view.findViewById(getIdRes(activity, \"atDescTextView\"));\n\t\t\t\tTextView atTextView = (TextView) view.findViewById(getIdRes(activity, \"atTextView\"));\n\n\t\t\t\tOnClickListener atBtnClickListener = new OnClickListener() {\n\t\t\t\t\tpublic void onClick(View v) {\n\t\t\t\t\t\tFollowListPage subPage = new FollowListPage();\n\t\t\t\t\t\tsubPage.setPlatform((Platform) v.getTag());\n\t\t\t\t\t\tsubPage.showForResult(activity, null, EditPage.this);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tatTextView.setTag(platform);\n\t\t\t\tatTextView.setOnClickListener(atBtnClickListener);\n\t\t\t\tatDescTextView.setTag(platform);\n\t\t\t\tatDescTextView.setOnClickListener(atBtnClickListener);\n\n\t\t\t\tatTextView.setText(getAtUserButtonText(platformName));\n\t\t\t\tatDescTextView.setText(getContext().getString(getStringRes(activity, \"ssdk_oks_list_friends\"), getLogoName(platformName)));\n\n\t\t\t\tatLayout.addView(view);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tprivate void initImageListView() {\n\t\tfinal HorizontalScrollView hScrollView = (HorizontalScrollView) findViewByResName(\"hScrollView\");\n\t\tImageListResultsCallback callback = new ImageListResultsCallback() {\n\n\t\t\t@Override\n\t\t\tpublic void onFinish(ArrayList<ImageInfo> results) {\n\t\t\t\tif(results == null)\n\t\t\t\t\treturn;\n\t\t\t\tLinearLayout layout = (LinearLayout) findViewByResName(\"imagesLinearLayout\");\n\t\t\t\tfor(ImageInfo imageInfo : results) {\n\t\t\t\t\tif(imageInfo.bitmap == null)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tlayout.addView(makeImageItemView(imageInfo));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tif(!initImageList(callback)) {\n\t\t\thScrollView.setVisibility(View.GONE);\n\t\t}\n\n\t}\n\n\tprivate View makeImageItemView(final ImageInfo imageInfo) {\n\t\tfinal View view = LayoutInflater.from(activity).inflate(getLayoutRes(activity, \"ssdk_oks_skyblue_editpage_inc_image_layout\"), null);\n\n\t\tImageView imageView = (ImageView) view.findViewById(getIdRes(activity, \"imageView\"));\n\t\timageView.setImageBitmap(imageInfo.bitmap);\n\t\timageView.setOnClickListener(new OnClickListener() {\n\t\t\t@Override\n\t\t\tpublic void onClick(View view) {\n\t\t\t\tPicViewer pv = new PicViewer();\n\t\t\t\tpv.setImageBitmap(imageInfo.bitmap);\n\t\t\t\tpv.show(activity, null);\n\t\t\t}\n\t\t});\n\n\t\tView removeBtn = view.findViewById(getIdRes(activity, \"imageRemoveBtn\"));\n\t\tremoveBtn.setTag(imageInfo);\n\t\tremoveBtn.setOnClickListener(new OnClickListener() {\n\t\t\t@Override\n\t\t\tpublic void onClick(View v) {\n\t\t\t\tview.setVisibility(View.GONE);\n\t\t\t\tremoveImage((ImageInfo) v.getTag());\n\t\t\t}\n\t\t});\n\n\t\treturn view;\n\t}\n\n\tpublic void onClick(View v) {\n\t\tif(v.getTag() == null)\n\t\t\treturn;\n\t\tString tag = (String) v.getTag();\n\t\tif (tag.equals(\"close\")) {\n\t\t\t// 取消分享的统计\n\t\t\tfor(Platform plat : platforms) {\n\t\t\t\tShareSDK.logDemoEvent(5, plat);\n\t\t\t}\n\t\t\tfinish();\n\t\t\treturn;\n\t\t}\n\n\t\tif (tag.equals(\"ok\")) {\n\t\t\tonShareButtonClick(v);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate void onShareButtonClick(View v) {\n\t\tif(shareParamMap.containsKey(\"title\")) {\n\t\t\tString title = titleEditText.getText().toString().trim();\n\t\t\tshareParamMap.put(\"title\", title);\n\t\t}\n\n\t\tString text = textEditText.getText().toString().trim();\n\t\tshareParamMap.put(\"text\", text);\n\n\t\tsetResultAndFinish();\n\t}\n\n\tpublic void beforeTextChanged(CharSequence s, int start, int count,\n\t\t\tint after) {\n\n\t}\n\n\tpublic void onTextChanged(CharSequence s, int start, int before, int count) {\n\t\tint remain = MAX_TEXT_COUNT - textEditText.length();\n\t\ttextCounterTextView.setText(String.valueOf(remain));\n\t\ttextCounterTextView.setTextColor(remain > 0 ? 0xffcfcfcf : 0xffff0000);\n\t}\n\n\tpublic void afterTextChanged(Editable s) {\n\n\t}\n\n\tpublic void onResult(HashMap<String, Object> data) {\n\t\tString atText = getJoinSelectedUser(data);\n\t\tif(atText != null) {\n\t\t\ttextEditText.append(atText);\n\t\t}\n\t}\n\n\tpublic boolean onFinish() {\n\t\ttextCounterTextView = null;\n\t\ttextEditText = null;\n\t\ttitleEditText = null;\n\t\treturn super.onFinish();\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/skyblue/FollowListPage.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.skyblue;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.graphics.Canvas;\nimport android.os.Handler.Callback;\nimport android.os.Message;\nimport android.util.TypedValue;\nimport android.view.Gravity;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.AdapterView;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.FrameLayout;\nimport android.widget.ImageView;\nimport android.widget.LinearLayout;\nimport android.widget.LinearLayout.LayoutParams;\nimport android.widget.ProgressBar;\nimport android.widget.TextView;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\n\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.PlatformActionListener;\nimport cn.sharesdk.framework.TitleLayout;\nimport com.mob.tools.gui.AsyncImageView;\nimport com.mob.tools.gui.BitmapProcessor;\nimport com.mob.tools.gui.PullToRefreshListAdapter;\nimport com.mob.tools.gui.PullToRefreshView;\nimport com.mob.tools.utils.UIHandler;\nimport cn.sharesdk.onekeyshare.FollowerListFakeActivity;\n\nimport static com.mob.tools.utils.R.dipToPx;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getBitmapRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\n\n/** 获取好友或关注列表 */\npublic class FollowListPage extends FollowerListFakeActivity implements OnClickListener, OnItemClickListener {\n\tprivate TitleLayout llTitle;\n\tprivate FollowAdapter adapter;\n\tprivate int lastPosition = -1;\n\n\n\tpublic void onCreate() {\n\t\tLinearLayout llPage = new LinearLayout(getContext());\n\t\tllPage.setBackgroundColor(0xfff5f5f5);\n\t\tllPage.setOrientation(LinearLayout.VERTICAL);\n\t\tactivity.setContentView(llPage);\n\n\t\t// 标题栏\n\t\tllTitle = new TitleLayout(getContext());\n\t\tint resId = getBitmapRes(getContext(), \"ssdk_oks_title_back\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.setBackgroundResource(resId);\n\t\t}\n\t\tllTitle.getBtnBack().setOnClickListener(this);\n\t\tresId = getStringRes(getContext(), \"ssdk_oks_multi_share\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.getTvTitle().setText(resId);\n\t\t}\n\t\tllTitle.getBtnRight().setVisibility(View.VISIBLE);\n\t\tresId = getStringRes(getContext(), \"ssdk_oks_finish\");\n\t\tif (resId > 0) {\n\t\t\tllTitle.getBtnRight().setText(resId);\n\t\t}\n\t\tllTitle.getBtnRight().setOnClickListener(this);\n\t\tllTitle.setLayoutParams(new LinearLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));\n\t\tllPage.addView(llTitle);\n\n\t\tFrameLayout flPage = new FrameLayout(getContext());\n\t\tLinearLayout.LayoutParams lpFl = new LinearLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);\n\t\tlpFl.weight = 1;\n\t\tflPage.setLayoutParams(lpFl);\n\t\tllPage.addView(flPage);\n\n\t\t// 关注（或朋友）列表\n\t\tPullToRefreshView followList = new PullToRefreshView(getContext());\n\t\tFrameLayout.LayoutParams lpLv = new FrameLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);\n\t\tfollowList.setLayoutParams(lpLv);\n\t\tflPage.addView(followList);\n\t\tadapter = new FollowAdapter(followList);\n\t\tadapter.setPlatform(platform);\n\t\tfollowList.setAdapter(adapter);\n\t\tadapter.getListView().setOnItemClickListener(this);\n\n\t\tImageView ivShadow = new ImageView(getContext());\n\t\tresId = getBitmapRes(getContext(), \"ssdk_oks_title_shadow\");\n\t\tif (resId > 0) {\n\t\t\tivShadow.setBackgroundResource(resId);\n\t\t}\n\t\tFrameLayout.LayoutParams lpSd = new FrameLayout.LayoutParams(\n\t\t\t\tLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);\n\t\tivShadow.setLayoutParams(lpSd);\n\t\tflPage.addView(ivShadow);\n\n\t\t// 请求数据\n\t\tfollowList.performPulling(true);\n\t}\n\n\tpublic void onClick(View v) {\n\t\tif (v.equals(llTitle.getBtnRight())) {\n\t\t\tArrayList<String> selected = new ArrayList<String>();\n\t\t\tfor (int i = 0, size = adapter.getCount(); i < size; i++) {\n\t\t\t\tif (adapter.getItem(i).checked) {\n\t\t\t\t\tselected.add(adapter.getItem(i).atName);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetResultForChecked(selected);\n\t\t}\n\n\t\tfinish();\n\t}\n\n\tpublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {\n\t\tString name = platform.getName();\n\t\tif (isRadioMode(name)) {\n\t\t\tif(lastPosition >= 0) {\n\t\t\t\tFollowing lastFollwing = adapter.getItem(lastPosition);\n\t\t\t\tlastFollwing.checked = false;\n\t\t\t}\n\t\t\tlastPosition  = position;\n\t\t}\n\t\tFollowing following = adapter.getItem(position);\n\t\tfollowing.checked = !following.checked;\n\t\tadapter.notifyDataSetChanged();\n\t}\n\n\tprivate static class FollowAdapter extends PullToRefreshListAdapter\n\t\t\timplements PlatformActionListener, Callback {\n\t\tprivate static final int FOLLOW_LIST_EMPTY = 2;\n\t\tprivate int curPage;\n\t\tprivate ArrayList<Following> follows;\n\t\tprivate HashMap<String, Boolean> map;\n\t\tprivate boolean hasNext;\n\t\tprivate Platform platform;\n\t\tprivate PRTHeader llHeader;\n\t\tprivate Bitmap bmChd;\n\t\tprivate Bitmap bmUnch;\n\n\t\tpublic FollowAdapter(PullToRefreshView view) {\n\t\t\tsuper(view);\n\t\t\tcurPage = -1;\n\t\t\thasNext = true;\n\t\t\tmap = new HashMap<String, Boolean>();\n\t\t\tfollows = new ArrayList<Following>();\n\n\t\t\tllHeader = new PRTHeader(getContext());\n\n\t\t\tint resId = getBitmapRes(getContext(), \"ssdk_oks_auth_follow_cb_chd\");\n\t\t\tif (resId > 0) {\n\t\t\t\tbmChd = BitmapFactory.decodeResource(view.getResources(), resId);\n\t\t\t}\n\t\t\tresId = getBitmapRes(getContext(), \"ssdk_oks_auth_follow_cb_unc\");\n\t\t\tif (resId > 0) {\n\t\t\t\tbmUnch = BitmapFactory.decodeResource(view.getResources(), resId);\n\t\t\t}\n\t\t}\n\n\t\tpublic void setPlatform(Platform platform) {\n\t\t\tthis.platform = platform;\n\t\t\tplatform.setPlatformActionListener(this);\n\t\t}\n\n\t\tprivate void next() {\n\t\t\tif (hasNext) {\n\t\t\t\tplatform.listFriend(15, curPage + 1, null);\n\t\t\t}\n\t\t}\n\n\t\tpublic View getView(int position, View convertView, ViewGroup parent) {\n\t\t\tFollowListItem item = null;\n\t\t\tboolean simpleMode = \"FacebookMessenger\".equals(platform.getName());\n\t\t\tif (convertView == null) {\n\t\t\t\tLinearLayout llItem = new LinearLayout(parent.getContext());\n\t\t\t\titem = new FollowListItem();\n\t\t\t\tllItem.setTag(item);\n\t\t\t\tconvertView = llItem;\n\n\t\t\t\tint dp_52 = com.mob.tools.utils.R.dipToPx(getContext(), 52);\n\t\t\t\tint dp_10 = com.mob.tools.utils.R.dipToPx(parent.getContext(), 10);\n\t\t\t\tint dp_5 = com.mob.tools.utils.R.dipToPx(parent.getContext(), 5);\n\n\t\t\t\tif(!simpleMode) {\n\t\t\t\t\titem.aivIcon = new AsyncImageView(getContext());\n\t\t\t\t\tLinearLayout.LayoutParams lpIcon = new LinearLayout.LayoutParams(dp_52, dp_52);\n\t\t\t\t\tlpIcon.gravity = Gravity.CENTER_VERTICAL;\n\t\t\t\t\tlpIcon.setMargins(dp_10, dp_5, dp_10, dp_5);\n\t\t\t\t\titem.aivIcon.setLayoutParams(lpIcon);\n\t\t\t\t\tllItem.addView(item.aivIcon);\n\t\t\t\t}\n\n\t\t\t\tLinearLayout llText = new LinearLayout(parent.getContext());\n\t\t\t\tllText.setPadding(0, dp_10, dp_10, dp_10);\n\t\t\t\tllText.setOrientation(LinearLayout.VERTICAL);\n\t\t\t\tLinearLayout.LayoutParams lpText = new LinearLayout.LayoutParams(\n\t\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\t\tlpText.gravity = Gravity.CENTER_VERTICAL;\n\t\t\t\tlpText.weight = 1;\n\t\t\t\tllText.setLayoutParams(lpText);\n\t\t\t\tllItem.addView(llText);\n\n\t\t\t\titem.tvName = new TextView(parent.getContext());\n\t\t\t\titem.tvName.setTextColor(0xff000000);\n\t\t\t\titem.tvName.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\t\t\titem.tvName.setSingleLine();\n\t\t\t\tif(simpleMode) {\n\t\t\t\t\titem.tvName.setPadding(dp_10, 0, 0, 0);\n\t\t\t\t}\n\t\t\t\tllText.addView(item.tvName);\n\n\t\t\t\tif(!simpleMode) {\n\t\t\t\t\titem.tvSign = new TextView(parent.getContext());\n\t\t\t\t\titem.tvSign.setTextColor(0x7f000000);\n\t\t\t\t\titem.tvSign.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);\n\t\t\t\t\titem.tvSign.setSingleLine();\n\t\t\t\t\tllText.addView(item.tvSign);\n\t\t\t\t}\n\n\t\t\t\titem.ivCheck = new ImageView(parent.getContext());\n\t\t\t\titem.ivCheck.setPadding(0, 0, dp_10, 0);\n\t\t\t\tLinearLayout.LayoutParams lpCheck = new LinearLayout.LayoutParams(\n\t\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\t\tlpCheck.gravity = Gravity.CENTER_VERTICAL;\n\t\t\t\titem.ivCheck.setLayoutParams(lpCheck);\n\t\t\t\tllItem.addView(item.ivCheck);\n\t\t\t} else {\n\t\t\t\titem = (FollowListItem) convertView.getTag();\n\t\t\t}\n\n\t\t\tFollowing following = getItem(position);\n\t\t\titem.tvName.setText(following.screenName);\n\t\t\tif(!simpleMode) {\n\t\t\t\titem.tvSign.setText(following.description);\n\t\t\t}\n\t\t\titem.ivCheck.setImageBitmap(following.checked ? bmChd : bmUnch);\n\t\t\tif(!simpleMode) {\n\t\t\t\tif (isFling()) {\n\t\t\t\t\tBitmap bm = BitmapProcessor.getBitmapFromCache(following.icon);\n\t\t\t\t\tif (bm != null && !bm.isRecycled()) {\n\t\t\t\t\t\titem.aivIcon.setImageBitmap(bm);\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.aivIcon.execute(null, 0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\titem.aivIcon.execute(following.icon,0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (position == getCount() - 1) {\n\t\t\t\tnext();\n\t\t\t}\n\t\t\treturn convertView;\n\t\t}\n\n\t\tpublic Following getItem(int position) {\n\t\t\treturn follows.get(position);\n\t\t}\n\n\t\tpublic long getItemId(int position) {\n\t\t\treturn position;\n\t\t}\n\n\t\tpublic int getCount() {\n\t\t\treturn follows == null ? 0 : follows.size();\n\t\t}\n\n\t\tpublic View getHeaderView() {\n\t\t\treturn llHeader;\n\t\t}\n\n\t\tpublic void onPullDown(int percent) {\n\t\t\tllHeader.onPullDown(percent);\n\t\t}\n\n\t\tpublic void onRequest() {\n\t\t\tllHeader.onRequest();\n\t\t\tcurPage = -1;\n\t\t\thasNext = true;\n\t\t\tmap.clear();\n\t\t\tnext();\n\t\t}\n\n\t\tpublic void onCancel(Platform plat, int action) {\n\t\t\tUIHandler.sendEmptyMessage(-1, this);\n\t\t}\n\n\t\tpublic void onComplete(Platform plat, int action, HashMap<String, Object> res) {\n\t\t\tFollowersResult followersResult = parseFollowers(platform.getName(), res, map);\n\n\t\t\tif(followersResult == null) {\n\t\t\t\tUIHandler.sendEmptyMessage(FOLLOW_LIST_EMPTY, this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\thasNext = followersResult.hasNextPage;\n\t\t\tif (followersResult.list != null && followersResult.list.size() > 0) {\n\t\t\t\tcurPage++;\n\t\t\t\tMessage msg = new Message();\n\t\t\t\tmsg.what = 1;\n\t\t\t\tmsg.obj = followersResult.list;\n\t\t\t\tUIHandler.sendMessage(msg, this);\n\t\t\t}\n\t\t}\n\n\t\tpublic void onError(Platform plat, int action, Throwable t) {\n\t\t\tt.printStackTrace();\n\t\t}\n\n\t\tpublic boolean handleMessage(Message msg) {\n\t\t\tif (msg.what < 0) {\n\t\t\t\t((Activity) getContext()).finish();\n\t\t\t} else if(msg.what == FOLLOW_LIST_EMPTY) {\n\t\t\t\tnotifyDataSetChanged();\n\t\t\t} else {\n\t\t\t\tif (curPage <= 0) {\n\t\t\t\t\tfollows.clear();\n\t\t\t\t}\n\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\tArrayList<Following> data = (ArrayList<Following>) msg.obj;\n\t\t\t\tfollows.addAll(data);\n\t\t\t\tnotifyDataSetChanged();\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic void onReversed() {\n\t\t\tsuper.onReversed();\n\t\t\tllHeader.reverse();\n\t\t}\n\n\t}\n\n\tprivate static class FollowListItem {\n\t\tpublic AsyncImageView aivIcon;\n\t\tpublic TextView tvName;\n\t\tpublic TextView tvSign;\n\t\tpublic ImageView ivCheck;\n\t}\n\n\tprivate static class PRTHeader extends LinearLayout {\n\t\tprivate TextView tvHeader;\n\t\tprivate RotateImageView ivArrow;\n\t\tprivate ProgressBar pbRefreshing;\n\n\t\tpublic PRTHeader(Context context) {\n\t\t\tsuper(context);\n\t\t\tsetOrientation(VERTICAL);\n\n\t\t\tLinearLayout llInner = new LinearLayout(context);\n\t\t\tLinearLayout.LayoutParams lpInner = new LinearLayout.LayoutParams(\n\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\tlpInner.gravity = Gravity.CENTER_HORIZONTAL;\n\t\t\taddView(llInner, lpInner);\n\n\t\t\tivArrow = new RotateImageView(context);\n\t\t\tint resId = getBitmapRes(context, \"ssdk_oks_ptr_ptr\");\n\t\t\tif (resId > 0) {\n\t\t\t\tivArrow.setImageResource(resId);\n\t\t\t}\n\t\t\tint dp_32 = dipToPx(context, 32);\n\t\t\tLayoutParams lpIv = new LayoutParams(dp_32, dp_32);\n\t\t\tlpIv.gravity = Gravity.CENTER_VERTICAL;\n\t\t\tllInner.addView(ivArrow, lpIv);\n\n\t\t\tpbRefreshing = new ProgressBar(context);\n\t\t\tllInner.addView(pbRefreshing, lpIv);\n\t\t\tpbRefreshing.setVisibility(View.GONE);\n\n\t\t\ttvHeader = new TextView(getContext());\n\t\t\ttvHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);\n\t\t\ttvHeader.setGravity(Gravity.CENTER);\n\t\t\tint dp_10 = com.mob.tools.utils.R.dipToPx(getContext(), 10);\n\t\t\ttvHeader.setPadding(dp_10, dp_10, dp_10, dp_10);\n\t\t\ttvHeader.setTextColor(0xff000000);\n\t\t\tLayoutParams lpTv = new LayoutParams(\n\t\t\t\t\tLayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);\n\t\t\tlpTv.gravity = Gravity.CENTER_VERTICAL;\n\t\t\tllInner.addView(tvHeader, lpTv);\n\t\t}\n\n\t\tpublic void onPullDown(int percent) {\n\t\t\tif (percent > 100) {\n\t\t\t\tint degree = (percent - 100) * 180 / 20;\n\t\t\t\tif (degree > 180) {\n\t\t\t\t\tdegree = 180;\n\t\t\t\t}\n\t\t\t\tif (degree < 0) {\n\t\t\t\t\tdegree = 0;\n\t\t\t\t}\n\t\t\t\tivArrow.setRotation(degree);\n\t\t\t} else {\n\t\t\t\tivArrow.setRotation(0);\n\t\t\t}\n\n\t\t\tif (percent < 100) {\n\t\t\t\tint resId = getStringRes(getContext(), \"ssdk_oks_pull_to_refresh\");\n\t\t\t\tif (resId > 0) {\n\t\t\t\t\ttvHeader.setText(resId);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tint resId = getStringRes(getContext(), \"ssdk_oks_release_to_refresh\");\n\t\t\t\tif (resId > 0) {\n\t\t\t\t\ttvHeader.setText(resId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic void onRequest() {\n\t\t\tivArrow.setVisibility(View.GONE);\n\t\t\tpbRefreshing.setVisibility(View.VISIBLE);\n\t\t\tint resId = getStringRes(getContext(), \"ssdk_oks_refreshing\");\n\t\t\tif (resId > 0) {\n\t\t\t\ttvHeader.setText(resId);\n\t\t\t}\n\t\t}\n\n\t\tpublic void reverse() {\n\t\t\tpbRefreshing.setVisibility(View.GONE);\n\t\t\tivArrow.setRotation(180);\n\t\t\tivArrow.setVisibility(View.VISIBLE);\n\t\t}\n\n\t}\n\n\tprivate static class RotateImageView extends ImageView {\n\t\tprivate int rotation;\n\n\t\tpublic RotateImageView(Context context) {\n\t\t\tsuper(context);\n\t\t}\n\n\t\tpublic void setRotation(int degree) {\n\t\t\trotation = degree;\n\t\t\tinvalidate();\n\t\t}\n\n\t\tprotected void onDraw(Canvas canvas) {\n\t\t\tcanvas.rotate(rotation, getWidth() / 2, getHeight() / 2);\n\t\t\tsuper.onDraw(canvas);\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/skyblue/PlatformGridViewAdapter.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.skyblue;\n\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.BaseAdapter;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.List;\n\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.onekeyshare.CustomerLogo;\nimport cn.sharesdk.onekeyshare.ShareCore;\n\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getBitmapRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getIdRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getLayoutRes;\n\npublic class PlatformGridViewAdapter extends BaseAdapter implements View.OnClickListener {\n\n\tprivate final Context context;\n\tprivate List<Object> logos = new ArrayList<Object>();\n\tprivate List<Integer> checkedPositionList = new ArrayList<Integer>();\n\tprivate int directOnlyPosition = -1;\n\n\tstatic class ViewHolder {\n\t\tpublic Integer position;\n\t\tpublic ImageView logoImageView;\n\t\tpublic ImageView checkedImageView;\n\t\tpublic TextView nameTextView;\n\t}\n\n\tpublic PlatformGridViewAdapter(Context context) {\n\t\tthis.context = context;\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\treturn logos.size();\n\t}\n\n\t@Override\n\tpublic Object getItem(int i) {\n\t\treturn logos.get(i);\n\t}\n\n\t@Override\n\tpublic long getItemId(int i) {\n\t\treturn i;\n\t}\n\n\t@Override\n\tpublic View getView(int position, View view, ViewGroup viewGroup) {\n\t\tViewHolder viewHolder;\n\t\tif(view == null) {\n\t\t\tview = LayoutInflater.from(context).inflate(getLayoutRes(context, \"ssdk_oks_skyblue_share_platform_list_item\"), null);\n\t\t\tviewHolder = new ViewHolder();\n\t\t\tviewHolder.checkedImageView = (ImageView) view.findViewById(getIdRes(context, \"checkedImageView\"));\n\t\t\tviewHolder.logoImageView = (ImageView) view.findViewById(getIdRes(context, \"logoImageView\"));\n\t\t\tviewHolder.nameTextView = (TextView) view.findViewById(getIdRes(context, \"nameTextView\"));\n\t\t\tview.setTag(viewHolder);\n\t\t} else {\n\t\t\tviewHolder = (ViewHolder) view.getTag();\n\t\t}\n\n\t\tBitmap logo;\n\t\tString label;\n\t\tObject item = getItem(position);\n\t\tboolean disabled;\n\t\tboolean isDirectShare = item instanceof Platform ? ShareCore.isDirectShare((Platform) item) : true;\n\t\tif(directOnlyPosition == -1) {\n\t\t\tdisabled = !checkedPositionList.isEmpty() && isDirectShare;\n\t\t} else {\n\t\t\tdisabled = position != directOnlyPosition;\n\t\t}\n\n\t\tif (item instanceof Platform) {\n\t\t\tlogo = getIcon((Platform) item, disabled ? \"\" : \"_checked\");\n\t\t\tlabel = getName((Platform) item);\n\t\t\tview.setOnClickListener(this);\n\t\t} else {\n\t\t\tCustomerLogo customerLogo = (CustomerLogo) item;\n\t\t\tlogo = disabled ? customerLogo.disableLogo : customerLogo.enableLogo;\n\t\t\tlabel = customerLogo.label;\n\t\t\tview.setOnClickListener(this);\n\t\t\t//TODO 需要整理\n\t\t//\tview.setOnClickListener(((CustomerLogo) item).listener);\n\t\t}\n\t\tString checkedResName = directOnlyPosition != -1 && directOnlyPosition != position ? \"ssdk_oks_skyblue_platform_checked_disabled\" : \"ssdk_oks_skyblue_platform_checked\";\n\t\tviewHolder.position = position;\n\t\tviewHolder.checkedImageView.setImageBitmap(BitmapFactory.decodeResource(context.getResources(), getBitmapRes(context, checkedResName)));\n\t\tviewHolder.checkedImageView.setVisibility(checkedPositionList.contains(viewHolder.position) ? View.VISIBLE : View.GONE);\n\t\tviewHolder.nameTextView.setText(label);\n\t\tviewHolder.logoImageView.setImageBitmap(logo);\n\n\t\treturn view;\n\t}\n\n\t@Override\n\tpublic void onClick(View view) {\n\t\tViewHolder viewHolder = (ViewHolder) view.getTag();\n\t\tInteger position = viewHolder.position;\n\t\t//直接分享平台选中后，其它的不可用\n\t\tif(directOnlyPosition != -1 && position != directOnlyPosition)\n\t\t\treturn;\n\n\t\tObject item = getItem(position);\n\t\tboolean direct = false;\n\t\t//normal platform\n\t\tif(item instanceof Platform){\n\t\t\tdirect = ShareCore.isDirectShare((Platform) item);\n\t\t}else{\n\t\t\t//自定义图标\n\t\t\tdirect = true;\n\t\t}\n\t\t//EditPage Platforms only\n\t\tif(direct && directOnlyPosition == -1 && !checkedPositionList.isEmpty())\n\t\t\treturn;\n\n\t\tif(checkedPositionList.contains(position)) {\n\t\t\tcheckedPositionList.remove(position);\n\t\t\tif(direct)\n\t\t\t\tdirectOnlyPosition = -1;\n\t\t} else {\n\t\t\tcheckedPositionList.add(position);\n\t\t\tif(direct)\n\t\t\t\tdirectOnlyPosition = position;\n\t\t}\n\n\t\tnotifyDataSetChanged();\n\t}\n\n\tpublic void setData(Platform[] platforms, HashMap<String, String> hiddenPlatforms) {\n\t\tif(platforms == null)\n\t\t\treturn;\n\t\tif (hiddenPlatforms != null && hiddenPlatforms.size() > 0) {\n\t\t\tArrayList<Platform> ps = new ArrayList<Platform>();\n\t\t\tfor (Platform p : platforms) {\n\t\t\t\tif (hiddenPlatforms.containsKey(p.getName())) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tps.add(p);\n\t\t\t}\n\n\t\t\tlogos.addAll(ps);\n\t\t} else {\n\t\t\tlogos.addAll(Arrays.asList(platforms));\n\t\t}\n\t\tcheckedPositionList.clear();\n\t\tnotifyDataSetChanged();\n\t}\n\n\tpublic void setCustomerLogos(ArrayList<CustomerLogo> customers) {\n\t\tif(customers == null || customers.size() == 0)\n\t\t\treturn;\n\t\tlogos.addAll(customers);\n\t}\n\n\tpublic List<Object> getCheckedItems() {\n\t\tArrayList<Object> list = new ArrayList<Object>();\n\n\t\tif(directOnlyPosition != -1) {\n\t\t\tlist.add(getItem(directOnlyPosition));\n\t\t\treturn list;\n\t\t}\n\n\t\tObject item;\n\t\tfor(Integer position : checkedPositionList) {\n\t\t\titem = getItem(position);\n\t\t\tlist.add(item);\n\t\t}\n\t\treturn list;\n\t}\n\n\tprivate Bitmap getIcon(Platform plat, String subfix) {\n\t\tString resName = \"ssdk_oks_skyblue_logo_\" + plat.getName() + subfix;\n\t\tint resId = getBitmapRes(context, resName);\n\t\treturn BitmapFactory.decodeResource(context.getResources(), resId);\n\t}\n\n\tprivate String getName(Platform plat) {\n\t\tif (plat == null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tString name = plat.getName();\n\t\tif (name == null) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tint resId = getStringRes(context, \"ssdk_\" + plat.getName());\n\t\tif (resId > 0) {\n\t\t\treturn context.getString(resId);\n\t\t}\n\t\treturn null;\n\t}\n}\n"
  },
  {
    "path": "sharesdk/src/main/java/cn/sharesdk/onekeyshare/theme/skyblue/PlatformListPage.java",
    "content": "/*\n * 官网地站:http://www.mob.com\n * 技术支持QQ: 4006852216\n * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）\n *\n * Copyright (c) 2013年 mob.com. All rights reserved.\n */\n\npackage cn.sharesdk.onekeyshare.theme.skyblue;\n\nimport android.os.AsyncTask;\nimport android.view.View;\nimport android.widget.GridView;\nimport android.widget.Toast;\n\nimport java.util.List;\n\nimport cn.sharesdk.framework.Platform;\nimport cn.sharesdk.framework.ShareSDK;\nimport cn.sharesdk.onekeyshare.PlatformListFakeActivity;\n\nimport static cn.sharesdk.framework.utils.ShareSDKR.getLayoutRes;\nimport static cn.sharesdk.framework.utils.ShareSDKR.getStringRes;\n\npublic class PlatformListPage extends PlatformListFakeActivity implements View.OnClickListener {\n\tprivate PlatformGridViewAdapter gridViewAdapter;\n\n\tpublic void onCreate() {\n\t\tsuper.onCreate();\n\t\tactivity.setContentView(getLayoutRes(activity, \"ssdk_oks_skyblue_share_platform_list\"));\n\n\t\tinitView();\n\t}\n\n\tprivate void initView() {\n\t\tView backImageView = findViewByResName(\"backImageView\");\n\t\tbackImageView.setTag(android.R.string.cancel);\n\t\tbackImageView.setOnClickListener(this);\n\n\t\tView okImageView = findViewByResName(\"okImageView\");\n\t\tokImageView.setTag(android.R.string.ok);\n\t\tokImageView.setOnClickListener(this);\n\n\t\tgridViewAdapter = new PlatformGridViewAdapter(activity);\n\t\tgridViewAdapter.setCustomerLogos(customerLogos);\n\n\t\tGridView gridView = (GridView) findViewByResName(\"gridView\");\n\t\tgridView.setAdapter(gridViewAdapter);\n\n\t\tnew AsyncTask<Void, Void, Platform[]>() {\n\n\t\t\t@Override\n\t\t\tprotected Platform[] doInBackground(Void... params) {\n\t\t\t\treturn ShareSDK.getPlatformList();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tprotected void onPostExecute(Platform[] platforms) {\n\t\t\t\tgridViewAdapter.setData(platforms, hiddenPlatforms);\n\t\t\t}\n\t\t}.execute();\n\t}\n\n\tpublic void onClick(View v) {\n\t\tObject tag = v.getTag();\n\t\tif(tag == null || !(tag instanceof Integer))\n\t\t\treturn;\n\n\t\tswitch ((Integer)tag) {\n\t\t\tcase android.R.string.cancel:\n\t\t\t\tsetCanceled(true);\n\t\t\t\tfinish();\n\t\t\t\tbreak;\n\t\t\tcase android.R.string.ok:\n\t\t\t\tonShareButtonClick(v);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate void onShareButtonClick(View v) {\n\t\tif(gridViewAdapter == null || \"locked\".equals(v.getTag()))\n\t\t\treturn;\n\n\t\tList<Object> checkedPlatforms = gridViewAdapter.getCheckedItems();\n\t\tif(checkedPlatforms.size() == 0){\n\t\t\tToast.makeText(activity, getStringRes(activity, \"ssdk_oks_select_one_plat_at_least\"), Toast.LENGTH_SHORT).show();\n\t\t\treturn;\n\t\t}\n\n\t\tv.setTag(\"locked\");\n\t\tonShareButtonClick(v, checkedPlatforms);\n\t}\n\n}\n"
  },
  {
    "path": "sharesdk/src/main/res/drawable/ssdk_oks_classic_platform_corners_bg.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" >\r\n\r\n    <solid android:color=\"#ffffffff\" />\r\n    \r\n    <corners\r\n        android:bottomLeftRadius=\"4dp\"\r\n        android:bottomRightRadius=\"4dp\"\r\n        android:topLeftRadius=\"4dp\"\r\n        android:topRightRadius=\"4dp\" />\r\n\r\n    <stroke\r\n        android:width=\"1dp\"\r\n        android:color=\"#ffc9c9cb\" />\r\n\r\n</shape>"
  },
  {
    "path": "sharesdk/src/main/res/drawable/ssdk_oks_skyblue_platform_list_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <solid\n        android:color=\"@android:color/transparent\"\n        />\n    <stroke\n        android:width=\"1dp\"\n        android:color=\"#7fcccccc\"\n        />\n</shape>"
  },
  {
    "path": "sharesdk/src/main/res/drawable/ssdk_oks_skyblue_platform_list_item_selected.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <solid\n        android:color=\"#78ffffff\"\n        />\n    <stroke\n        android:width=\"1dp\"\n        android:color=\"#cccccc\"\n        />\n</shape>"
  },
  {
    "path": "sharesdk/src/main/res/drawable/ssdk_oks_skyblue_platform_list_selector.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item\n        android:state_selected=\"true\"\n        android:drawable=\"@drawable/ssdk_oks_skyblue_platform_list_item_selected\"\n        />\n    <item\n        android:state_pressed=\"true\"\n        android:drawable=\"@drawable/ssdk_oks_skyblue_platform_list_item_selected\"\n        />\n    <item\n        android:drawable=\"@drawable/ssdk_oks_skyblue_platform_list_item\"\n        />\n</selector>"
  },
  {
    "path": "sharesdk/src/main/res/drawable-xhdpi/ssdk_oks_shake_to_share_back.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" \r\n    android:shape=\"rectangle\" >\r\n    \r\n    <padding \r\n        android:left=\"10dp\"\r\n        android:top=\"10dp\"\r\n        android:right=\"10dp\"\r\n        android:bottom=\"10dp\" />\r\n    \r\n    <gradient\r\n        android:angle=\"90\"  \r\n        android:endColor=\"#7f000000\"  \r\n        android:startColor=\"#7f000000\" />  \r\n\r\n    <corners\r\n        android:bottomLeftRadius=\"12dp\"  \r\n        android:bottomRightRadius=\"12dp\"  \r\n        android:topLeftRadius=\"12dp\"  \r\n        android:topRightRadius=\"12dp\" />  \r\n\r\n    <stroke\r\n        android:width=\"4dip\"  \r\n        android:color=\"#ff7f7f7f\" />\r\n    \r\n</shape>\r\n"
  },
  {
    "path": "sharesdk/src/main/res/layout/ssdk_oks_skyblue_editpage.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"match_parent\"\n                android:background=\"#e6ffffff\">\n\n    <include\n        android:id=\"@+id/actionbarLayout\"\n        layout=\"@layout/ssdk_oks_skyblue_share_actionbar\"/>\n\n    <RelativeLayout\n        android:id=\"@+id/mainRelLayout\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_below=\"@id/actionbarLayout\"\n        android:layout_margin=\"14dp\"\n        android:background=\"@drawable/ssdk_oks_skyblue_editpage_bg\"\n        android:padding=\"10dp\">\n\n        <LinearLayout\n            android:id=\"@+id/titleLayout\"\n            android:orientation=\"horizontal\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\">\n            <EditText\n                android:id=\"@+id/titleEditText\"\n                android:layout_width=\"0dp\"\n                android:layout_height=\"wrap_content\"\n                android:layout_weight=\"1\"\n                android:background=\"@null\"\n                android:textColor=\"#a7a7a7\"/>\n\n            <ImageView\n                android:id=\"@+id/closeImageView\"\n                android:layout_width=\"30dp\"\n                android:layout_height=\"20dp\"\n                android:paddingLeft=\"10dp\"\n                android:scaleType=\"center\"\n                android:src=\"@drawable/ssdk_oks_skyblue_editpage_close\"/>\n            </LinearLayout>\n\n        <View\n            android:id=\"@+id/divider\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"1dp\"\n            android:layout_below=\"@id/titleLayout\"\n            android:layout_marginTop=\"5dp\"\n            android:background=\"@drawable/ssdk_oks_skyblue_editpage_divider\"/>\n\n        <EditText\n            android:id=\"@+id/textEditText\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_below=\"@id/divider\"\n            android:layout_marginBottom=\"5dp\"\n            android:layout_marginTop=\"5dp\"\n            android:background=\"@null\"\n            android:gravity=\"left|top\"\n            android:minLines=\"1\"\n            android:textColor=\"#333333\"/>\n\n        <LinearLayout\n            android:id=\"@+id/atLayout\"\n            android:layout_below=\"@id/textEditText\"\n            android:orientation=\"vertical\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\">\n\n        </LinearLayout>\n\n        <TextView\n            android:id=\"@+id/textCounterTextView\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignParentRight=\"true\"\n            android:layout_below=\"@id/textEditText\"\n            android:layout_marginTop=\"5dp\"\n            android:textColor=\"#ffcfcfcf\"\n            android:textSize=\"14sp\"/>\n\n        <HorizontalScrollView\n            android:id=\"@+id/hScrollView\"\n            android:scrollbars=\"none\"\n            android:fadingEdge=\"none\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"56dp\"\n            android:layout_below=\"@id/atLayout\"\n            android:layout_marginTop=\"5dp\">\n\n            <LinearLayout\n                android:id=\"@+id/imagesLinearLayout\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:orientation=\"horizontal\">\n\n            </LinearLayout>\n        </HorizontalScrollView>\n    </RelativeLayout>\n</RelativeLayout>"
  },
  {
    "path": "sharesdk/src/main/res/layout/ssdk_oks_skyblue_editpage_at_layout.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n              android:paddingTop=\"5dp\"\n              android:paddingBottom=\"5dp\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\">\n    <TextView\n        android:id=\"@+id/atTextView\"\n        android:layout_width=\"25dp\"\n        android:layout_height=\"25dp\"\n        android:background=\"@drawable/ssdk_oks_btn_back_nor\"\n        android:gravity=\"center_horizontal\"\n        android:layout_marginTop=\"2dp\"\n        android:textColor=\"#333333\"\n        android:textSize=\"12sp\"/>\n\n    <TextView\n        android:id=\"@+id/atDescTextView\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"25dp\"\n        android:gravity=\"center_vertical\"\n        android:layout_below=\"@id/textEditText\"\n        android:layout_marginTop=\"2dp\"\n        android:layout_toRightOf=\"@id/atTextView\"\n        android:text=\"@string/ssdk_oks_list_friends\"\n        android:textColor=\"#333333\"\n        android:textSize=\"14sp\"/>\n</RelativeLayout>"
  },
  {
    "path": "sharesdk/src/main/res/layout/ssdk_oks_skyblue_editpage_inc_image_layout.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\">\n\n    <ImageView\n        android:id=\"@+id/imageView\"\n        android:scaleType=\"centerInside\"\n        android:background=\"@drawable/ssdk_oks_skyblue_editpage_image_bg\"\n        android:maxHeight=\"56dp\"\n        android:adjustViewBounds=\"true\"\n        android:layout_marginTop=\"7dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"/>\n\n    <ImageView\n        android:id=\"@+id/imageRemoveBtn\"\n        android:layout_width=\"30dp\"\n        android:layout_height=\"30dp\"\n        android:scaleType=\"center\"\n        android:layout_toRightOf=\"@id/imageView\"\n        android:layout_marginLeft=\"-17dp\"\n        android:layout_marginRight=\"5dp\"\n        android:layout_marginTop=\"-3dp\"\n        android:src=\"@drawable/ssdk_oks_skyblue_editpage_image_remove\"/>\n</RelativeLayout>"
  },
  {
    "path": "sharesdk/src/main/res/layout/ssdk_oks_skyblue_share_actionbar.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<RelativeLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"48dp\"\n    android:background=\"#00A4DF\">\n    <ImageView\n        android:id=\"@+id/backImageView\"\n        android:layout_width=\"48dp\"\n        android:layout_height=\"48dp\"\n        android:scaleType=\"center\"\n        android:src=\"@drawable/ssdk_oks_skyblue_actionbar_back_btn\"\n        android:layout_marginLeft=\"5dp\"\n        />\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"@string/ssdk_oks_share\"\n        android:textColor=\"#ffffff\"\n        android:textSize=\"18sp\"\n        android:textStyle=\"bold\"\n        android:layout_centerInParent=\"true\"\n        />\n    <ImageView\n        android:id=\"@+id/okImageView\"\n        android:layout_width=\"48dp\"\n        android:layout_height=\"48dp\"\n        android:scaleType=\"center\"\n        android:src=\"@drawable/ssdk_oks_skyblue_actionbar_ok_btn\"\n        android:layout_marginRight=\"5dp\"\n        android:layout_alignParentRight=\"true\"\n        />\n</RelativeLayout>\n"
  },
  {
    "path": "sharesdk/src/main/res/layout/ssdk_oks_skyblue_share_platform_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n                android:background=\"#e6ffffff\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"match_parent\">\n\n    <include layout=\"@layout/ssdk_oks_skyblue_share_actionbar\" android:id=\"@+id/actionbarLayout\" />\n\n    <GridView\n        android:id=\"@+id/gridView\"\n        android:layout_below=\"@id/actionbarLayout\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:numColumns=\"3\"\n        android:stretchMode=\"columnWidth\"\n        android:listSelector=\"@android:color/transparent\"\n        />\n</RelativeLayout>"
  },
  {
    "path": "sharesdk/src/main/res/layout/ssdk_oks_skyblue_share_platform_list_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"match_parent\"\n                android:background=\"@drawable/ssdk_oks_skyblue_platform_list_selector\">\n\n    <RelativeLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"100dp\">\n\n        <LinearLayout\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_centerInParent=\"true\"\n            android:orientation=\"vertical\">\n\n            <ImageView\n                android:id=\"@+id/logoImageView\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_gravity=\"center_horizontal\"/>\n\n            <TextView\n                android:id=\"@+id/nameTextView\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_gravity=\"center_horizontal\"\n                android:gravity=\"center_horizontal\"\n                android:textColor=\"#333333\"\n                android:textSize=\"12sp\"/>\n        </LinearLayout>\n\n        <ImageView\n            android:id=\"@+id/checkedImageView\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignParentBottom=\"true\"\n            android:layout_alignParentRight=\"true\"\n            android:layout_marginBottom=\"5dp\"\n            android:layout_marginRight=\"5dp\"\n            android:src=\"@drawable/ssdk_oks_skyblue_platform_checked\"/>\n    </RelativeLayout>\n</RelativeLayout>"
  },
  {
    "path": "sharesdk/src/main/res/values/ssdk_instapaper_strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<resources>\n    <string name=\"ssdk_instapager_login_html\" formatted=\"false\"><![CDATA[\n<!DOCTYPE html>\n<html>\n<head>\n<meta content=\\\"text/html; charset=utf-8\\\" http-equiv=\\\"Content-Type\\\">\n<meta content=\\\"width=device-width,minimum-scale=1,maximum-scale=1,initial-scale=1,user-scalable=no\\\" id=\\\"viewport\\\" name=\\\"viewport\\\">\n<meta content=\\\"yes\\\" name=\\\"apple-mobile-web-app-capable\\\">\n<title>%s</title>\n<style type=\\\"text/css\\\">\nbody{margin:0;padding:0}\n.inputstyle {\n    -webkit-tap-highlight-color:rgba(255,255,255,0);\n    width:100%%;\n    height:44px;\n    color:#000;\n    background:0;\n    border:0;\n    font-size:16px;\n    outline: none;\n    -webkit-appearance:none\n}\n\n.btn {\n    width:90%%;\n    height:44px;\n    line-height:44px;\n    background:#A0C035;\n    border:0;\n    border-radius:4px;\n    color:#fff;\n    font-size:16px;\n    text-align:center;\n    margin-top:15px;\n    display:block\n}\n.btn:disabled {\n    background: #dddddd;\n}\n.error {\n    color:red;\n}\n</style>\n</head>\n\n<body>\n<script type=\\\"text/javascript\\\">\nfunction login(form){\n    var u=form[\\\"u\\\"].value,p=form[\\\"p\\\"].value;\n    if(!u || !p)\n        return false;\n    form[\\\"s\\\"].disabled = true;\n    return true;\n}\n</script>\n<form style=\\\"margin-top:45px;\\\" action=\\\"%s\\\" metho=\\\"get\\\" onsubmit=\\\"return login(this);\\\">\n%s\n<div style=\\\"padding-left:15px;border-top:1px solid #E3E3E5;border-bottom:1px solid #E3E3E5;\\\">\n <input type=\\\"hidden\\\" name=\\\"ID_SIGN\\\" value=\\\"OWELJSFPWECSFEW\\\"/>\n <input class=\\\"inputstyle\\\" id=\\\"u\\\" name=\\\"u\\\" type=\\\"text\\\" value=\\\"%s\\\" placeholder=\\\"%s\\\" style=\\\"border-bottom:1px solid #E3E3E5;\\\"/>\n <input class=\\\"inputstyle\\\" id=\\\"p\\\" name=\\\"p\\\" type=\\\"password\\\" placeholder=\\\"%s\\\"/>\n</div>\n<p><input style=\\\"margin:0 auto;\\\" type=\\\"submit\\\" name=\\\"s\\\" value=\\\"  %s  \\\" class=\\\"btn\\\"/></p>\n</form>\n</body>\n</html>\n]]></string>\n</resources>"
  },
  {
    "path": "sharesdk/src/main/res/values/ssdk_oks_strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n    <string name=\"ssdk_oks_cancel\">取消</string>\r\n    <string name=\"ssdk_oks_finish\">完成</string>\r\n    <string name=\"ssdk_oks_sharing\">分享操作正在后台进行…</string>\r\n    <string name=\"ssdk_oks_share_to\">分享到</string>\r\n\t<string name=\"ssdk_oks_share\">分享</string>\r\n\t<string name=\"ssdk_oks_multi_share\">图文分享</string>\r\n\t<string name=\"ssdk_oks_share_completed\">分享成功</string>\r\n\t<string name=\"ssdk_oks_share_canceled\">分享已取消</string>\r\n\t<string name=\"ssdk_oks_select_one_plat_at_least\">请选择一个目标平台</string>\r\n\t<string name=\"ssdk_oks_list_friends\">%s的朋友</string>\r\n\t<string name=\"ssdk_oks_share_failed\">分享失败</string>\r\n\t<string name=\"ssdk_oks_pull_to_refresh\">下拉刷新</string>\r\n\t<string name=\"ssdk_oks_release_to_refresh\">松开刷新</string>\r\n\t<string name=\"ssdk_oks_refreshing\">刷新中…</string>\r\n\t<string name=\"ssdk_oks_shake2share\">摇晃手机！</string>\r\n\t<string name=\"ssdk_oks_select_a_friend\">请选择一个朋友</string>\r\n</resources>"
  },
  {
    "path": "sharesdk/src/main/res/values/ssdk_strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n    <string name=\"ssdk_weibo_oauth_regiseter\">应用授权</string>\r\n    <string name=\"ssdk_website\">http://www.mob.com</string>\r\n    <string name=\"ssdk_weibo_upload_content\">分享图片</string>\r\n    <string name=\"ssdk_wechat_client_inavailable\">目前您的微信版本过低或未安装微信，需要安装微信才能使用</string>\r\n    <string name=\"ssdk_google_plus_client_inavailable\">Google+ 版本过低或者没有安装，需要升级或安装Google+才能使用！</string>\r\n    <string name=\"ssdk_qq_client_inavailable\">QQ 版本过低或者没有安装，需要升级或安装QQ才能使用！</string>\r\n    <string name=\"ssdk_pinterest_client_inavailable\">Pinterest版本过低或者没有安装，需要升级或安装Pinterest才能使用！</string>\r\n    <string name=\"ssdk_instagram_client_inavailable\">Instagram版本过低或者没有安装，需要升级或安装Instagram才能使用！</string>\r\n    <string name=\"ssdk_yixin_client_inavailable\">目前您的易信版本过低或未安装，需要安装易信才能使用</string>\r\n    <string name=\"ssdk_line_client_inavailable\">目前您的Line版本过低或未安装，需要安装Line才能使用</string>\r\n    <string name=\"ssdk_kakaotalk_client_inavailable\">目前您的KakaoTalk版本过低或未安装，需要安装KakaoTalk才能使用</string>\r\n    <string name=\"ssdk_kakaostory_client_inavailable\">目前您的KakaoStory版本过低或未安装，需要安装KakaoStory才能使用</string>\r\n    <string name=\"ssdk_whatsapp_client_inavailable\">目前您的WhatsApp版本过低或未安装，需要安装WhatsApp才能使用</string>\r\n    <string name=\"ssdk_baidutieba_client_inavailable\">目前您的百度贴吧版本过低或未安装，需要安装百度贴吧才能使用</string>\r\n    <string name=\"ssdk_laiwang_client_inavailable\">目前您的来往版本过低或未安装，需要安装来往才能使用</string>\r\n    <string name=\"ssdk_alipay_client_inavailable\">目前您的支付宝版本过低或未安装，需要安装支付宝才能使用</string>\r\n    \r\n\t<string name=\"ssdk_sinaweibo\">新浪微博</string>\r\n\t<string name=\"ssdk_tencentweibo\">腾讯微博</string>\r\n\t<string name=\"ssdk_qzone\">QQ空间</string>\r\n\t<string name=\"ssdk_wechat\">微信好友</string>\r\n\t<string name=\"ssdk_wechatmoments\">微信朋友圈</string>\r\n\t<string name=\"ssdk_wechatfavorite\">微信收藏</string>\r\n\t<string name=\"ssdk_facebook\">Facebook</string>\r\n\t<string name=\"ssdk_twitter\">Twitter</string>\r\n\t<string name=\"ssdk_renren\">人人网</string>\r\n\t<string name=\"ssdk_kaixin\">开心网</string>\r\n\t<string name=\"ssdk_email\">邮件</string>\r\n\t<string name=\"ssdk_shortmessage\">信息</string>\r\n\t<string name=\"ssdk_sohumicroblog\">搜狐微博</string>\r\n\t<string name=\"ssdk_sohusuishenkan\">搜狐随身看</string>\r\n\t<string name=\"ssdk_neteasemicroblog\">网易微博</string>\r\n\t<string name=\"ssdk_douban\">豆瓣</string>\r\n\t<string name=\"ssdk_youdao\">有道云笔记</string>\r\n\t<string name=\"ssdk_evernote\">印象笔记</string>\r\n\t<string name=\"ssdk_linkedin\">领英</string>\r\n\t<string name=\"ssdk_googleplus\">Google+</string>\r\n\t<string name=\"ssdk_foursquare\">FourSquare</string>\r\n\t<string name=\"ssdk_qq\">QQ</string>\r\n\t<string name=\"ssdk_pinterest\">Pinterest</string>\r\n\t<string name=\"ssdk_flickr\">Flickr</string>\r\n\t<string name=\"ssdk_tumblr\">Tumblr</string>\r\n\t<string name=\"ssdk_dropbox\">Dropbox</string>\r\n\t<string name=\"ssdk_vkontakte\">VK</string>\r\n\t<string name=\"ssdk_instagram\">Instagram</string>\r\n\t<string name=\"ssdk_yixin\">易信</string>\r\n\t<string name=\"ssdk_yixinmoments\">易信朋友圈</string>\r\n\t<string name=\"ssdk_mingdao\">明道</string>\r\n\t<string name=\"ssdk_kakaotalk\">KakaoTalk</string>\r\n\t<string name=\"ssdk_kakaostory\">KakaoStory</string>\r\n\t<string name=\"ssdk_line\">Line</string>\r\n\t<string name=\"ssdk_bluetooth\">蓝牙</string>\r\n\t<string name=\"ssdk_whatsapp\">WhatsApp</string>\r\n\t<string name=\"ssdk_pocket\">Pocket</string>\r\n\t<string name=\"ssdk_instapaper\">Instapaper</string>\r\n\t<string name=\"ssdk_instapaper_email\">邮箱</string>\r\n\t<string name=\"ssdk_instapaper_pwd\">密码</string>\r\n\t<string name=\"ssdk_instapaper_login\">登录</string>\r\n\t<string name=\"ssdk_instapaper_logining\">登录中…</string>\r\n\t<string name=\"ssdk_instapager_email_or_password_incorrect\">Email或密码不正确</string>\r\n    <string name=\"ssdk_facebookmessenger\">Facebook Messenger</string>\r\n    <string name=\"ssdk_baidutieba\">百度贴吧</string>\r\n    <string name=\"ssdk_laiwang\">来往</string>\r\n    <string name=\"ssdk_laiwangmoments\">来往动态</string>\r\n    <string name=\"ssdk_alipay\">支付宝好友</string>\r\n\r\n\t<string name=\"ssdk_share_to_baidutieba\">分享到百度贴吧</string>\r\n\t<string name=\"ssdk_share_to_qzone\">分享到QQ空间</string>\r\n\t<string name=\"ssdk_share_to_qq\">分享到QQ</string>\r\n\t<string name=\"ssdk_mingdao_share_content\">网页分享</string>\r\n\t<string name=\"ssdk_share_to_mingdao\">分享到明道</string>\r\n\t<string name=\"ssdk_share_to_qzone_default\">来自%s的分享</string>\r\n\t<string name=\"ssdk_use_login_button\">请改用“登录”按钮</string>\r\n</resources>"
  },
  {
    "path": "sharesdk/src/main/res/values-en/ssdk_oks_strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n    <string name=\"ssdk_oks_cancel\">Cancel</string>\r\n    <string name=\"ssdk_oks_finish\">Finish</string>\r\n    <string name=\"ssdk_oks_sharing\">Sharing operation is working in the background…</string>\r\n    <string name=\"ssdk_oks_share_to\">Share to </string>\r\n\t<string name=\"ssdk_oks_share\">Share</string>\r\n\t<string name=\"ssdk_oks_multi_share\">Photo Sharing</string>\r\n\t<string name=\"ssdk_oks_share_completed\">Operation succeeded</string>\r\n\t<string name=\"ssdk_oks_share_canceled\">Operation canceled</string>\r\n\t<string name=\"ssdk_oks_select_one_plat_at_least\">Please select a target platform</string>\r\n\t<string name=\"ssdk_oks_list_friends\">Friends on %s</string>\r\n\t<string name=\"ssdk_oks_share_failed\">Operation failed</string>\r\n\t<string name=\"ssdk_oks_pull_to_refresh\">Pull down to refresh</string>\r\n\t<string name=\"ssdk_oks_release_to_refresh\">Release to refresh</string>\r\n\t<string name=\"ssdk_oks_refreshing\">Refreshing…</string>\r\n\t<string name=\"ssdk_oks_shake2share\">Shake your phone!</string>\r\n\t<string name=\"ssdk_oks_select_a_friend\">Please select a friend</string>\r\n</resources>"
  },
  {
    "path": "sharesdk/src/main/res/values-en/ssdk_strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n    <string name=\"ssdk_weibo_oauth_regiseter\">Authorization</string>\r\n    <string name=\"ssdk_website\">http://www.mob.com</string>\r\n    <string name=\"ssdk_weibo_upload_content\">分享图片</string>\r\n    <string name=\"ssdk_wechat_client_inavailable\">Wechat client not exists or the version is too low</string>\r\n    <string name=\"ssdk_google_plus_client_inavailable\">Google+ client not exists or the version is too low</string>\r\n    <string name=\"ssdk_qq_client_inavailable\">Mobile QQ client not exists or the version is too low</string>\r\n    <string name=\"ssdk_pinterest_client_inavailable\">Pinterest client not exists or the version is too low</string>\r\n    <string name=\"ssdk_instagram_client_inavailable\">Instagram client not exists or the version is too low</string>\r\n    <string name=\"ssdk_yixin_client_inavailable\">Yixin client not exists or the version is too low</string>\r\n    <string name=\"ssdk_line_client_inavailable\">Line client not exists or the version is too low</string>\r\n    <string name=\"ssdk_kakaotalk_client_inavailable\">KakaoTalk client not exists or the version is too low</string>\r\n    <string name=\"ssdk_kakaostory_client_inavailable\">KakaoStory client not exists or the version is too low</string>\r\n    <string name=\"ssdk_whatsapp_client_inavailable\">WhatsApp client not exists or the version is too low</string>\r\n    <string name=\"ssdk_laiwang_client_inavailable\">Laiwangs client not exists or the version is too low</string>\r\n    <string name=\"ssdk_alipay_client_inavailable\">Alipay client not exists or the version is too low</string>\r\n    \r\n\t<string name=\"ssdk_sinaweibo\">Sina Weibo</string>\r\n\t<string name=\"ssdk_tencentweibo\">Tencent Weibo</string>\r\n\t<string name=\"ssdk_qzone\">QZone</string>\r\n\t<string name=\"ssdk_wechat\">WeChat</string>\r\n\t<string name=\"ssdk_wechatmoments\">WeChat Moments</string>\r\n\t<string name=\"ssdk_wechatfavorite\">WeChat Favorite</string>\r\n\t<string name=\"ssdk_facebook\">Facebook</string>\r\n\t<string name=\"ssdk_twitter\">Twitter</string>\r\n\t<string name=\"ssdk_renren\">Renren</string>\r\n\t<string name=\"ssdk_kaixin\">Kaixin</string>\r\n\t<string name=\"ssdk_email\">Email</string>\r\n\t<string name=\"ssdk_shortmessage\">Short Message</string>\r\n\t<string name=\"ssdk_sohumicroblog\">Sohu Microblog</string>\r\n\t<string name=\"ssdk_neteasemicroblog\">Netease Microblog</string>\r\n\t<string name=\"ssdk_douban\">Douban</string>\r\n\t<string name=\"ssdk_youdao\">Youdao</string>\r\n\t<string name=\"ssdk_evernote\">Evernote</string>\r\n\t<string name=\"ssdk_linkedin\">Linked in</string>\r\n\t<string name=\"ssdk_googleplus\">Google+</string>\r\n\t<string name=\"ssdk_foursquare\">FourSquare</string>\r\n\t<string name=\"ssdk_qq\">QQ</string>\r\n\t<string name=\"ssdk_sohusuishenkan\">Sohu Suishenkan</string>\r\n\t<string name=\"ssdk_pinterest\">Pinterest</string>\r\n\t<string name=\"ssdk_flickr\">Flickr</string>\r\n\t<string name=\"ssdk_tumblr\">Tumblr</string>\r\n\t<string name=\"ssdk_dropbox\">Dropbox</string>\r\n\t<string name=\"ssdk_vkontakte\">VK</string>\r\n\t<string name=\"ssdk_instagram\">Instagram</string>\r\n\t<string name=\"ssdk_yixin\">Yixin</string>\r\n\t<string name=\"ssdk_yixinmoments\">Yixin Moments</string>\r\n\t<string name=\"ssdk_mingdao\">Mingdao</string>\r\n\t<string name=\"ssdk_kakaotalk\">KakaoTalk</string>\r\n\t<string name=\"ssdk_kakaostory\">KakaoStory</string>\r\n\t<string name=\"ssdk_line\">Line</string>\r\n\t<string name=\"ssdk_bluetooth\">Bluetooth</string>\r\n\t<string name=\"ssdk_whatsapp\">WhatsApp</string>\r\n    <string name=\"ssdk_pocket\">Pocket</string>\r\n    <string name=\"ssdk_instapaper\">Instapaper</string>\r\n\t<string name=\"ssdk_instapaper_email\">Email</string>\r\n\t<string name=\"ssdk_instapaper_pwd\">Password</string>\r\n\t<string name=\"ssdk_instapaper_login\">Sign In</string>\r\n    <string name=\"ssdk_instapaper_logining\">Sign In…</string>\r\n\t<string name=\"ssdk_instapager_email_or_password_incorrect\">Email or Password incorrect</string>\r\n    <string name=\"ssdk_facebookmessenger\">Facebook Messenger</string>\r\n    <string name=\"ssdk_laiwang\">Laiwang</string>\r\n    <string name=\"ssdk_laiwangmoments\">Laiwang Moments</string>\r\n    <string name=\"ssdk_alipay\">Alipay</string>\r\n\r\n\t<string name=\"ssdk_share_to_qzone\">Share To QZone</string>\r\n\t<string name=\"ssdk_share_to_qq\">Share To QQ</string>\r\n\t<string name=\"ssdk_mingdao_share_content\">Share webpage</string>\r\n\t<string name=\"ssdk_share_to_mingdao\">Share To Mingdao</string>\r\n\t<string name=\"ssdk_share_to_qzone_default\">Shared from %s</string>\r\n\t<string name=\"ssdk_use_login_button\">use login button instead</string>\r\n</resources>"
  }
]