├── .gitignore ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── onehookinc │ │ └── onehooklibraryandroid │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── onehookinc │ │ └── onehooklibraryandroid │ │ └── sample │ │ ├── MainActivity.java │ │ ├── SampleItem.java │ │ ├── SampleListFragment.java │ │ ├── common │ │ ├── BaseActivity.java │ │ ├── BaseFragment.java │ │ ├── BaseListFragment.java │ │ └── StackActivity.java │ │ └── samples │ │ ├── NotFoundFragment.java │ │ ├── demo │ │ ├── dateviewpager │ │ │ ├── DateViewPaperDemo.java │ │ │ └── SimpleCardsFragment.java │ │ └── kotlin │ │ │ └── KotlinTryFragment.kt │ │ ├── dialogs │ │ └── DialogsDemoFragment.java │ │ ├── utility │ │ └── DeviceUtilFragment.java │ │ └── views │ │ ├── ActivityOverlaySampleFragment.java │ │ ├── ConfettiViewSampleFragment.java │ │ ├── DigitEnterViewSampleFragment.java │ │ ├── FlipperViewSampleFragment.java │ │ ├── FlowLayoutSampleFragment.java │ │ ├── MiscViewSampleFragment.java │ │ ├── ProgressViewSampleFragment.java │ │ ├── ScaleViewSampleFragment.java │ │ ├── StackLayoutSampleFragment.java │ │ ├── ViewPagerSampleFragment.java │ │ └── ViewPagerTransformationSampleFragment.java │ ├── res │ ├── drawable-nodpi │ │ ├── footer.JPG │ │ └── ic_oda_avatar.png │ ├── drawable │ │ └── background_red_rounded.xml │ ├── layout │ │ ├── activity_main.xml │ │ ├── activity_single_fragment.xml │ │ ├── cell_rounded_corner.xml │ │ ├── cell_sample_item.xml │ │ ├── fragment_base_list.xml │ │ ├── fragment_base_list_no_toolbar.xml │ │ ├── fragment_demo_date_viewpager.xml │ │ ├── fragment_sample_activity_overlay.xml │ │ ├── fragment_sample_confetti_view.xml │ │ ├── fragment_sample_device_util.xml │ │ ├── fragment_sample_digit_enter_view.xml │ │ ├── fragment_sample_flipper_view.xml │ │ ├── fragment_sample_flow_layout.xml │ │ ├── fragment_sample_progress_view.xml │ │ ├── fragment_sample_scale_view.xml │ │ ├── fragment_sample_stack_layout.xml │ │ ├── fragment_sample_view_dialogs.xml │ │ ├── fragment_sample_view_misc.xml │ │ ├── fragment_sample_view_not_found.xml │ │ ├── fragment_sample_view_pagers.xml │ │ ├── fragment_sample_view_pagers_trans.xml │ │ ├── item_textview_rounded.xml │ │ └── view_popup.xml │ ├── menu │ │ └── menu_main.xml │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ ├── values-w820dp │ │ └── dimens.xml │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── web_hi_res_512.png ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── onehookinclibrary ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ ├── facebook │ │ └── shimmer │ │ │ └── ShimmerFrameLayout.java │ │ └── onehook │ │ ├── app │ │ ├── BaseWebViewFragment.java │ │ ├── FullImageViewFragment.java │ │ ├── OHAlertDialogFragment.java │ │ ├── OHCompactAlertDialogFragment.java │ │ ├── ProgressDialogFragment.java │ │ └── util │ │ │ └── IconTitleListAdapter.java │ │ ├── hardward │ │ └── camera │ │ │ ├── BaseCameraController.java │ │ │ ├── CameraConfig.java │ │ │ ├── CameraControllerCallback.java │ │ │ ├── CameraControllerFactory.java │ │ │ ├── PictureInfo.java │ │ │ ├── camera1 │ │ │ ├── Camera1Controller.java │ │ │ └── Camera1View.java │ │ │ └── camera2 │ │ │ └── Camera2Controller.java │ │ ├── thirdparty │ │ ├── AutoResizeTextView.java │ │ ├── TouchImageView.java │ │ └── VerticalSeekBar.java │ │ ├── util │ │ ├── CustomTypefaceSpan.java │ │ ├── ImagePickingHelper.java │ │ ├── StringUtil.java │ │ ├── animator │ │ │ ├── AnimationEndListener.java │ │ │ ├── AnimationGenerator.java │ │ │ └── interpolator │ │ │ │ └── PopInterpolator.java │ │ ├── bitmap │ │ │ ├── BitmapUtility.java │ │ │ └── DarkenPostprocessor.java │ │ ├── color │ │ │ └── ColorUtility.java │ │ ├── concurrency │ │ │ ├── Job.java │ │ │ ├── OneHookKeyedThreadPoolExecutor.java │ │ │ ├── OneHookKeyedThreadPoolExecutorConfig.java │ │ │ └── SimpleJob.java │ │ ├── debugging │ │ │ └── Cheeses.java │ │ ├── device │ │ │ └── DeviceInfoUtil.java │ │ ├── file │ │ │ └── FileUtil.java │ │ ├── listener │ │ │ └── SimpleTextWatcher.java │ │ ├── time │ │ │ └── timeago │ │ │ │ ├── OHDateUtils.java │ │ │ │ └── TimeAgo.java │ │ └── touchevent │ │ │ ├── CollapseAppBarLayoutOnScrollListener.java │ │ │ └── TouchEventGesture.java │ │ ├── view │ │ ├── AnimatedCircleToggle.java │ │ ├── AnimatedNumberTextView.java │ │ ├── ButtonWithBadge.java │ │ ├── DigitInputView.java │ │ ├── FitRatioFrameLayout.java │ │ ├── FlowLayout.java │ │ ├── ScaleView.java │ │ ├── StackLayout.java │ │ ├── confetti │ │ │ ├── ConfettiCellBuilder.java │ │ │ ├── ConfettiView.java │ │ │ └── ConfettiViewImageCell.java │ │ ├── deprecated │ │ │ ├── CountDownTimerTextView.java │ │ │ └── RoundedCornerFragmentLayout.java │ │ ├── overlay │ │ │ └── ActivityOverlayView.java │ │ ├── pageindicator │ │ │ └── PagerIndicator.java │ │ ├── pager │ │ │ ├── NonSwipableRecyclerViewPager.java │ │ │ ├── NonSwipeableViewPager.java │ │ │ ├── SimpleViewPagerAdapter.java │ │ │ ├── SlideShowViewPager.java │ │ │ ├── VerticalViewPager.java │ │ │ ├── ViewPagerUtility.java │ │ │ └── transformer │ │ │ │ ├── CarouselTransformer.java │ │ │ │ ├── DepthPageTransformer.java │ │ │ │ ├── PagerAlphaTransformer.java │ │ │ │ ├── StackTransformer.java │ │ │ │ ├── VerticalPagerDefaultTransformer.java │ │ │ │ └── ZoomOutTransformer.java │ │ ├── progress │ │ │ ├── IconProgressView.java │ │ │ ├── ProgressBar.java │ │ │ └── ProgressRing.java │ │ └── viewflipper │ │ │ └── FlipperView.java │ │ └── widget │ │ ├── FlexGridLayoutManager.java │ │ ├── ParallaxOnScrollListener.java │ │ ├── RecyclerViewWithInset.java │ │ ├── adapter │ │ ├── BaseRecyclerViewAdapter.java │ │ ├── BaseRecyclerViewAdapterWithHeaderFooter.java │ │ ├── BaseWrapperRecyclerViewAdapter.java │ │ ├── InfinitePagerAdapter.java │ │ ├── RecyclerViewLoadingAdapter.java │ │ └── TaggedFragmentStatePagerAdapter.java │ │ ├── listener │ │ └── OnItemClickListener.java │ │ └── recyclerview │ │ ├── OverScrollLinearLayoutManager.java │ │ ├── RecyclerViewPager.java │ │ ├── RecyclerViewPagerAdapter.java │ │ ├── SpaceItemDecoration.java │ │ ├── SquareGridLayoutManager.java │ │ └── ViewUtils.java │ └── res │ ├── anim │ ├── anim_enter_sliding_left.xml │ ├── anim_enter_sliding_right.xml │ ├── anim_exit_sliding_left.xml │ ├── anim_exit_sliding_right.xml │ ├── anim_fade_in.xml │ ├── anim_fade_out.xml │ ├── anim_none.xml │ ├── anim_pop_in.xml │ ├── anim_sliding_down.xml │ └── anim_sliding_up.xml │ ├── drawable-hdpi │ ├── ic_close_black_18dp.png │ ├── ic_close_black_24dp.png │ ├── ic_close_black_36dp.png │ ├── ic_close_black_48dp.png │ ├── ic_close_white_18dp.png │ ├── ic_close_white_24dp.png │ ├── ic_close_white_36dp.png │ ├── ic_close_white_48dp.png │ ├── ic_search_black_24dp.png │ ├── ic_settings_black_18dp.png │ ├── ic_settings_black_24dp.png │ ├── ic_settings_black_36dp.png │ ├── ic_settings_black_48dp.png │ ├── ic_settings_white_18dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_settings_white_36dp.png │ ├── ic_settings_white_48dp.png │ ├── ic_share_black_18dp.png │ ├── ic_share_black_24dp.png │ ├── ic_share_black_36dp.png │ ├── ic_share_black_48dp.png │ ├── ic_share_white_18dp.png │ ├── ic_share_white_24dp.png │ ├── ic_share_white_36dp.png │ └── ic_share_white_48dp.png │ ├── drawable-mdpi │ ├── ic_close_black_18dp.png │ ├── ic_close_black_24dp.png │ ├── ic_close_black_36dp.png │ ├── ic_close_black_48dp.png │ ├── ic_close_white_18dp.png │ ├── ic_close_white_24dp.png │ ├── ic_close_white_36dp.png │ ├── ic_close_white_48dp.png │ ├── ic_search_black_24dp.png │ ├── ic_settings_black_18dp.png │ ├── ic_settings_black_24dp.png │ ├── ic_settings_black_36dp.png │ ├── ic_settings_black_48dp.png │ ├── ic_settings_white_18dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_settings_white_36dp.png │ ├── ic_settings_white_48dp.png │ ├── ic_share_black_18dp.png │ ├── ic_share_black_24dp.png │ ├── ic_share_black_36dp.png │ ├── ic_share_black_48dp.png │ ├── ic_share_white_18dp.png │ ├── ic_share_white_24dp.png │ ├── ic_share_white_36dp.png │ └── ic_share_white_48dp.png │ ├── drawable-xhdpi │ ├── ic_close_black_18dp.png │ ├── ic_close_black_24dp.png │ ├── ic_close_black_36dp.png │ ├── ic_close_black_48dp.png │ ├── ic_close_white_18dp.png │ ├── ic_close_white_24dp.png │ ├── ic_close_white_36dp.png │ ├── ic_close_white_48dp.png │ ├── ic_search_black_24dp.png │ ├── ic_settings_black_18dp.png │ ├── ic_settings_black_24dp.png │ ├── ic_settings_black_36dp.png │ ├── ic_settings_black_48dp.png │ ├── ic_settings_white_18dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_settings_white_36dp.png │ ├── ic_settings_white_48dp.png │ ├── ic_share_black_18dp.png │ ├── ic_share_black_24dp.png │ ├── ic_share_black_36dp.png │ ├── ic_share_black_48dp.png │ ├── ic_share_white_18dp.png │ ├── ic_share_white_24dp.png │ ├── ic_share_white_36dp.png │ └── ic_share_white_48dp.png │ ├── drawable-xxhdpi │ ├── ic_close_black_18dp.png │ ├── ic_close_black_24dp.png │ ├── ic_close_black_36dp.png │ ├── ic_close_black_48dp.png │ ├── ic_close_white_18dp.png │ ├── ic_close_white_24dp.png │ ├── ic_close_white_36dp.png │ ├── ic_close_white_48dp.png │ ├── ic_search_black_24dp.png │ ├── ic_settings_black_18dp.png │ ├── ic_settings_black_24dp.png │ ├── ic_settings_black_36dp.png │ ├── ic_settings_black_48dp.png │ ├── ic_settings_white_18dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_settings_white_36dp.png │ ├── ic_settings_white_48dp.png │ ├── ic_share_black_18dp.png │ ├── ic_share_black_24dp.png │ ├── ic_share_black_36dp.png │ ├── ic_share_black_48dp.png │ ├── ic_share_white_18dp.png │ ├── ic_share_white_24dp.png │ ├── ic_share_white_36dp.png │ └── ic_share_white_48dp.png │ ├── drawable-xxxhdpi │ ├── ic_close_black_18dp.png │ ├── ic_close_black_24dp.png │ ├── ic_close_black_36dp.png │ ├── ic_close_black_48dp.png │ ├── ic_close_white_18dp.png │ ├── ic_close_white_24dp.png │ ├── ic_close_white_36dp.png │ ├── ic_close_white_48dp.png │ ├── ic_search_black_24dp.png │ ├── ic_settings_black_18dp.png │ ├── ic_settings_black_24dp.png │ ├── ic_settings_black_36dp.png │ ├── ic_settings_black_48dp.png │ ├── ic_settings_white_18dp.png │ ├── ic_settings_white_24dp.png │ ├── ic_settings_white_36dp.png │ ├── ic_settings_white_48dp.png │ ├── ic_share_black_18dp.png │ ├── ic_share_black_24dp.png │ ├── ic_share_black_36dp.png │ ├── ic_share_black_48dp.png │ ├── ic_share_white_18dp.png │ ├── ic_share_white_24dp.png │ ├── ic_share_white_36dp.png │ └── ic_share_white_48dp.png │ ├── drawable │ └── background_tag_cell_default.xml │ ├── layout │ ├── fragment_full_image_view.xml │ ├── fragment_stack_layout_demo.xml │ ├── item_row_icon_title.xml │ └── view_adapter_loading.xml │ ├── values-fr │ └── strings.xml │ ├── values-sw360dp │ └── dimens_common.xml │ ├── values-sw400dp │ └── dimens_common.xml │ ├── values-sw600dp │ └── values.xml │ ├── values-zh-rCN │ └── strings_date.xml │ ├── values-zh-rTW │ └── strings_date.xml │ └── values │ ├── attrs.xml │ ├── colors_common.xml │ ├── dimens_common.xml │ ├── ids.xml │ ├── strings.xml │ ├── strings_common.xml │ ├── strings_date.xml │ ├── strings_time_format.xml │ ├── styles_base.xml │ └── values.xml ├── script └── JavaClassToObjC.py └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | .idea 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | /script/*.txt 11 | /script/*.h 12 | /script/*.m 13 | oneHookLibraryAndroid.iml 14 | app/app.iml 15 | onehookinclibrary/onehookinclibrary.iml 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # oneHookLibraryAndroid 2 | ## Deprecated 3 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'kotlin-android' 3 | 4 | android { 5 | compileSdkVersion 27 6 | buildToolsVersion "27.0.3" 7 | 8 | defaultConfig { 9 | applicationId "com.onehookinc.onehooklibraryandroid" 10 | minSdkVersion 15 11 | targetSdkVersion 27 12 | versionCode 1 13 | versionName "1.0" 14 | } 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | compileOptions { 22 | sourceCompatibility JavaVersion.VERSION_1_8 23 | targetCompatibility JavaVersion.VERSION_1_8 24 | } 25 | } 26 | 27 | dependencies { 28 | implementation fileTree(include: ['*.jar'], dir: 'libs') 29 | implementation project(':onehookinclibrary') 30 | implementation 'com.android.support:appcompat-v7:27.1.1' 31 | implementation 'com.android.support:design:27.1.1' 32 | implementation 'com.android.support:cardview-v7:27.1.1' 33 | compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 34 | 35 | } 36 | repositories { 37 | mavenCentral() 38 | } 39 | -------------------------------------------------------------------------------- /app/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 /Users/EagleDiao/Programming/SDK/sdk/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 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/onehookinc/onehooklibraryandroid/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/common/BaseActivity.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.common; 2 | 3 | import android.content.Intent; 4 | import android.support.v7.app.AppCompatActivity; 5 | 6 | import com.onehookinc.onehooklibraryandroid.R; 7 | 8 | public class BaseActivity extends AppCompatActivity { 9 | 10 | public void startActivityAsSheet(final Intent intent) { 11 | startActivity(intent); 12 | overridePendingTransition(R.anim.anim_sliding_up, R.anim.anim_none); 13 | } 14 | 15 | public void startActivityFadeIn(final Intent intent) { 16 | startActivity(intent); 17 | overridePendingTransition(R.anim.anim_fade_in, R.anim.anim_fade_out); 18 | } 19 | 20 | public void startActivityAsStack(final Intent intent) { 21 | startActivity(intent); 22 | overridePendingTransition(R.anim.anim_enter_sliding_left, R.anim.anim_exit_sliding_left); 23 | } 24 | 25 | public void startActivityForResultAsSheet(final Intent intent, final int requestCode) { 26 | startActivityForResult(intent, requestCode); 27 | overridePendingTransition(R.anim.anim_sliding_up, R.anim.anim_none); 28 | } 29 | 30 | public void startActivityForResultAsStack(final Intent intent, final int requestCode) { 31 | startActivityForResult(intent, requestCode); 32 | overridePendingTransition(R.anim.anim_enter_sliding_left, R.anim.anim_exit_sliding_left); 33 | } 34 | 35 | public void startActivityForResultNoAnimation(final Intent intent, final int requestCode) { 36 | startActivityForResult(intent, requestCode); 37 | overridePendingTransition(R.anim.anim_none, R.anim.anim_none); 38 | } 39 | 40 | public void finishActivityAsSheet() { 41 | super.finish(); 42 | overridePendingTransition(R.anim.anim_none, R.anim.anim_sliding_down); 43 | } 44 | 45 | public void finishActivityAsStack() { 46 | super.finish(); 47 | overridePendingTransition(R.anim.anim_enter_sliding_right, R.anim.anim_exit_sliding_right); 48 | } 49 | 50 | public void finishActivityFadeout() { 51 | super.finish(); 52 | overridePendingTransition(R.anim.anim_fade_in, R.anim.anim_fade_out); 53 | } 54 | 55 | public void finishActivityWithoutAnimation() { 56 | super.finish(); 57 | overridePendingTransition(R.anim.anim_none, R.anim.anim_none); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/common/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.common; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.support.v7.app.AppCompatActivity; 8 | import android.support.v7.widget.Toolbar; 9 | import android.view.View; 10 | 11 | import com.onehookinc.onehooklibraryandroid.R; 12 | 13 | public class BaseFragment extends Fragment{ 14 | 15 | @Override 16 | public void onViewCreated(@NonNull View view, 17 | @Nullable Bundle savedInstanceState) { 18 | super.onViewCreated(view, savedInstanceState); 19 | 20 | final Toolbar toolbar = view.findViewById(R.id.id_common_toolbar); 21 | if(toolbar != null) { 22 | final AppCompatActivity activity = (AppCompatActivity) getActivity(); 23 | activity.setSupportActionBar(toolbar); 24 | onToolbarReady(toolbar); 25 | } 26 | } 27 | 28 | public void onToolbarReady(final Toolbar toolbar) { 29 | 30 | } 31 | 32 | public BaseActivity getBaseAcivity() { 33 | return (BaseActivity) getActivity(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/common/BaseListFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.common; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.support.v7.widget.LinearLayoutManager; 8 | import android.support.v7.widget.RecyclerView; 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | 13 | import com.onehookinc.onehooklibraryandroid.R; 14 | 15 | public abstract class BaseListFragment extends BaseFragment { 16 | 17 | 18 | private RecyclerView mRecyclerView; 19 | 20 | @Nullable 21 | @Override 22 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 23 | return inflater.inflate(R.layout.fragment_base_list, container, false); 24 | } 25 | 26 | @Override 27 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 28 | super.onViewCreated(view, savedInstanceState); 29 | setupRecyclerView(view); 30 | } 31 | 32 | @Override 33 | public void onDestroyView() { 34 | super.onDestroyView(); 35 | mRecyclerView.setAdapter(null); 36 | mRecyclerView = null; 37 | } 38 | 39 | private void setupRecyclerView(final View view) { 40 | mRecyclerView = view.findViewById(R.id.id_common_recycler_view); 41 | mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 42 | mRecyclerView.setAdapter(createAdapter()); 43 | } 44 | 45 | public abstract RecyclerView.Adapter createAdapter(); 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/NotFoundFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | 11 | import com.onehookinc.onehooklibraryandroid.R; 12 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 13 | 14 | public class NotFoundFragment extends BaseFragment { 15 | 16 | @Nullable 17 | @Override 18 | public View onCreateView(@NonNull LayoutInflater inflater, 19 | @Nullable ViewGroup container, 20 | @Nullable Bundle savedInstanceState) { 21 | return inflater.inflate(R.layout.fragment_sample_view_not_found, container, false); 22 | } 23 | 24 | @Override 25 | public void onToolbarReady(Toolbar toolbar) { 26 | super.onToolbarReady(toolbar); 27 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 28 | getBaseAcivity().getSupportActionBar().setTitle("Oops"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/demo/dateviewpager/DateViewPaperDemo.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.demo.dateviewpager; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.app.Fragment; 7 | import android.support.v4.app.FragmentManager; 8 | import android.support.v4.view.ViewPager; 9 | import android.support.v7.widget.Toolbar; 10 | import android.view.LayoutInflater; 11 | import android.view.View; 12 | import android.view.ViewGroup; 13 | 14 | import com.onehook.view.pager.transformer.CarouselTransformer; 15 | import com.onehook.widget.adapter.TaggedFragmentStatePagerAdapter; 16 | import com.onehookinc.onehooklibraryandroid.R; 17 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 18 | 19 | public class DateViewPaperDemo extends BaseFragment { 20 | 21 | @Nullable 22 | @Override 23 | public View onCreateView(@NonNull LayoutInflater inflater, 24 | @Nullable ViewGroup container, 25 | @Nullable Bundle savedInstanceState) { 26 | return inflater.inflate(R.layout.fragment_demo_date_viewpager, container, false); 27 | } 28 | 29 | @Override 30 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 31 | super.onViewCreated(view, savedInstanceState); 32 | 33 | final ViewPager p1 = view.findViewById(R.id.fragment_demo_date_viewpager); 34 | p1.setClipToPadding(false); 35 | p1.setPadding(64, 0, 64, 0); 36 | p1.setPageTransformer(false, new CarouselTransformer(64, 1)); 37 | p1.setAdapter(new FragmentPager(getChildFragmentManager())); 38 | } 39 | 40 | @Override 41 | public void onToolbarReady(Toolbar toolbar) { 42 | super.onToolbarReady(toolbar); 43 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 44 | getBaseAcivity().getSupportActionBar().setTitle("Date View Pager Sample"); 45 | } 46 | 47 | private class FragmentPager extends TaggedFragmentStatePagerAdapter { 48 | 49 | public FragmentPager(FragmentManager fm) { 50 | super(fm); 51 | } 52 | 53 | @Override 54 | public Fragment getItem(int position) { 55 | return new SimpleCardsFragment(); 56 | } 57 | 58 | @Override 59 | public String getTag(int position) { 60 | return String.valueOf(position); 61 | } 62 | 63 | @Override 64 | public int getCount() { 65 | return 100; 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/demo/dateviewpager/SimpleCardsFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.demo.dateviewpager; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.RecyclerView; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.TextView; 11 | 12 | import com.onehookinc.onehooklibraryandroid.R; 13 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseListFragment; 14 | 15 | public class SimpleCardsFragment extends BaseListFragment { 16 | 17 | @Nullable 18 | @Override 19 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 20 | return inflater.inflate(R.layout.fragment_base_list_no_toolbar, container, false); 21 | } 22 | 23 | public static SimpleCardsFragment newInstance() { 24 | return new SimpleCardsFragment(); 25 | } 26 | 27 | @Override 28 | public RecyclerView.Adapter createAdapter() { 29 | return new CardsAdapter(); 30 | } 31 | 32 | private static class CardViewHolder extends RecyclerView.ViewHolder { 33 | 34 | private TextView mTextView; 35 | 36 | public CardViewHolder(final ViewGroup parent) { 37 | super(LayoutInflater.from(parent.getContext()).inflate(R.layout.cell_rounded_corner, parent, false)); 38 | mTextView = itemView.findViewById(R.id.cell_rounded_corner_textview); 39 | } 40 | } 41 | 42 | private static class CardsAdapter extends RecyclerView.Adapter { 43 | @NonNull 44 | @Override 45 | public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 46 | return new CardViewHolder(parent); 47 | } 48 | 49 | @Override 50 | public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { 51 | 52 | } 53 | 54 | @Override 55 | public int getItemCount() { 56 | return 10; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/demo/kotlin/KotlinTryFragment.kt: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.demo.kotlin 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import com.onehookinc.onehooklibraryandroid.R 8 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment 9 | 10 | class KotlinTryFragment: BaseFragment() { 11 | 12 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { 13 | return inflater.inflate(R.layout.fragment_sample_view_misc, container, false) 14 | } 15 | 16 | 17 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 18 | super.onViewCreated(view, savedInstanceState) 19 | this.something() 20 | } 21 | } 22 | 23 | fun KotlinTryFragment.something() { 24 | 25 | } -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/dialogs/DialogsDemoFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.dialogs; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | 11 | import com.onehook.app.ProgressDialogFragment; 12 | import com.onehookinc.onehooklibraryandroid.R; 13 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 14 | 15 | public class DialogsDemoFragment extends BaseFragment { 16 | 17 | @Nullable 18 | @Override 19 | public View onCreateView(@NonNull LayoutInflater inflater, 20 | @Nullable ViewGroup container, 21 | @Nullable Bundle savedInstanceState) { 22 | return inflater.inflate(R.layout.fragment_sample_view_dialogs, container, false); 23 | } 24 | 25 | @Override 26 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 27 | super.onViewCreated(view, savedInstanceState); 28 | view.findViewById(R.id.fragment_dialog_sample_button1).setOnClickListener(v -> onButton1Clicked()); 29 | view.findViewById(R.id.fragment_dialog_sample_button2).setOnClickListener(v -> onButton2Clicked()); 30 | view.findViewById(R.id.fragment_dialog_sample_button3).setOnClickListener(v -> onButton3Clicked()); 31 | view.findViewById(R.id.fragment_dialog_sample_button4).setOnClickListener(v -> onButton4Clicked()); 32 | } 33 | 34 | @Override 35 | public void onToolbarReady(Toolbar toolbar) { 36 | super.onToolbarReady(toolbar); 37 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 38 | getBaseAcivity().getSupportActionBar().setTitle("Dialogs"); 39 | } 40 | 41 | private static final String TAG_PROGRESS_DIALOG = "tagProgress"; 42 | 43 | private void onButton1Clicked() { 44 | final ProgressDialogFragment progressDialogFragment = new ProgressDialogFragment 45 | .ProgressDialogFragmentBuilder() 46 | .setMessage("I will go away in 2 seconds, I promise") 47 | .setTitle("a title") 48 | .build(); 49 | progressDialogFragment.show(getChildFragmentManager(), TAG_PROGRESS_DIALOG); 50 | 51 | getView().postDelayed(new Runnable() { 52 | @Override 53 | public void run() { 54 | if (getView() != null) { 55 | ProgressDialogFragment pdf = (ProgressDialogFragment) getChildFragmentManager().findFragmentByTag(TAG_PROGRESS_DIALOG); 56 | pdf.dismiss(); 57 | } 58 | } 59 | }, 2000); 60 | } 61 | 62 | private void onButton2Clicked() { 63 | 64 | } 65 | 66 | private void onButton3Clicked() { 67 | 68 | } 69 | 70 | private void onButton4Clicked() { 71 | 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/utility/DeviceUtilFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.utility; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.TextView; 11 | 12 | import com.onehook.util.device.DeviceInfoUtil; 13 | import com.onehookinc.onehooklibraryandroid.R; 14 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 15 | 16 | public class DeviceUtilFragment extends BaseFragment { 17 | 18 | @Nullable 19 | @Override 20 | public View onCreateView(@NonNull LayoutInflater inflater, 21 | @Nullable ViewGroup container, 22 | @Nullable Bundle savedInstanceState) { 23 | return inflater.inflate(R.layout.fragment_sample_device_util, container, false); 24 | } 25 | 26 | @Override 27 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 28 | super.onViewCreated(view, savedInstanceState); 29 | DeviceInfoUtil.init(getContext()); 30 | 31 | final TextView resolutionTextView = view.findViewById(R.id.fragment_device_util_resolution); 32 | resolutionTextView.setText(String.format("%d x %d", 33 | DeviceInfoUtil.getDisplayPoint().x, 34 | DeviceInfoUtil.getDisplayPoint().y)); 35 | 36 | final TextView deviceNameTextView = view.findViewById(R.id.fragment_device_util_name); 37 | deviceNameTextView.setText(DeviceInfoUtil.getDeviceName()); 38 | 39 | final TextView deviceManufacturerTextView = view.findViewById(R.id.fragment_device_util_manufacturer); 40 | deviceManufacturerTextView.setText(DeviceInfoUtil.getDeviceManufacturer()); 41 | 42 | final TextView devicePlatformTextView = view.findViewById(R.id.fragment_device_util_platform_version); 43 | devicePlatformTextView.setText(DeviceInfoUtil.getDevicePlatformVersion()); 44 | 45 | } 46 | 47 | @Override 48 | public void onToolbarReady(Toolbar toolbar) { 49 | super.onToolbarReady(toolbar); 50 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 51 | getBaseAcivity().getSupportActionBar().setTitle("Device Utility"); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/views/ActivityOverlaySampleFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.views; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v4.content.res.ResourcesCompat; 7 | import android.support.v7.widget.Toolbar; 8 | import android.view.LayoutInflater; 9 | import android.view.View; 10 | import android.view.ViewGroup; 11 | 12 | import com.onehook.util.color.ColorUtility; 13 | import com.onehook.view.overlay.ActivityOverlayView; 14 | import com.onehookinc.onehooklibraryandroid.R; 15 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 16 | 17 | public class ActivityOverlaySampleFragment extends BaseFragment { 18 | 19 | private ActivityOverlayView mOverlayView; 20 | 21 | @Nullable 22 | @Override 23 | public View onCreateView(@NonNull LayoutInflater inflater, 24 | @Nullable ViewGroup container, 25 | @Nullable Bundle savedInstanceState) { 26 | return inflater.inflate(R.layout.fragment_sample_activity_overlay, container, false); 27 | } 28 | 29 | @Override 30 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 31 | super.onViewCreated(view, savedInstanceState); 32 | view.findViewById(R.id.fragment_sample_activity_overlay_fab).setOnClickListener(v -> onFabClicked()); 33 | } 34 | 35 | private void onFabClicked() { 36 | if (mOverlayView != null) { 37 | mOverlayView.destroy(getActivity(), false); 38 | mOverlayView = null; 39 | } 40 | 41 | final ActivityOverlayView.Builder builder = new ActivityOverlayView.Builder(getActivity()); 42 | mOverlayView = builder.backgroundColor(ColorUtility.getColorWithAlpha(ResourcesCompat.getColor(getResources(), R.color.gray_900, null), 0.5f)) 43 | .fadein(300) 44 | .contentRes(R.layout.view_popup) 45 | .build(); 46 | 47 | mOverlayView.setOnClickListener(new View.OnClickListener() { 48 | @Override 49 | public void onClick(View view) { 50 | mOverlayView.destroy(getActivity(), true); 51 | } 52 | }); 53 | } 54 | 55 | @Override 56 | public void onToolbarReady(Toolbar toolbar) { 57 | super.onToolbarReady(toolbar); 58 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 59 | getBaseAcivity().getSupportActionBar().setTitle("Activity Overlay Sample"); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/views/DigitEnterViewSampleFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.views; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | 11 | import com.onehook.view.overlay.ActivityOverlayView; 12 | import com.onehookinc.onehooklibraryandroid.R; 13 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 14 | 15 | public class DigitEnterViewSampleFragment extends BaseFragment { 16 | 17 | @Nullable 18 | @Override 19 | public View onCreateView(@NonNull LayoutInflater inflater, 20 | @Nullable ViewGroup container, 21 | @Nullable Bundle savedInstanceState) { 22 | return inflater.inflate(R.layout.fragment_sample_digit_enter_view, container, false); 23 | } 24 | 25 | @Override 26 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 27 | super.onViewCreated(view, savedInstanceState); 28 | } 29 | 30 | 31 | @Override 32 | public void onToolbarReady(Toolbar toolbar) { 33 | super.onToolbarReady(toolbar); 34 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 35 | getBaseAcivity().getSupportActionBar().setTitle("Digit Entering Sample"); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/views/FlipperViewSampleFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.views; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.TextView; 11 | 12 | import com.onehook.view.viewflipper.FlipperView; 13 | import com.onehookinc.onehooklibraryandroid.R; 14 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 15 | 16 | public class FlipperViewSampleFragment extends BaseFragment { 17 | 18 | @Nullable 19 | @Override 20 | public View onCreateView(@NonNull LayoutInflater inflater, 21 | @Nullable ViewGroup container, 22 | @Nullable Bundle savedInstanceState) { 23 | return inflater.inflate(R.layout.fragment_sample_flipper_view, container, false); 24 | } 25 | 26 | @Override 27 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 28 | super.onViewCreated(view, savedInstanceState); 29 | 30 | final FlipperView flipperView = view.findViewById(R.id.fragment_sample_flipper_view); 31 | 32 | final TextView tv1 = flipperView.getFrontPage().findViewById(R.id.cell_rounded_corner_textview); 33 | tv1.setText("1"); 34 | flipperView.setHasNextPage(true); 35 | 36 | flipperView.setCallback(new FlipperView.FlipperViewCallback() { 37 | 38 | @Override 39 | public void onWillPresentNextPage(View nextPage) { 40 | TextView tv = nextPage.findViewById(R.id.cell_rounded_corner_textview); 41 | tv.setText(String.valueOf(System.currentTimeMillis())); 42 | } 43 | 44 | @Override 45 | public boolean onDidPresentNextPage() { 46 | return true; 47 | } 48 | }); 49 | 50 | flipperView.setOnClickListener(new View.OnClickListener() { 51 | @Override 52 | public void onClick(View view) { 53 | flipperView.flipPage(FlipperView.Direction.RIGHT); 54 | } 55 | }); 56 | } 57 | 58 | @Override 59 | public void onToolbarReady(Toolbar toolbar) { 60 | super.onToolbarReady(toolbar); 61 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 62 | getBaseAcivity().getSupportActionBar().setTitle("FlipperView Sample"); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/views/FlowLayoutSampleFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.views; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.TextView; 11 | 12 | import com.onehook.view.FlowLayout; 13 | import com.onehookinc.onehooklibraryandroid.R; 14 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 15 | 16 | public class FlowLayoutSampleFragment extends BaseFragment { 17 | 18 | @Nullable 19 | @Override 20 | public View onCreateView(@NonNull LayoutInflater inflater, 21 | @Nullable ViewGroup container, 22 | @Nullable Bundle savedInstanceState) { 23 | return inflater.inflate(R.layout.fragment_sample_flow_layout, container, false); 24 | } 25 | 26 | @Override 27 | public void onToolbarReady(Toolbar toolbar) { 28 | super.onToolbarReady(toolbar); 29 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 30 | getBaseAcivity().getSupportActionBar().setTitle("FlowLayout Sample"); 31 | } 32 | 33 | @Override 34 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 35 | super.onViewCreated(view, savedInstanceState); 36 | 37 | final LayoutInflater inflater = LayoutInflater.from(getContext()); 38 | 39 | final String[] messages = new String[]{"This", "is", "a", "something", "very", "import", "a", 40 | "message", "please read", "it", "carefully"}; 41 | 42 | final FlowLayout flowLayout1 = view.findViewById(R.id.fragment_sample_flow_layout_flow1); 43 | for (String s : messages) { 44 | final TextView tv = (TextView) inflater.inflate(R.layout.item_textview_rounded, flowLayout1, false); 45 | tv.setText(s); 46 | flowLayout1.addView(tv); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/views/MiscViewSampleFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.views; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | 11 | import com.onehook.view.AnimatedNumberTextView; 12 | import com.onehook.view.ButtonWithBadge; 13 | import com.onehookinc.onehooklibraryandroid.R; 14 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 15 | 16 | public class MiscViewSampleFragment extends BaseFragment { 17 | 18 | @Nullable 19 | @Override 20 | public View onCreateView(@NonNull LayoutInflater inflater, 21 | @Nullable ViewGroup container, 22 | @Nullable Bundle savedInstanceState) { 23 | return inflater.inflate(R.layout.fragment_sample_view_misc, container, false); 24 | } 25 | 26 | private AnimatedNumberTextView mNumberTextView; 27 | private ButtonWithBadge mButtonWithBagde; 28 | 29 | @Override 30 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 31 | super.onViewCreated(view, savedInstanceState); 32 | mNumberTextView = view.findViewById(R.id.fragment_sample_view_misc_animated_number_textview); 33 | mButtonWithBagde = view.findViewById(R.id.fragment_sample_view_misc_random_button); 34 | mButtonWithBagde.setOnClickListener(v -> onRandomButtonClicked()); 35 | } 36 | 37 | @Override 38 | public void onToolbarReady(Toolbar toolbar) { 39 | super.onToolbarReady(toolbar); 40 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 41 | getBaseAcivity().getSupportActionBar().setTitle("Misc Views Sample"); 42 | } 43 | 44 | private void onRandomButtonClicked() { 45 | final int newNumber = (int) (Math.random() * 100000); 46 | mNumberTextView.createAnimation(newNumber, 150).start(); 47 | mButtonWithBagde.setBadgeCount(newNumber, false); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/views/ScaleViewSampleFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.views; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.TextView; 11 | 12 | import com.onehook.view.ScaleView; 13 | import com.onehookinc.onehooklibraryandroid.R; 14 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 15 | 16 | public class ScaleViewSampleFragment extends BaseFragment { 17 | 18 | @Nullable 19 | @Override 20 | public View onCreateView(@NonNull LayoutInflater inflater, 21 | @Nullable ViewGroup container, 22 | @Nullable Bundle savedInstanceState) { 23 | return inflater.inflate(R.layout.fragment_sample_scale_view, container, false); 24 | } 25 | 26 | private TextView mNumberTextView; 27 | private ScaleView mScaleView; 28 | 29 | @Override 30 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 31 | super.onViewCreated(view, savedInstanceState); 32 | mNumberTextView = view.findViewById(R.id.fragment_sample_scale_view_textview); 33 | mScaleView = view.findViewById(R.id.fragment_sample_scale_view); 34 | 35 | mScaleView.setListener(new ScaleView.ScaleViewListener() { 36 | @Override 37 | public void onScaleMoved(ScaleView scaleView, int currentScale) { 38 | mNumberTextView.setText(String.valueOf(currentScale)); 39 | } 40 | }); 41 | } 42 | 43 | @Override 44 | public void onToolbarReady(Toolbar toolbar) { 45 | super.onToolbarReady(toolbar); 46 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 47 | getBaseAcivity().getSupportActionBar().setTitle("ScaleView Sample"); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/onehookinc/onehooklibraryandroid/sample/samples/views/StackLayoutSampleFragment.java: -------------------------------------------------------------------------------- 1 | package com.onehookinc.onehooklibraryandroid.sample.samples.views; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.widget.Toolbar; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | 11 | import com.onehookinc.onehooklibraryandroid.R; 12 | import com.onehookinc.onehooklibraryandroid.sample.common.BaseFragment; 13 | 14 | public class StackLayoutSampleFragment extends BaseFragment { 15 | 16 | @Nullable 17 | @Override 18 | public View onCreateView(@NonNull LayoutInflater inflater, 19 | @Nullable ViewGroup container, 20 | @Nullable Bundle savedInstanceState) { 21 | return inflater.inflate(R.layout.fragment_sample_stack_layout, container, false); 22 | } 23 | 24 | @Override 25 | public void onToolbarReady(Toolbar toolbar) { 26 | super.onToolbarReady(toolbar); 27 | getBaseAcivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); 28 | getBaseAcivity().getSupportActionBar().setTitle("StackLayout Sample"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-nodpi/footer.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oneHook/oneHookLibraryAndroid/abb701c2db214a36614782204dd2e8426f0c7746/app/src/main/res/drawable-nodpi/footer.JPG -------------------------------------------------------------------------------- /app/src/main/res/drawable-nodpi/ic_oda_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oneHook/oneHookLibraryAndroid/abb701c2db214a36614782204dd2e8426f0c7746/app/src/main/res/drawable-nodpi/ic_oda_avatar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_red_rounded.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_single_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/cell_rounded_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/cell_sample_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 20 | 21 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_base_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_base_list_no_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_demo_date_viewpager.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_sample_activity_overlay.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 34 | 35 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_sample_confetti_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 23 | 24 | 25 | 26 | 32 | 33 |