Add an acknowledgement page in settings.

This commit is contained in:
Alex Ning
2019-08-24 16:27:34 +08:00
parent 4a3266e689
commit 4d4e6165f0
14 changed files with 382 additions and 20 deletions

View File

@@ -0,0 +1,27 @@
package Settings;
import android.net.Uri;
class Acknowledgement {
private String name;
private String introduction;
private Uri link;
Acknowledgement(String name, String introduction, Uri link) {
this.name = name;
this.introduction = introduction;
this.link = link;
}
public String getName() {
return name;
}
public String getIntroduction() {
return introduction;
}
public Uri getLink() {
return link;
}
}

View File

@@ -0,0 +1,106 @@
package Settings;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.R;
/**
* A simple {@link Fragment} subclass.
*/
public class AcknowledgementFragment extends Fragment {
public AcknowledgementFragment() {
// Required empty public constructor
}
@BindView(R.id.recycler_view_acknowledgement_fragment) RecyclerView recyclerView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_acknowledgement, container, false);
ButterKnife.bind(this, rootView);
Activity activity = getActivity();
ArrayList<Acknowledgement> acknowledgements = new ArrayList<>();
acknowledgements.add(new Acknowledgement("ExoPlayer",
"An application level media player for Android",
Uri.parse("https://github.com/google/ExoPlayer")));
acknowledgements.add(new Acknowledgement("GestureViews",
"ImageView and FrameLayout with gestures control and position animation",
Uri.parse("https://github.com/alexvasilkov/GestureViews")));
acknowledgements.add(new Acknowledgement("Glide",
"A fast and efficient open source media management and image loading framework for Android",
Uri.parse("https://github.com/bumptech/glide")));
acknowledgements.add(new Acknowledgement("Swipe",
"Detects swipe events on Android with listener and RxJava Observable",
Uri.parse("https://github.com/pwittchen/swipe")));
acknowledgements.add(new Acknowledgement("RxAndroid",
"Android specific bindings for RxJava 2",
Uri.parse("https://github.com/ReactiveX/RxAndroid")));
acknowledgements.add(new Acknowledgement("RxJava",
"Reactive extensions for the JVM",
Uri.parse("https://github.com/ReactiveX/RxJava")));
acknowledgements.add(new Acknowledgement("Retrofit",
"Type-safe HTTP client for Android and Java by Square, Inc.",
Uri.parse("https://github.com/square/retrofit")));
acknowledgements.add(new Acknowledgement("Dagger",
"A fast dependency injector for Java and Android.",
Uri.parse("https://github.com/google/dagger")));
acknowledgements.add(new Acknowledgement("Butter Knife",
"Field and method binding for Android views",
Uri.parse("https://github.com/JakeWharton/butterknife")));
acknowledgements.add(new Acknowledgement("Aspect Ratio ImageView",
"A simple imageview which scales the width or height aspect with the given ratio",
Uri.parse("https://github.com/santalu/aspect-ratio-imageview")));
acknowledgements.add(new Acknowledgement("MaterialLoadingProgressBar",
"A styled ProgressBar",
Uri.parse("https://github.com/lsjwzh/MaterialLoadingProgressBar")));
acknowledgements.add(new Acknowledgement("Markwon",
"A markdown library for Android",
Uri.parse("https://github.com/noties/Markwon")));
acknowledgements.add(new Acknowledgement("android-gif-drawable",
"Views and Drawable for animated GIFs in Android.",
Uri.parse("https://github.com/koral--/android-gif-drawable")));
acknowledgements.add(new Acknowledgement("SimpleSearchView",
"A simple SearchView for Android based on Material Design",
Uri.parse("https://github.com/Ferfalk/SimpleSearchView")));
acknowledgements.add(new Acknowledgement("EventBus",
"A publish/subscribe event bus for Android and Java",
Uri.parse("https://github.com/greenrobot/EventBus")));
acknowledgements.add(new Acknowledgement("Customized and Expandable TextView",
"Simple library to change the Textview as rectangle, circle and square shapes",
Uri.parse("https://github.com/Rajagopalr3/CustomizedTextView")));
acknowledgements.add(new Acknowledgement("Rounded Bottom Sheet",
"Bottom sheet with rounded corners",
Uri.parse("https://github.com/Deishelon/RoundedBottomSheet")));
acknowledgements.add(new Acknowledgement("Bridge",
"A library for avoiding TransactionTooLargeException during state saving and restoration",
Uri.parse("https://github.com/livefront/bridge")));
acknowledgements.add(new Acknowledgement("Android-State",
"A utility library for Android to save objects in a Bundle without any boilerplate",
Uri.parse("https://github.com/evernote/android-state")));
AcknowledgementRecyclerViewAdapter adapter = new AcknowledgementRecyclerViewAdapter(activity, acknowledgements);
recyclerView.setLayoutManager(new LinearLayoutManager(activity));
recyclerView.setAdapter(adapter);
return rootView;
}
}

View File

@@ -0,0 +1,67 @@
package Settings;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.LinkResolverActivity;
import ml.docilealligator.infinityforreddit.R;
class AcknowledgementRecyclerViewAdapter extends RecyclerView.Adapter<AcknowledgementRecyclerViewAdapter.AcknowledgementViewHolder> {
private ArrayList<Acknowledgement> acknowledgements;
private Context context;
AcknowledgementRecyclerViewAdapter(Context context, ArrayList<Acknowledgement> acknowledgements) {
this.context = context;
this.acknowledgements = acknowledgements;
}
@NonNull
@Override
public AcknowledgementViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new AcknowledgementViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_acknowledgement, parent, false));
}
@Override
public void onBindViewHolder(@NonNull AcknowledgementViewHolder holder, int position) {
Acknowledgement acknowledgement = acknowledgements.get(holder.getAdapterPosition());
if(acknowledgement != null) {
holder.nameTextView.setText(acknowledgement.getName());
holder.introductionTextView.setText(acknowledgement.getIntroduction());
holder.itemView.setOnClickListener(view -> {
if(context != null) {
Intent intent = new Intent(context, LinkResolverActivity.class);
intent.setData(acknowledgement.getLink());
context.startActivity(intent);
}
});
}
}
@Override
public int getItemCount() {
return acknowledgements == null ? 0 : acknowledgements.size();
}
class AcknowledgementViewHolder extends RecyclerView.ViewHolder {
View itemView;
@BindView(R.id.name_text_view_item_acknowledgement) TextView nameTextView;
@BindView(R.id.introduction_text_view_item_acknowledgement) TextView introductionTextView;
AcknowledgementViewHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
this.itemView = itemView;
}
}
}