diff --git a/library/build.gradle b/library/build.gradle index 3db15f63..3df591cb 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -4,7 +4,7 @@ android { compileSdkVersion 28 defaultConfig { - minSdkVersion 12 + minSdkVersion 16 targetSdkVersion 28 versionCode 1 versionName "1.0" diff --git a/sample/build.gradle b/sample/build.gradle index ea765ad0..a8bef93b 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -5,7 +5,7 @@ android { defaultConfig { applicationId "uk.co.deanwild.materialshowcaseviewsample" - minSdkVersion 14 + minSdkVersion 16 targetSdkVersion 28 versionCode 1 versionName "1.0" @@ -23,4 +23,5 @@ dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation project(':library') + implementation 'com.android.support.constraint:constraint-layout:1.1.3' } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index eae3e4dd..b89e3373 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -1,15 +1,15 @@ + package="uk.co.deanwild.materialshowcaseviewsample"> + android:theme="@style/AppTheme"> + android:label="@string/app_name"> @@ -18,22 +18,20 @@ - + android:label="@string/title_activity_simple_single_example"> - + android:label="@string/title_activity_custom_example"> - - + android:label="@string/title_activity_sequence_example"> - + android:label="@string/title_activity_sequence_example" + android:theme="@style/ToolTipTheme"> + - + \ No newline at end of file diff --git a/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/MainActivity.java b/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/MainActivity.java index f30499bd..fa9b4d5c 100644 --- a/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/MainActivity.java +++ b/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/MainActivity.java @@ -24,6 +24,8 @@ protected void onCreate(Bundle savedInstanceState) { button.setOnClickListener(this); button = findViewById(R.id.btn_tooltip_example); button.setOnClickListener(this); + button = findViewById(R.id.btn_recyclerview_example); + button.setOnClickListener(this); button = findViewById(R.id.btn_reset_all); button.setOnClickListener(this); @@ -51,6 +53,10 @@ public void onClick(View v) { intent = new Intent(this, TooltipExample.class); break; + case R.id.btn_recyclerview_example: + intent = new Intent(this, RecyclerViewExample.class); + break; + case R.id.btn_reset_all: MaterialShowcaseView.resetAll(this); Toast.makeText(this, "All Showcases reset", Toast.LENGTH_SHORT).show(); diff --git a/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/RecyclerViewAdapter.java b/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/RecyclerViewAdapter.java new file mode 100644 index 00000000..6f6a2400 --- /dev/null +++ b/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/RecyclerViewAdapter.java @@ -0,0 +1,63 @@ +package uk.co.deanwild.materialshowcaseviewsample; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import java.util.ArrayList; + +/** + * Created by Resul Rıza DOLANER on 20.08.2020. + */ + +public class RecyclerViewAdapter extends RecyclerView.Adapter { + + private Context context; + private ArrayList arrayList; + + public RecyclerViewAdapter(Context context, ArrayList arrayList) { + this.context = context; + this.arrayList = arrayList; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { + View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_recyclerview, viewGroup, false); + return new MyViewHolder(view); + } + + @NonNull + @Override + public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int position) { + + myViewHolder.textView.setText(arrayList.get(position)); + + } + + @Override + public int getItemCount() { + return arrayList.size(); + } + + public class MyViewHolder extends RecyclerView.ViewHolder { + + public TextView textView; + public RelativeLayout relativeLayout; + public ImageView imageView; + + public MyViewHolder(View itemView) { + super(itemView); + + textView = itemView.findViewById(R.id.text_view); + relativeLayout = itemView.findViewById(R.id.relative_layout); + imageView = itemView.findViewById(R.id.image_view); + } + } +} \ No newline at end of file diff --git a/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/RecyclerViewExample.java b/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/RecyclerViewExample.java new file mode 100644 index 00000000..9f66494a --- /dev/null +++ b/sample/src/main/java/uk/co/deanwild/materialshowcaseviewsample/RecyclerViewExample.java @@ -0,0 +1,93 @@ +package uk.co.deanwild.materialshowcaseviewsample; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.view.ViewTreeObserver; + +import java.util.ArrayList; +import java.util.Objects; + +import uk.co.deanwild.materialshowcaseview.MaterialShowcaseSequence; +import uk.co.deanwild.materialshowcaseview.MaterialShowcaseView; +import uk.co.deanwild.materialshowcaseview.ShowcaseConfig; + +public class RecyclerViewExample extends AppCompatActivity { + + RecyclerView recyclerView; + RecyclerView.LayoutManager layoutManager; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_recycler_view_example); + + ArrayList arrayList = new ArrayList<>(); + arrayList.add("How to show on recycler view?"); + arrayList.add("How to show on recycler view?"); + arrayList.add("How to show on recycler view?"); + + recyclerView = findViewById(R.id.recyclerview); + recyclerView.setHasFixedSize(true); + + layoutManager = new LinearLayoutManager(this); + recyclerView.setLayoutManager(layoutManager); + recyclerView.setAdapter(new RecyclerViewAdapter(this, arrayList)); + + checkedFillAllData(); + + } + + private void checkedFillAllData() { + + // It is used to run all the data in the list after it is filled. + // Otherwise, it will not work because it cannot find the first line in direct use, and it will give an empty object error. + recyclerView.getViewTreeObserver() + .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + + // I want to get the first line + RecyclerViewAdapter.MyViewHolder myViewHolder = (RecyclerViewAdapter.MyViewHolder) recyclerView.findViewHolderForAdapterPosition(0); + + // I catch ImageView object of the first line + View targetImageView = myViewHolder.imageView; + // I catch RelativeLayout object of the first line + View targetRelativeLayout = myViewHolder.relativeLayout; + + // We show the objects we obtain sequentially + createShowCaseView(targetImageView, targetRelativeLayout); + + // If you don't do it, it will always create + // Minimum Sdk Version should be 16 + recyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } + }); + } + + private void createShowCaseView(View imageView, View relativeLayout) { + ShowcaseConfig config = new ShowcaseConfig(); + MaterialShowcaseSequence sequence = new MaterialShowcaseSequence(this); + sequence.setConfig(config); + + sequence.addSequenceItem(new MaterialShowcaseView.Builder(this) + .setTarget(relativeLayout) + .withRectangleShape() + .setContentText("This shows the whole line") + .setDismissText("Next") + .setDismissOnTouch(true) + .build()); + + sequence.addSequenceItem(new MaterialShowcaseView.Builder(this) + .setTarget(imageView) + .withCircleShape() + .setContentText("OK") + .setDismissText("This shows the imageView object in the entire row") + .setDismissOnTouch(true) + .build()); + + sequence.start(); + } +} \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml index d6e92a46..84e529d8 100644 --- a/sample/src/main/res/layout/activity_main.xml +++ b/sample/src/main/res/layout/activity_main.xml @@ -41,6 +41,14 @@ android:text="Tooltip Style Example" android:layout_margin="10dp"/> +