From e47502e62e7ee214cffc9bb90bd046263cbff39c Mon Sep 17 00:00:00 2001 From: mingjunli Date: Mon, 19 Sep 2016 23:03:34 +0800 Subject: [PATCH 1/6] [Optimize] Desc: optimize the trending module overdraw. --- .../java/com/anly/githubapp/ui/module/main/MainActivity.java | 3 +++ app/src/main/res/layout/fragment_trending.xml | 2 +- app/src/main/res/layout/fragment_trending_container.xml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/anly/githubapp/ui/module/main/MainActivity.java b/app/src/main/java/com/anly/githubapp/ui/module/main/MainActivity.java index e232b43..cb175ae 100644 --- a/app/src/main/java/com/anly/githubapp/ui/module/main/MainActivity.java +++ b/app/src/main/java/com/anly/githubapp/ui/module/main/MainActivity.java @@ -56,6 +56,9 @@ protected void onCreate(Bundle savedInstanceState) { AppLog.d("trace===MainActivity onCreate"); setContentView(R.layout.activity_main); ButterKnife.bind(this); + + getWindow().setBackgroundDrawable(null); + mBottomBar = BottomBar.attach(this, savedInstanceState); initViews(); diff --git a/app/src/main/res/layout/fragment_trending.xml b/app/src/main/res/layout/fragment_trending.xml index edaca0a..9aadf21 100644 --- a/app/src/main/res/layout/fragment_trending.xml +++ b/app/src/main/res/layout/fragment_trending.xml @@ -2,8 +2,8 @@ From ec5d47cee11c25098e42688fe33719d5465330b7 Mon Sep 17 00:00:00 2001 From: mingjunli Date: Tue, 11 Oct 2016 15:25:21 +0800 Subject: [PATCH 2/6] [Other] Desc: upgrade gradle version. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8b7648f..6eb62aa 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:2.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From deaa19390db8d3b550de9749af7d8dac16cb6205 Mon Sep 17 00:00:00 2001 From: mingjunli Date: Tue, 11 Oct 2016 16:49:48 +0800 Subject: [PATCH 3/6] [Temp] Desc: add issue model. --- .../githubapp/data/model/GithubComment.java | 67 +++++++++++++++ .../data/model/GithubCommentReactions.java | 38 +++++++++ .../githubapp/data/model/GithubReaction.java | 28 +++++++ .../data/model/GithubReactionType.java | 28 +++++++ .../githubapp/data/model/GithubStatus.java | 56 +++++++++++++ .../data/model/GithubStatusResponse.java | 50 ++++++++++++ .../com/anly/githubapp/data/model/Head.java | 46 +++++++++++ .../com/anly/githubapp/data/model/Issue.java | 75 +++++++++++++++++ .../anly/githubapp/data/model/IssueState.java | 26 ++++++ .../com/anly/githubapp/data/model/Label.java | 45 +++++++++++ .../anly/githubapp/data/model/Milestone.java | 81 +++++++++++++++++++ .../githubapp/data/model/MilestoneState.java | 7 ++ .../githubapp/data/model/PullRequest.java | 67 +++++++++++++++ .../com/anly/githubapp/data/model/ShaUrl.java | 61 ++++++++++++++ .../data/net/service/RepoService.java | 8 ++ .../ui/module/main/MainActivity.java | 2 - .../ui/module/repo/IssueListActivity.java | 53 ++++++++++++ .../ui/module/repo/RepoDetailActivity.java | 5 +- .../main/res/layout/activity_issue_list.xml | 13 +++ .../main/res/layout/activity_repo_detail.xml | 19 +++++ 20 files changed, 772 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/anly/githubapp/data/model/GithubComment.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/GithubCommentReactions.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/GithubReaction.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/GithubReactionType.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/GithubStatus.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/GithubStatusResponse.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/Head.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/Issue.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/IssueState.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/Label.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/Milestone.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/MilestoneState.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/PullRequest.java create mode 100644 app/src/main/java/com/anly/githubapp/data/model/ShaUrl.java create mode 100644 app/src/main/java/com/anly/githubapp/ui/module/repo/IssueListActivity.java create mode 100644 app/src/main/res/layout/activity_issue_list.xml diff --git a/app/src/main/java/com/anly/githubapp/data/model/GithubComment.java b/app/src/main/java/com/anly/githubapp/data/model/GithubComment.java new file mode 100644 index 0000000..fec9b6e --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/GithubComment.java @@ -0,0 +1,67 @@ +package com.anly.githubapp.data.model; + +import android.os.Parcel; +import android.os.Parcelable; + +public class GithubComment extends ShaUrl implements Parcelable { + + public static final Creator CREATOR = new Creator() { + @Override + public GithubComment createFromParcel(Parcel in) { + return new GithubComment(in); + } + + @Override + public GithubComment[] newArray(int size) { + return new GithubComment[size]; + } + }; + private static final int MAX_MESSAGE_LENGHT = 146; + public String id; + public String body; + public String body_html; + public User user; + public String created_at; + public String updated_at; + public GithubCommentReactions reactions; + + public GithubComment() { + } + + protected GithubComment(Parcel in) { + super(in); + this.id = in.readString(); + this.body = in.readString(); + this.body_html = in.readString(); + this.user = in.readParcelable(User.class.getClassLoader()); + this.created_at = in.readString(); + this.updated_at = in.readString(); + } + + public String shortMessage() { + if (body != null) { + if (body.length() > MAX_MESSAGE_LENGHT) { + return body.substring(0, MAX_MESSAGE_LENGHT).concat("..."); + } else { + return body; + } + } + return null; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeString(this.id); + dest.writeString(this.body); + dest.writeString(this.body_html); + dest.writeParcelable(this.user, 0); + dest.writeString(this.created_at); + dest.writeString(this.updated_at); + } +} diff --git a/app/src/main/java/com/anly/githubapp/data/model/GithubCommentReactions.java b/app/src/main/java/com/anly/githubapp/data/model/GithubCommentReactions.java new file mode 100644 index 0000000..6b0f755 --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/GithubCommentReactions.java @@ -0,0 +1,38 @@ +package com.anly.githubapp.data.model; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class GithubCommentReactions extends HashMap { + + private int totalCount; + + private List reactions = new ArrayList<>(); + + private String url; + + public List getReactions() { + return reactions; + } + + public void setReactions(List reactions) { + this.reactions = reactions; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public int getTotalCount() { + return totalCount; + } + + public void setTotalCount(int totalCount) { + this.totalCount = totalCount; + } +} diff --git a/app/src/main/java/com/anly/githubapp/data/model/GithubReaction.java b/app/src/main/java/com/anly/githubapp/data/model/GithubReaction.java new file mode 100644 index 0000000..537ad1b --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/GithubReaction.java @@ -0,0 +1,28 @@ +package com.anly.githubapp.data.model; + +public class GithubReaction { + private final GithubReactionType type; + private final int value; + + public GithubReaction(GithubReactionType type, int value) { + this.type = type; + this.value = value; + } + + public GithubReactionType getType() { + return type; + } + + public int getValue() { + return value; + } + + @Override + public String toString() { + return getEmijoByUnicode() + " " + value; + } + + public String getEmijoByUnicode() { + return new String(Character.toChars(type.getEmoji())); + } +} diff --git a/app/src/main/java/com/anly/githubapp/data/model/GithubReactionType.java b/app/src/main/java/com/anly/githubapp/data/model/GithubReactionType.java new file mode 100644 index 0000000..34c919c --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/GithubReactionType.java @@ -0,0 +1,28 @@ +package com.anly.githubapp.data.model; + +public enum GithubReactionType { + + PlusOne("+1", 0x1F44D), + MinusOne("-1", 0x1F44E), + Laugh("laugh", 0x1F604), + Confused("confused", 0x1F615), + Heart("heart", 0x2764), + Hooray("hooray", 0x1F389); + + private final String githubKey; + private final int emoji; + + GithubReactionType(String githubKey, int emoji) { + this.githubKey = githubKey; + this.emoji = emoji; + } + + public String getGithubKey() { + return githubKey; + } + + public int getEmoji() { + return emoji; + } + +} diff --git a/app/src/main/java/com/anly/githubapp/data/model/GithubStatus.java b/app/src/main/java/com/anly/githubapp/data/model/GithubStatus.java new file mode 100644 index 0000000..5593c24 --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/GithubStatus.java @@ -0,0 +1,56 @@ +package com.anly.githubapp.data.model; + +import android.os.Parcel; +import android.os.Parcelable; + +public class GithubStatus implements Parcelable { + public static final Creator CREATOR = + new Creator() { + public GithubStatus createFromParcel(Parcel source) { + return new GithubStatus(source); + } + + public GithubStatus[] newArray(int size) { + return new GithubStatus[size]; + } + }; + public int id; + public String created_at; + public String updated_at; + public String state; + public String target_url; + public String description; + public String url; + public String context; + + public GithubStatus() { + } + + protected GithubStatus(Parcel in) { + this.id = in.readInt(); + this.created_at = in.readString(); + this.updated_at = in.readString(); + this.state = in.readString(); + this.target_url = in.readString(); + this.description = in.readString(); + this.url = in.readString(); + this.context = in.readString(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.created_at); + dest.writeString(this.updated_at); + dest.writeString(this.state); + dest.writeString(this.target_url); + dest.writeString(this.description); + dest.writeString(this.url); + dest.writeString(this.context); + } +} diff --git a/app/src/main/java/com/anly/githubapp/data/model/GithubStatusResponse.java b/app/src/main/java/com/anly/githubapp/data/model/GithubStatusResponse.java new file mode 100644 index 0000000..b15434b --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/GithubStatusResponse.java @@ -0,0 +1,50 @@ +package com.anly.githubapp.data.model; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.List; + +public class GithubStatusResponse extends ShaUrl implements Parcelable { + public static final Creator CREATOR = new Creator() { + public GithubStatusResponse createFromParcel(Parcel source) { + return new GithubStatusResponse(source); + } + + public GithubStatusResponse[] newArray(int size) { + return new GithubStatusResponse[size]; + } + }; + public String state; + public int total_count; + public List statuses; + public Repo repository; + public String commit_url; + + public GithubStatusResponse() { + } + + protected GithubStatusResponse(Parcel in) { + super(in); + this.state = in.readString(); + this.total_count = in.readInt(); + this.statuses = in.createTypedArrayList(GithubStatus.CREATOR); + this.repository = in.readParcelable(Repo.class.getClassLoader()); + this.commit_url = in.readString(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeString(this.state); + dest.writeInt(this.total_count); + dest.writeTypedList(statuses); + dest.writeParcelable(this.repository, 0); + dest.writeString(this.commit_url); + } +} diff --git a/app/src/main/java/com/anly/githubapp/data/model/Head.java b/app/src/main/java/com/anly/githubapp/data/model/Head.java new file mode 100644 index 0000000..0b1b59d --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/Head.java @@ -0,0 +1,46 @@ +package com.anly.githubapp.data.model; + +import android.os.Parcel; +import android.os.Parcelable; + +public class Head extends ShaUrl implements Parcelable { + + public static final Creator CREATOR = new Creator() { + public Head createFromParcel(Parcel source) { + return new Head(source); + } + + public Head[] newArray(int size) { + return new Head[size]; + } + }; + public String ref; + public Repo repo; + public String label; + public User user; + + public Head() { + } + + protected Head(Parcel in) { + super(in); + this.ref = in.readString(); + this.repo = in.readParcelable(Repo.class.getClassLoader()); + this.label = in.readString(); + this.user = in.readParcelable(User.class.getClassLoader()); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeString(this.ref); + dest.writeParcelable(this.repo, 0); + dest.writeString(this.label); + dest.writeParcelable(this.user, 0); + } +} diff --git a/app/src/main/java/com/anly/githubapp/data/model/Issue.java b/app/src/main/java/com/anly/githubapp/data/model/Issue.java new file mode 100644 index 0000000..2c4c982 --- /dev/null +++ b/app/src/main/java/com/anly/githubapp/data/model/Issue.java @@ -0,0 +1,75 @@ +package com.anly.githubapp.data.model; + +import android.os.Parcel; +import android.os.Parcelable; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class Issue extends GithubComment implements Parcelable { + + public static final Creator CREATOR = new Creator() { + public Issue createFromParcel(Parcel source) { + return new Issue(source); + } + + public Issue[] newArray(int size) { + return new Issue[size]; + } + }; + public int number; + public IssueState state; + public boolean locked; + public String title; + public List