├── .gitignore ├── README.md ├── album ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── licrafter │ │ └── album │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── boxing_impl │ │ │ ├── WindowManagerHelper.java │ │ │ ├── adapter │ │ │ ├── BoxingAlbumAdapter.java │ │ │ └── BoxingMediaAdapter.java │ │ │ ├── ui │ │ │ ├── BoxingActivity.java │ │ │ ├── BoxingBottomSheetActivity.java │ │ │ ├── BoxingBottomSheetFragment.java │ │ │ ├── BoxingRawImageFragment.java │ │ │ ├── BoxingViewActivity.java │ │ │ └── BoxingViewFragment.java │ │ │ └── view │ │ │ ├── HackyViewPager.java │ │ │ ├── MediaItemLayout.java │ │ │ └── SpacesItemDecoration.java │ └── res │ │ ├── anim │ │ ├── fade_in.xml │ │ └── fade_out.xml │ │ ├── drawable-hdpi │ │ ├── ic_broken_image.png │ │ ├── ic_camera.png │ │ ├── ic_camera_white.png │ │ ├── ic_check_black.png │ │ ├── ic_checked.png │ │ ├── ic_default_image.png │ │ └── ic_play.png │ │ ├── drawable-xhdpi │ │ ├── ic_broken_image.png │ │ ├── ic_camera.png │ │ ├── ic_camera_white.png │ │ ├── ic_check_black.png │ │ ├── ic_checked.png │ │ ├── ic_default_image.png │ │ └── ic_play.png │ │ ├── drawable-xxhdpi │ │ ├── ic_broken_image.png │ │ ├── ic_camera.png │ │ ├── ic_camera_white.png │ │ ├── ic_check_black.png │ │ ├── ic_checked.png │ │ ├── ic_default_image.png │ │ └── ic_play.png │ │ ├── drawable │ │ ├── ic_unchecked.xml │ │ ├── selector_button_solid.xml │ │ └── shape_popup_background_material.xml │ │ ├── layout │ │ ├── activity_boxing.xml │ │ ├── activity_boxing_bottom_sheet.xml │ │ ├── activity_boxing_view.xml │ │ ├── fragmant_boxing_view.xml │ │ ├── fragment_boxing_bottom_sheet.xml │ │ ├── fragment_boxing_raw_image.xml │ │ ├── layout_album.xml │ │ ├── layout_album_item.xml │ │ ├── layout_app_bar.xml │ │ ├── layout_empty_txt.xml │ │ ├── layout_media_item.xml │ │ ├── layout_recycleview_header.xml │ │ ├── layout_recycleview_item.xml │ │ └── layout_simple_media_item.xml │ │ ├── menu │ │ ├── activity_image_viewer.xml │ │ └── activity_pick_flow.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── licrafter │ └── album │ └── ExampleUnitTest.java ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── licrafter │ │ └── cnode │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── css │ │ │ └── github.css │ │ ├── html │ │ │ └── markdown.html │ │ └── js │ │ │ ├── jquery-3.1.1.min.js │ │ │ ├── markdownview.js │ │ │ └── marked.min.js │ ├── java │ │ └── com │ │ │ └── licrafter │ │ │ └── cnode │ │ │ ├── BaseApplication.java │ │ │ ├── api │ │ │ ├── CNodeApi.java │ │ │ ├── Urls.java │ │ │ └── service │ │ │ │ └── CNodeService.java │ │ │ ├── base │ │ │ ├── BaseActivity.java │ │ │ └── BaseFragment.java │ │ │ ├── cache │ │ │ └── UserCache.java │ │ │ ├── model │ │ │ ├── AccessTokenBody.java │ │ │ ├── CollectionBody.java │ │ │ ├── LoginBody.java │ │ │ ├── LoginResultModel.java │ │ │ ├── MarkResultModel.java │ │ │ ├── NotificationModel.java │ │ │ ├── PostTopicResultModel.java │ │ │ ├── ReplyBody.java │ │ │ ├── ReplyResultModel.java │ │ │ ├── TabModel.java │ │ │ ├── TopicDetailModel.java │ │ │ ├── UnReadCountModel.java │ │ │ ├── UserDetailModel.java │ │ │ └── entity │ │ │ │ ├── Author.java │ │ │ │ ├── Notification.java │ │ │ │ ├── PostTopic.java │ │ │ │ ├── Reply.java │ │ │ │ ├── TAB.java │ │ │ │ ├── Topic.java │ │ │ │ ├── TopicDetail.java │ │ │ │ └── UserDetail.java │ │ │ ├── mvp │ │ │ ├── presenter │ │ │ │ ├── BasePresenter.java │ │ │ │ ├── LoginPresenter.java │ │ │ │ ├── MarkdownEditPresenter.java │ │ │ │ ├── NotificationCenterPresenter.java │ │ │ │ ├── TopicDetailPresenter.java │ │ │ │ ├── TopicListPresenter.java │ │ │ │ └── UserDetailPresenter.java │ │ │ └── view │ │ │ │ └── MvpView.java │ │ │ ├── ui │ │ │ ├── activity │ │ │ │ ├── LoginActivity.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MarkdownEditActivity.java │ │ │ │ ├── NotificationCenterActivity.java │ │ │ │ ├── QRActivity.java │ │ │ │ └── TopicDetailActivity.java │ │ │ └── fragment │ │ │ │ ├── CategoryFragment.java │ │ │ │ ├── HomePageFragment.java │ │ │ │ ├── MdEditFragment.java │ │ │ │ ├── MdPreviewFragment.java │ │ │ │ ├── MineFragment.java │ │ │ │ ├── MineTopicListFragment.java │ │ │ │ └── TopicListFragment.java │ │ │ ├── utils │ │ │ ├── BitmapCompressUtil.java │ │ │ ├── DateUtils.java │ │ │ ├── DipConvertUtils.java │ │ │ ├── FragmentUtils.java │ │ │ ├── ImageLoader.java │ │ │ ├── IntentUtils.java │ │ │ ├── LogUtils.java │ │ │ ├── PermissionUtils.java │ │ │ ├── SharedPreferenceUtils.java │ │ │ ├── StatusBarUtils.java │ │ │ ├── SwipeRefreshUtils.java │ │ │ ├── TopicDividerDecoration.java │ │ │ └── http │ │ │ │ ├── CustomCookieJar.java │ │ │ │ ├── HttpClient.java │ │ │ │ ├── PersistentCookieStore.java │ │ │ │ └── SerializableHttpCookie.java │ │ │ └── widget │ │ │ ├── BoxingPicassoLoader.java │ │ │ ├── BoxingUcrop.java │ │ │ ├── CNodeWebView.java │ │ │ ├── HorizontalOperatorView.java │ │ │ ├── MarkdownPreview.java │ │ │ ├── NotScrollViewPager.java │ │ │ ├── dialog │ │ │ ├── InsertLinkDialog.java │ │ │ └── UploadingDialog.java │ │ │ ├── richEditView │ │ │ └── engine │ │ │ │ └── PerformEditable.java │ │ │ └── richTextView │ │ │ ├── AsyncImageGetter.java │ │ │ └── RichTextView.java │ └── res │ │ ├── anim │ │ ├── fragment_pop_in.xml │ │ ├── fragment_pop_out.xml │ │ ├── fragment_translate_in.xml │ │ └── fragment_translate_out.xml │ │ ├── color │ │ └── color_bottom_navigation_item.xml │ │ ├── drawable │ │ ├── bg_gray_rect.xml │ │ ├── bg_operator_clicked.xml │ │ ├── bg_red_dot.xml │ │ ├── bg_topic_tag.xml │ │ └── bg_topic_tag_normal.xml │ │ ├── layout │ │ ├── activity_login.xml │ │ ├── activity_main.xml │ │ ├── activity_markdown_edit.xml │ │ ├── activity_notification_center.xml │ │ ├── activity_qr.xml │ │ ├── activity_topic_detail.xml │ │ ├── fragment_category.xml │ │ ├── fragment_home_page.xml │ │ ├── fragment_md_edit.xml │ │ ├── fragment_md_preview.xml │ │ ├── fragment_mine.xml │ │ ├── fragment_mine_topic_list.xml │ │ ├── fragment_topic_list.xml │ │ ├── include_comments_bottom_sheet.xml │ │ ├── item_detail_header.xml │ │ ├── item_empty.xml │ │ ├── item_footer.xml │ │ ├── item_notification.xml │ │ ├── item_reply.xml │ │ ├── item_reply_count.xml │ │ ├── item_topic.xml │ │ ├── layout_insert_link_dialog.xml │ │ ├── layout_operator.xml │ │ ├── layout_uploading_dialog.xml │ │ ├── toolbar_common.xml │ │ └── toolbar_create_topic.xml │ │ ├── menu │ │ ├── menu_bottom_navigation.xml │ │ ├── menu_send_post.xml │ │ └── menu_topic_detail.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_code.png │ │ ├── ic_collected.png │ │ ├── ic_comment.png │ │ ├── ic_comment_gray.png │ │ ├── ic_create_topic.png │ │ ├── ic_empty.png │ │ ├── ic_font_blod.png │ │ ├── ic_font_italic.png │ │ ├── ic_gray_dot.png │ │ ├── ic_image.png │ │ ├── ic_launcher.png │ │ ├── ic_link.png │ │ ├── ic_more_infomation.png │ │ ├── ic_notification.png │ │ ├── ic_ol.png │ │ ├── ic_preview.png │ │ ├── ic_profit_bg.jpg │ │ ├── ic_quote.png │ │ ├── ic_reply.png │ │ ├── ic_send.png │ │ ├── ic_settings.png │ │ ├── ic_share.png │ │ ├── ic_tab_category.png │ │ ├── ic_tab_home_page.png │ │ ├── ic_tab_mine.png │ │ ├── ic_tab_notification.png │ │ ├── ic_ul.png │ │ ├── ic_uncollected.png │ │ ├── ic_unup.png │ │ ├── ic_up.png │ │ └── ic_visit.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-v19 │ │ └── dimens.xml │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── licrafter │ └── cnode │ └── ExampleUnitTest.java ├── art ├── 01.jpg ├── 02.jpg ├── 03.jpg ├── 04.jpg ├── 05.jpg ├── 06.jpg ├── 07.jpg └── 08.jpg ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | .idea/ 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CNode-android 2 | a unofficial android client of [https://cnodejs.org/](https://cnodejs.org/) 3 | 4 | [![](https://img.shields.io/badge/android%20client-CNode-brightgreen.svg)](https://github.com/shellljx/Cnode-android) 5 | [![](https://img.shields.io/github/issues/shellljx/CNode-android.svg)](https://github.com/shellljx/CNode-android/issues) 6 | ![](https://img.shields.io/circleci/project/github/RedSparr0w/node-csgo-parser.svg) 7 | 8 | # Apk Download 9 | 10 | [https://fir.im/r26f](https://fir.im/r26f) 11 | 12 | # Completed 13 | 14 | * 扫码登录功能 15 | * 获取文章等信息并展示功能 16 | * Markdown编辑器以及预览功能 17 | * 发表文章和评论,以及点赞等功能 18 | * 对Fragment的内存恢复做了处理 19 | * 图片压缩上传 20 | 21 | # Screenshots 22 | 23 | 24 | # Thanks to the open source project 25 | * [RxJava](https://github.com/ReactiveX/RxJava) 26 | * [Butterknife](https://github.com/JakeWharton/butterknife) 27 | * [Picasso](https://github.com/square/picasso) 28 | * [Retrofix](https://github.com/square/retrofit) 29 | * [RoundedImageview](https://github.com/vinc3m1/RoundedImageView) 30 | * [Zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded) 31 | * [Avoscloud-sdk](https://github.com/leancloud/leancloud-sdk) 32 | * [Bilibili-Boxing](https://github.com/Bilibili/boxing) 33 | -------------------------------------------------------------------------------- /album/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /album/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion '26.0.2' 6 | 7 | defaultConfig { 8 | minSdkVersion 16 9 | targetSdkVersion 25 10 | versionCode 1 11 | versionName "1.0" 12 | 13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 14 | 15 | } 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | } 23 | 24 | dependencies { 25 | compile fileTree(dir: 'libs', include: ['*.jar']) 26 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 27 | exclude group: 'com.android.support', module: 'support-annotations' 28 | }) 29 | compile 'com.android.support:appcompat-v7:25.3.1' 30 | compile 'com.android.support:design:25.3.1' 31 | compile('com.chensl.rotatephotoview:rotatephotoview:1.0.5') { 32 | exclude group: 'com.android.support', module: 'appcompat' 33 | exclude group: 'com.android.support', module: 'support-v4' 34 | exclude module: 'recyclerview-v7' 35 | } 36 | compile 'com.bilibili:boxing:0.5.0' 37 | testCompile 'junit:junit:4.12' 38 | } 39 | -------------------------------------------------------------------------------- /album/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk-macosx/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /album/src/androidTest/java/com/licrafter/album/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.licrafter.album; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.licrafter.album.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /album/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 12 | 13 | 14 | 19 | 20 | 21 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /album/src/main/java/boxing_impl/WindowManagerHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 Bilibili 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package boxing_impl; 19 | 20 | import android.content.Context; 21 | import android.util.DisplayMetrics; 22 | import android.util.TypedValue; 23 | import android.view.Display; 24 | import android.view.WindowManager; 25 | 26 | /** 27 | * @author ChenSL 28 | */ 29 | public class WindowManagerHelper { 30 | private static WindowManager getWindowManager(Context context) { 31 | Object service = context.getSystemService(Context.WINDOW_SERVICE); 32 | if (service == null) 33 | return null; 34 | 35 | return (WindowManager) service; 36 | } 37 | 38 | private static Display getDefaultDisplay(Context context) { 39 | WindowManager wm = getWindowManager(context); 40 | if (wm == null) 41 | return null; 42 | 43 | return wm.getDefaultDisplay(); 44 | } 45 | 46 | public static int getScreenHeight(Context context) { 47 | DisplayMetrics dm = getDisplayMetrics(context); 48 | if (dm != null) { 49 | return dm.heightPixels; 50 | } 51 | return 0; 52 | } 53 | 54 | public static int getScreenWidth(Context context) { 55 | DisplayMetrics dm = getDisplayMetrics(context); 56 | if (dm != null) { 57 | return dm.widthPixels; 58 | } 59 | return 0; 60 | } 61 | 62 | private static DisplayMetrics getDisplayMetrics(Context context) { 63 | Display display = getDefaultDisplay(context); 64 | if (display != null) { 65 | DisplayMetrics result = new DisplayMetrics(); 66 | display.getMetrics(result); 67 | return result; 68 | } 69 | return null; 70 | } 71 | 72 | public static int getStatusBarHeight(Context context) { 73 | int result = 0; 74 | int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); 75 | if (resourceId > 0) { 76 | result = context.getResources().getDimensionPixelSize(resourceId); 77 | } 78 | return result; 79 | } 80 | 81 | public static int getToolbarHeight(Context context) { 82 | TypedValue tv = new TypedValue(); 83 | if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { 84 | return TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics()); 85 | } 86 | return 0; 87 | } 88 | 89 | } 90 | -------------------------------------------------------------------------------- /album/src/main/java/boxing_impl/view/HackyViewPager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 Bilibili 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package boxing_impl.view; 19 | 20 | import android.content.Context; 21 | import android.support.v4.view.ViewPager; 22 | import android.util.AttributeSet; 23 | import android.view.MotionEvent; 24 | 25 | /** 26 | * https://github.com/chrisbanes/PhotoView/issues/35 27 | */ 28 | public class HackyViewPager extends ViewPager { 29 | private boolean mIsLocked; 30 | 31 | public HackyViewPager(Context context) { 32 | super(context); 33 | mIsLocked = false; 34 | } 35 | 36 | public HackyViewPager(Context context, AttributeSet attrs) { 37 | super(context, attrs); 38 | mIsLocked = false; 39 | } 40 | 41 | @Override 42 | public boolean onInterceptTouchEvent(MotionEvent ev) { 43 | if (!mIsLocked) { 44 | try { 45 | return super.onInterceptTouchEvent(ev); 46 | } catch (IllegalArgumentException e) { 47 | return false; 48 | } 49 | } 50 | return false; 51 | } 52 | 53 | @Override 54 | public boolean onTouchEvent(MotionEvent event) { 55 | return !mIsLocked && super.onTouchEvent(event); 56 | } 57 | 58 | public boolean isLocked() { 59 | return mIsLocked; 60 | } 61 | 62 | public void setLocked(boolean isLocked) { 63 | this.mIsLocked = isLocked; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /album/src/main/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 | 26 | 27 | -------------------------------------------------------------------------------- /album/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 | 26 | 27 | -------------------------------------------------------------------------------- /album/src/main/res/drawable-hdpi/ic_broken_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-hdpi/ic_broken_image.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-hdpi/ic_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-hdpi/ic_camera.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-hdpi/ic_camera_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-hdpi/ic_camera_white.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-hdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-hdpi/ic_check_black.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-hdpi/ic_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-hdpi/ic_checked.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-hdpi/ic_default_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-hdpi/ic_default_image.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-hdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-hdpi/ic_play.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xhdpi/ic_broken_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xhdpi/ic_broken_image.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xhdpi/ic_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xhdpi/ic_camera.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xhdpi/ic_camera_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xhdpi/ic_camera_white.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xhdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xhdpi/ic_check_black.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xhdpi/ic_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xhdpi/ic_checked.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xhdpi/ic_default_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xhdpi/ic_default_image.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xhdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xhdpi/ic_play.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xxhdpi/ic_broken_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xxhdpi/ic_broken_image.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xxhdpi/ic_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xxhdpi/ic_camera.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xxhdpi/ic_camera_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xxhdpi/ic_camera_white.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xxhdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xxhdpi/ic_check_black.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xxhdpi/ic_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xxhdpi/ic_checked.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xxhdpi/ic_default_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xxhdpi/ic_default_image.png -------------------------------------------------------------------------------- /album/src/main/res/drawable-xxhdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shellljx/CNode-android/69d4911a5176c5ff4db1dd9136b4bf0a394e04e6/album/src/main/res/drawable-xxhdpi/ic_play.png -------------------------------------------------------------------------------- /album/src/main/res/drawable/ic_unchecked.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 21 | 22 | 23 | 24 | 27 | 28 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /album/src/main/res/drawable/selector_button_solid.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /album/src/main/res/drawable/shape_popup_background_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 21 | 22 | 24 | 26 | 27 | -------------------------------------------------------------------------------- /album/src/main/res/layout/activity_boxing.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 24 | 25 | 31 | 32 | 43 | 44 | 45 | 50 | 51 | -------------------------------------------------------------------------------- /album/src/main/res/layout/activity_boxing_bottom_sheet.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 24 | 25 | 29 | 30 | 31 | 32 | 38 | 39 | 40 | 41 | 49 | 50 | -------------------------------------------------------------------------------- /album/src/main/res/layout/activity_boxing_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 27 | 28 | 34 | 35 | 45 | 46 | 47 | 55 | 56 | 62 | 63 | 69 | 70 |