diff --git a/.gitignore b/.gitignore index c6cbe56..0f1d137 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ *.iml .gradle /local.properties -/.idea/workspace.xml -/.idea/libraries +/.idea .DS_Store /build /captures +.externalNativeBuild +.cxx diff --git a/app/build.gradle b/app/build.gradle index 1f2386f..5d54cae 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,28 +1,49 @@ -apply plugin: 'com.android.application' +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdk 33 defaultConfig { - applicationId "me.khrystal.circlerecyclerviewdemo" - minSdkVersion 13 - targetSdkVersion 23 + applicationId "com.example.myfirstapplication" + minSdk 29 + targetSdk 33 versionCode 1 versionName "1.0" } + buildTypes { release { minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +// buildFeatures { +// viewBinding true +// } } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.4.0' - compile project(':library') - compile 'com.github.bumptech.glide:glide:3.6.1' - compile 'jp.wasabeef:glide-transformations:2.0.1' -} + + implementation project(':library') + implementation 'com.github.bumptech.glide:glide:4.11.0' + implementation 'jp.wasabeef:glide-transformations:4.3.0' + // If you want to use the GPU Filters + implementation 'jp.co.cyberagent.android:gpuimage:2.1.0' + + implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.recyclerview:recyclerview:1.3.0' +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f540afa..f490c0d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,7 +8,8 @@ android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > - + diff --git a/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MainActivity.java b/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MainActivity.java index 203cdf0..ee2a948 100644 --- a/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MainActivity.java +++ b/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MainActivity.java @@ -2,10 +2,11 @@ import android.graphics.Color; import android.os.Bundle; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + import android.view.Menu; import android.view.MenuItem; @@ -18,7 +19,7 @@ public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - mToolbar = (Toolbar) findViewById(R.id.toolbar); + mToolbar = findViewById(R.id.toolbar); mToolbar.setTitle("TYPE_CIRCLE"); mToolbar.setTitleTextColor(Color.WHITE); setSupportActionBar(mToolbar); diff --git a/app/src/main/java/me/khrystal/circlerecyclerviewdemo/ModeType.java b/app/src/main/java/me/khrystal/circlerecyclerviewdemo/ModeType.java index ef8b4e8..1e88427 100644 --- a/app/src/main/java/me/khrystal/circlerecyclerviewdemo/ModeType.java +++ b/app/src/main/java/me/khrystal/circlerecyclerviewdemo/ModeType.java @@ -1,6 +1,6 @@ package me.khrystal.circlerecyclerviewdemo; -import android.support.annotation.IntDef; +import androidx.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MultiModeFragment.java b/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MultiModeFragment.java index 6680dbb..8caa2b4 100644 --- a/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MultiModeFragment.java +++ b/app/src/main/java/me/khrystal/circlerecyclerviewdemo/MultiModeFragment.java @@ -1,9 +1,6 @@ package me.khrystal.circlerecyclerviewdemo; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -11,12 +8,20 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import java.util.Arrays; import java.util.Collections; import java.util.List; +//import jp.wasabeef.glide.transformations.CropCircleTransformation; +import jp.wasabeef.glide.transformations.BlurTransformation; import jp.wasabeef.glide.transformations.CropCircleTransformation; import me.khrystal.library.widget.CircleRecyclerView; import me.khrystal.library.widget.CircularHorizontalMode; @@ -64,11 +69,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa } @Override - public void onViewCreated(View view, Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); int modeType = getArguments().getInt("mode_type"); - mCircleRecyclerView = (CircleRecyclerView) view.findViewById(R.id.circle_rv); + mCircleRecyclerView = view.findViewById(R.id.circle_rv); // find itemViewMode and layoutManager switch (modeType) { @@ -139,8 +144,9 @@ public void onCenterItemClick(View v) { class A extends RecyclerView.Adapter { + @NonNull @Override - public VH onCreateViewHolder(ViewGroup parent, int viewType) { + public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { VH h = null; if (mCircleRecyclerView.getLayoutManager().canScrollHorizontally()) { h = new VH(LayoutInflater.from(getContext()) @@ -167,9 +173,15 @@ else if (mItemViewMode instanceof CircularHorizontalBTTMode) { @Override public void onBindViewHolder(VH holder, int position) { holder.tv.setText("Number :" + (position % mImgList.size())); - Glide.with(getContext()) + +// Glide.with(requireContext()) +// .load(mImgList.get(position % mImgList.size())) +// .apply(RequestOptions.bitmapTransform(new BlurTransformation())) +// .into(holder.iv); + + Glide.with(requireContext()) .load(mImgList.get(position % mImgList.size())) - .bitmapTransform(new CropCircleTransformation(getContext())) + .apply(RequestOptions.circleCropTransform()) .into(holder.iv); } @@ -181,15 +193,15 @@ public int getItemCount() { } - class VH extends RecyclerView.ViewHolder { + static class VH extends RecyclerView.ViewHolder { TextView tv; ImageView iv; public VH(View itemView) { super(itemView); - tv = (TextView) itemView.findViewById(R.id.item_text); - iv = (ImageView) itemView.findViewById(R.id.item_img); + tv = itemView.findViewById(R.id.item_text); + iv = itemView.findViewById(R.id.item_img); } } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5cc13bb..cc0f896 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,14 +5,14 @@ android:layout_height="match_parent" android:orientation="vertical"> - + app:theme="@style/ActionBarThemeOverlay"> + - + android:layout_height="match_parent" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_c_rtl_v.xml b/app/src/main/res/layout/item_c_rtl_v.xml index 5d69b68..1595a22 100644 --- a/app/src/main/res/layout/item_c_rtl_v.xml +++ b/app/src/main/res/layout/item_c_rtl_v.xml @@ -1,6 +1,7 @@ mView; public void setView(View v) { - mView = new WeakReference(v); + mView = new WeakReference<>(v); } @Override diff --git a/library/src/main/java/me/khrystal/library/widget/CircularHorizontalBTTMode.java b/library/src/main/java/me/khrystal/library/widget/CircularHorizontalBTTMode.java index 88dd4d5..14458d5 100644 --- a/library/src/main/java/me/khrystal/library/widget/CircularHorizontalBTTMode.java +++ b/library/src/main/java/me/khrystal/library/widget/CircularHorizontalBTTMode.java @@ -1,9 +1,10 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/library/src/main/java/me/khrystal/library/widget/CircularHorizontalMode.java b/library/src/main/java/me/khrystal/library/widget/CircularHorizontalMode.java index 8cf6b8f..50b3a0b 100644 --- a/library/src/main/java/me/khrystal/library/widget/CircularHorizontalMode.java +++ b/library/src/main/java/me/khrystal/library/widget/CircularHorizontalMode.java @@ -1,9 +1,10 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/library/src/main/java/me/khrystal/library/widget/CircularViewMode.java b/library/src/main/java/me/khrystal/library/widget/CircularViewMode.java index 38cd8e0..6be2d1c 100644 --- a/library/src/main/java/me/khrystal/library/widget/CircularViewMode.java +++ b/library/src/main/java/me/khrystal/library/widget/CircularViewMode.java @@ -1,10 +1,10 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.View; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/library/src/main/java/me/khrystal/library/widget/CircularViewRTLMode.java b/library/src/main/java/me/khrystal/library/widget/CircularViewRTLMode.java index 2e0424d..5627077 100644 --- a/library/src/main/java/me/khrystal/library/widget/CircularViewRTLMode.java +++ b/library/src/main/java/me/khrystal/library/widget/CircularViewRTLMode.java @@ -1,9 +1,10 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/library/src/main/java/me/khrystal/library/widget/ItemViewMode.java b/library/src/main/java/me/khrystal/library/widget/ItemViewMode.java index 3d773e6..d0e448d 100644 --- a/library/src/main/java/me/khrystal/library/widget/ItemViewMode.java +++ b/library/src/main/java/me/khrystal/library/widget/ItemViewMode.java @@ -1,8 +1,9 @@ package me.khrystal.library.widget; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/library/src/main/java/me/khrystal/library/widget/RotateXScaleYViewMode.java b/library/src/main/java/me/khrystal/library/widget/RotateXScaleYViewMode.java index 79be035..0a1b4b1 100644 --- a/library/src/main/java/me/khrystal/library/widget/RotateXScaleYViewMode.java +++ b/library/src/main/java/me/khrystal/library/widget/RotateXScaleYViewMode.java @@ -1,10 +1,11 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/library/src/main/java/me/khrystal/library/widget/RotateYScaleXViewMode.java b/library/src/main/java/me/khrystal/library/widget/RotateYScaleXViewMode.java index 76aaef9..71acc5b 100644 --- a/library/src/main/java/me/khrystal/library/widget/RotateYScaleXViewMode.java +++ b/library/src/main/java/me/khrystal/library/widget/RotateYScaleXViewMode.java @@ -1,10 +1,11 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/library/src/main/java/me/khrystal/library/widget/ScaleXViewMode.java b/library/src/main/java/me/khrystal/library/widget/ScaleXViewMode.java index 44a7ada..7b242b7 100644 --- a/library/src/main/java/me/khrystal/library/widget/ScaleXViewMode.java +++ b/library/src/main/java/me/khrystal/library/widget/ScaleXViewMode.java @@ -1,9 +1,9 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; import android.view.View; -import android.view.ViewGroup; + +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; import me.khrystal.library.R; diff --git a/library/src/main/java/me/khrystal/library/widget/ScaleYViewMode.java b/library/src/main/java/me/khrystal/library/widget/ScaleYViewMode.java index 55aaa56..e5d71dd 100644 --- a/library/src/main/java/me/khrystal/library/widget/ScaleYViewMode.java +++ b/library/src/main/java/me/khrystal/library/widget/ScaleYViewMode.java @@ -1,9 +1,10 @@ package me.khrystal.library.widget; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; + /** * usage: * author: kHRYSTAL diff --git a/settings.gradle b/settings.gradle index 3306997..9f79bff 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,16 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "CircleRecyclerView" include ':app', ':library'