diff --git a/.idea/misc.xml b/.idea/misc.xml index 10b388f..f32f54a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,19 +3,43 @@ diff --git a/app/build.gradle b/app/build.gradle index dd92557..df4b76a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,6 +43,7 @@ implementation 'androidx.annotation:annotation:1.2.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' @@ -51,4 +52,7 @@ implementation 'com.squareup.retrofit2:converter-scalars:2.1.0' implementation 'com.github.bumptech.glide:glide:4.10.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0' + implementation 'com.google.android.material:material:1.1.0-alpha08' + implementation 'androidx.viewpager2:viewpager2:1.0.0-beta02' + } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 993f4ef..3dc7176 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,9 @@ android:supportsRtl="true" android:theme="@style/Theme.Acanthus" android:usesCleartextTraffic="true"> + @@ -28,6 +31,7 @@ + @@ -36,15 +40,15 @@ - - - - + + + + + android:windowSoftInputMode="adjustPan" /> \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java index 7ebf505..db03a5e 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java @@ -3,31 +3,20 @@ import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; -import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.TextView; import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.R; import org.ntlab.acanthus_client.entities.Animation; import org.ntlab.acanthus_client.entities.AnimationJson; -import org.ntlab.acanthus_client.views.animation.AnimationActivity; import org.ntlab.acanthus_client.views.animation.AnimationCanvas; import org.ntlab.acanthus_client.views.userpage.UserPageActivity; -import org.ntlab.acanthus_client.views.userpage.followerList.FollowerListActivity; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; import java.util.ArrayList; -import java.util.Collection; public class AnimationDetailActivity extends AppCompatActivity { diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java index 88e72f5..793ae06 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java @@ -14,14 +14,14 @@ import org.ntlab.acanthus_client.R; import org.ntlab.acanthus_client.databinding.FragmentMypageBinding; import org.ntlab.acanthus_client.views.animation.AnimationActivity; -import org.ntlab.acanthus_client.views.main_menu_ui.mypage.help.HowToUseActivity; import org.ntlab.acanthus_client.views.main_menu_ui.mypage.help.InquiryActivity; import org.ntlab.acanthus_client.views.main_menu_ui.mypage.others.AppInformationActivity; import org.ntlab.acanthus_client.views.main_menu_ui.mypage.logout.LogoutActivity; import org.ntlab.acanthus_client.views.main_menu_ui.mypage.others.PrivacyPolicyActivity; import org.ntlab.acanthus_client.views.main_menu_ui.mypage.others.TermsOfServiceActivity; -import org.ntlab.acanthus_client.views.userpage.followList.FollowListActivity; -import org.ntlab.acanthus_client.views.userpage.followerList.FollowerListActivity; +import org.ntlab.acanthus_client.views.userpage.followFollower.followList.FollowListActivity; +import org.ntlab.acanthus_client.views.userpage.followFollower.FollowFollowerActivity; +import org.ntlab.acanthus_client.views.userpage.followFollower.followerList.FollowerListActivity; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -280,7 +280,7 @@ // private void transitionHowToUseActivity() { Acanthus acanthus = (Acanthus) getActivity().getApplication(); - Intent intent = new Intent(acanthus, HowToUseActivity.class); + Intent intent = new Intent(acanthus, FollowFollowerActivity.class); startActivity(intent); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java index 8bc5636..e239eeb 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java @@ -10,8 +10,8 @@ import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.R; import org.ntlab.acanthus_client.entities.FollowJson; -import org.ntlab.acanthus_client.views.userpage.followList.FollowListActivity; -import org.ntlab.acanthus_client.views.userpage.followerList.FollowerListActivity; +import org.ntlab.acanthus_client.views.userpage.followFollower.followList.FollowListActivity; +import org.ntlab.acanthus_client.views.userpage.followFollower.followerList.FollowerListActivity; import org.ntlab.acanthus_client.views.userpage.workList.WorkListActivity; diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/FollowFollowerActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/FollowFollowerActivity.java new file mode 100644 index 0000000..07a5041 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/FollowFollowerActivity.java @@ -0,0 +1,41 @@ +package org.ntlab.acanthus_client.views.userpage.followFollower; + +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import android.os.Bundle; +import android.view.View; + +import org.ntlab.acanthus_client.R; + +public class FollowFollowerActivity extends FragmentActivity { + + private ViewPager2 pager; + + private FragmentStateAdapter adapter; + + private int currentPage; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_follow_follower); + + pager = findViewById(R.id.pager); + + adapter = new FollowFollowerAdapter(this); + pager.setAdapter(adapter); + currentPage = 0; + + } + + public void onClickNext(View view) { + currentPage ++; + pager.setCurrentItem(currentPage); + } + + public void onClickGoToTop(View view) { + currentPage = 0; + pager.setCurrentItem(currentPage); + } +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/FollowFollowerAdapter.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/FollowFollowerAdapter.java new file mode 100644 index 0000000..4b75a14 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/FollowFollowerAdapter.java @@ -0,0 +1,34 @@ +package org.ntlab.acanthus_client.views.userpage.followFollower; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager2.adapter.FragmentStateAdapter; + +import org.ntlab.acanthus_client.views.userpage.followFollower.followList.FollowListFragment; +import org.ntlab.acanthus_client.views.userpage.followFollower.followerList.FollowerListFragment; + +public class FollowFollowerAdapter extends FragmentStateAdapter { + private static final int PAGE_NUM = 2; + + public FollowFollowerAdapter(FragmentActivity fm) { + super(fm); + } + + @Override + public Fragment createFragment(int position) { + Fragment fragment = null; + switch (position){ + case 0: + fragment = new FollowListFragment(); + break; + default: + fragment = new FollowerListFragment(); + } + return fragment; + } + + @Override + public int getItemCount() { + return PAGE_NUM; + } +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followList/FollowListActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followList/FollowListActivity.java new file mode 100644 index 0000000..8b107dc --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followList/FollowListActivity.java @@ -0,0 +1,72 @@ +package org.ntlab.acanthus_client.views.userpage.followFollower.followList; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ListView; + +import org.ntlab.acanthus_client.R; +import org.ntlab.acanthus_client.entities.FollowJson; +import org.ntlab.acanthus_client.views.userpage.UserListViewAdapter; +import org.ntlab.acanthus_client.views.userpage.UserPageActivity; +import org.ntlab.acanthus_client.views.userpage.UserPageViewModel; + +import java.util.ArrayList; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +public class FollowListActivity extends AppCompatActivity { + + private UserPageViewModel userPageViewModel; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_follow_list); + + userPageViewModel = new ViewModelProvider(this).get(UserPageViewModel.class); + Intent intent = getIntent(); //UserPageActivityからuidをもらう + Integer uid = intent.getIntExtra("UID", 0); + ListView listView = findViewById(R.id.followListView); + + Button returnButton = findViewById(R.id.returnFollowButton); + + //前の画面に戻る処理 + returnButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + //フォロー一覧の取得と表示 + userPageViewModel.getFollows(uid); + userPageViewModel.getFollowJson().observe(this, new Observer() { + @Override + public void onChanged(FollowJson followJson) { + ArrayList followUidList = followJson.getFollowUids(); + ArrayList followNameList = followJson.getFollowNames(); + BaseAdapter adapter = new UserListViewAdapter(getApplication(), R.layout.follow_or_follower_list, followNameList); + + listView.setAdapter(adapter); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + //フォローのユーザーページへの遷移 + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + Intent intent = new Intent(getApplication(), UserPageActivity.class); + intent.putExtra("UID", followUidList.get(position)); + intent.putExtra("NAME", followNameList.get(position)); + startActivity(intent); + } + }); + } + }); + + } + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followList/FollowListFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followList/FollowListFragment.java new file mode 100644 index 0000000..d048ee1 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followList/FollowListFragment.java @@ -0,0 +1,20 @@ +package org.ntlab.acanthus_client.views.userpage.followFollower.followList; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import org.ntlab.acanthus_client.R; + +public class FollowListFragment extends Fragment { + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_follow_list, container, false); + } +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followerList/FollowerListActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followerList/FollowerListActivity.java new file mode 100644 index 0000000..0b36f78 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followerList/FollowerListActivity.java @@ -0,0 +1,74 @@ +package org.ntlab.acanthus_client.views.userpage.followFollower.followerList; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ListView; + +import org.jetbrains.annotations.Nullable; +import org.ntlab.acanthus_client.R; +import org.ntlab.acanthus_client.entities.FollowerJson; +import org.ntlab.acanthus_client.views.userpage.UserListViewAdapter; +import org.ntlab.acanthus_client.views.userpage.UserPageActivity; +import org.ntlab.acanthus_client.views.userpage.UserPageViewModel; + +import java.util.ArrayList; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + + +public class FollowerListActivity extends AppCompatActivity { + + private UserPageViewModel userPageViewModel; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_follower_list); + + userPageViewModel = new ViewModelProvider(this).get(UserPageViewModel.class); + Intent intent = getIntent(); //UserPageActivityからuidをもらう + Integer uid = intent.getIntExtra("UID", 0); + ListView listView = findViewById(R.id.followerListView); + + Button returnButton = findViewById(R.id.returnFollowerButton); + + //前の画面に戻る処理 + returnButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + //フォロワー一覧の取得と表示 + userPageViewModel.getFollowers(uid); + userPageViewModel.getFollowerJson().observe(this, new Observer() { + @Override + public void onChanged(@Nullable FollowerJson followerJson) { + ArrayList followerUidList = followerJson.getFollowerUids(); + ArrayList followerNameList = followerJson.getFollowerNames(); + BaseAdapter adapter = new UserListViewAdapter(getApplication(), R.layout.follow_or_follower_list, followerNameList); + + listView.setAdapter(adapter); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + //フォロワーのユーザーページへの遷移 + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + Intent intent = new Intent(getApplication(), UserPageActivity.class); + intent.putExtra("UID", followerUidList.get(position)); + intent.putExtra("NAME", followerNameList.get(position)); + startActivity(intent); + } + }); + } + }); + + } + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followerList/FollowerListFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followerList/FollowerListFragment.java new file mode 100644 index 0000000..ac46d1f --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followFollower/followerList/FollowerListFragment.java @@ -0,0 +1,19 @@ +package org.ntlab.acanthus_client.views.userpage.followFollower.followerList; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import org.ntlab.acanthus_client.R; + +public class FollowerListFragment extends Fragment { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_follower_list, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followList/FollowListActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followList/FollowListActivity.java deleted file mode 100644 index 9d86815..0000000 --- a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followList/FollowListActivity.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.ntlab.acanthus_client.views.userpage.followList; - -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.AdapterView; -import android.widget.BaseAdapter; -import android.widget.Button; -import android.widget.ListView; - -import org.ntlab.acanthus_client.R; -import org.ntlab.acanthus_client.entities.FollowJson; -import org.ntlab.acanthus_client.views.userpage.UserListViewAdapter; -import org.ntlab.acanthus_client.views.userpage.UserPageActivity; -import org.ntlab.acanthus_client.views.userpage.UserPageViewModel; - -import java.util.ArrayList; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -public class FollowListActivity extends AppCompatActivity { - - private UserPageViewModel userPageViewModel; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_follow_list); - - userPageViewModel = new ViewModelProvider(this).get(UserPageViewModel.class); - Intent intent = getIntent(); //UserPageActivityからuidをもらう - Integer uid = intent.getIntExtra("UID", 0); - ListView listView = findViewById(R.id.followListView); - - Button returnButton = findViewById(R.id.returnFollowButton); - - //前の画面に戻る処理 - returnButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - - //フォロー一覧の取得と表示 - userPageViewModel.getFollows(uid); - userPageViewModel.getFollowJson().observe(this, new Observer() { - @Override - public void onChanged(FollowJson followJson) { - ArrayList followUidList = followJson.getFollowUids(); - ArrayList followNameList = followJson.getFollowNames(); - BaseAdapter adapter = new UserListViewAdapter(getApplication(), R.layout.follow_or_follower_list, followNameList); - - listView.setAdapter(adapter); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - //フォローのユーザーページへの遷移 - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Intent intent = new Intent(getApplication(), UserPageActivity.class); - intent.putExtra("UID", followUidList.get(position)); - intent.putExtra("NAME", followNameList.get(position)); - startActivity(intent); - } - }); - } - }); - - } - -} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followerList/FollowerListActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followerList/FollowerListActivity.java deleted file mode 100644 index 22aad87..0000000 --- a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/followerList/FollowerListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.ntlab.acanthus_client.views.userpage.followerList; - -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.AdapterView; -import android.widget.BaseAdapter; -import android.widget.Button; -import android.widget.ListView; - -import org.jetbrains.annotations.Nullable; -import org.ntlab.acanthus_client.R; -import org.ntlab.acanthus_client.entities.FollowerJson; -import org.ntlab.acanthus_client.views.userpage.UserListViewAdapter; -import org.ntlab.acanthus_client.views.userpage.UserPageActivity; -import org.ntlab.acanthus_client.views.userpage.UserPageViewModel; - -import java.util.ArrayList; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - - -public class FollowerListActivity extends AppCompatActivity { - - private UserPageViewModel userPageViewModel; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_follower_list); - - userPageViewModel = new ViewModelProvider(this).get(UserPageViewModel.class); - Intent intent = getIntent(); //UserPageActivityからuidをもらう - Integer uid = intent.getIntExtra("UID", 0); - ListView listView = findViewById(R.id.followerListView); - - Button returnButton = findViewById(R.id.returnFollowerButton); - - //前の画面に戻る処理 - returnButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - - //フォロワー一覧の取得と表示 - userPageViewModel.getFollowers(uid); - userPageViewModel.getFollowerJson().observe(this, new Observer() { - @Override - public void onChanged(@Nullable FollowerJson followerJson) { - ArrayList followerUidList = followerJson.getFollowerUids(); - ArrayList followerNameList = followerJson.getFollowerNames(); - BaseAdapter adapter = new UserListViewAdapter(getApplication(), R.layout.follow_or_follower_list, followerNameList); - - listView.setAdapter(adapter); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - //フォロワーのユーザーページへの遷移 - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Intent intent = new Intent(getApplication(), UserPageActivity.class); - intent.putExtra("UID", followerUidList.get(position)); - intent.putExtra("NAME", followerNameList.get(position)); - startActivity(intent); - } - }); - } - }); - - } - -} diff --git a/app/src/main/res/layout/activity_follow_follower.xml b/app/src/main/res/layout/activity_follow_follower.xml new file mode 100644 index 0000000..a4c7fab --- /dev/null +++ b/app/src/main/res/layout/activity_follow_follower.xml @@ -0,0 +1,29 @@ + + + + +