From c48d63dc3a5788c41504cc2e719c4491b2cfea12 Mon Sep 17 00:00:00 2001 From: Annnnnn <658117188@qq.com> Date: Wed, 10 Nov 2021 17:59:03 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' # Conflicts: # Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml --- .../app/src/main/AndroidManifest.xml | 3 +- .../Adapter/MessagePageFragmentAdapter.java | 34 ++++ .../Fragment/CommentFragment.java | 123 ++++++++++++++ .../Fragment/FansFragment.java | 123 ++++++++++++++ .../Fragment/IndexFragment.java | 2 +- .../Fragment/MessageChannelFragment.java | 64 +++++++ .../Fragment/MessageFragment.java | 127 +++++++++----- .../leudaemialikeme/Fragment/MyFragment.java | 18 +- .../Fragment/NiceFragment.java | 116 +++++++++++++ .../Fragment/PrivateMsgFragment.java | 123 ++++++++++++++ .../app/src/main/res/drawable/img_helper.png | Bin 0 -> 609 bytes .../src/main/res/drawable/img_reminding.png | Bin 0 -> 721 bytes .../app/src/main/res/drawable/img_user.png | Bin 0 -> 1074 bytes .../app/src/main/res/drawable/img_user1.png | Bin 0 -> 707 bytes .../src/main/res/drawable/tab_selector.xml | 41 +++++ .../app/src/main/res/drawable/user1.png | Bin 0 -> 1197 bytes .../app/src/main/res/drawable/user2.png | Bin 0 -> 1195 bytes .../app/src/main/res/drawable/user3.png | Bin 0 -> 1172 bytes .../src/main/res/layout/fragment_comment.xml | 99 +++++++++++ .../app/src/main/res/layout/fragment_fans.xml | 157 ++++++++++++++++++ .../layout/fragment_invitation_channel.xml | 4 +- .../src/main/res/layout/fragment_message.xml | 94 ++++++++++- .../res/layout/fragment_message_channel.xml | 16 ++ .../main/res/layout/fragment_private_msg2.xml | 93 +++++++++++ .../app/src/main/res/layout/tab_rb.xml | 12 ++ .../mipmap-anydpi-v26/channel_down_narrow.png | Bin 0 -> 423 bytes .../main/res/mipmap-mdpi/img_read_already.png | Bin 0 -> 472 bytes .../res/mipmap-xxhdpi/img_message_send.png | Bin 0 -> 828 bytes .../app/src/main/res/values/colors.xml | 2 + 29 files changed, 1193 insertions(+), 58 deletions(-) create mode 100644 Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Adapter/MessagePageFragmentAdapter.java create mode 100644 Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/CommentFragment.java create mode 100644 Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/FansFragment.java create mode 100644 Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageChannelFragment.java create mode 100644 Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/NiceFragment.java create mode 100644 Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/PrivateMsgFragment.java create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_helper.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_reminding.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_user.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_user1.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/tab_selector.xml create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/user1.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/user2.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/drawable/user3.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_comment.xml create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_fans.xml create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message_channel.xml create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_private_msg2.xml create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/layout/tab_rb.xml create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/mipmap-anydpi-v26/channel_down_narrow.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/mipmap-mdpi/img_read_already.png create mode 100644 Code/LeudaemiaLikeMe/app/src/main/res/mipmap-xxhdpi/img_message_send.png diff --git a/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml b/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml index e8312a5..aaa24f4 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml +++ b/Code/LeudaemiaLikeMe/app/src/main/AndroidManifest.xml @@ -9,7 +9,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.LeudaemiaLikeMe"> - + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Adapter/MessagePageFragmentAdapter.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Adapter/MessagePageFragmentAdapter.java new file mode 100644 index 0000000..1836f05 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Adapter/MessagePageFragmentAdapter.java @@ -0,0 +1,34 @@ +package com.example.leudaemialikeme.Adapter; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; + +import com.example.leudaemialikeme.Fragment.MessageChannelFragment; + +public class MessagePageFragmentAdapter extends FragmentPagerAdapter { + private String[] channelList; + private FragmentManager fm; + public MessagePageFragmentAdapter(@NonNull FragmentManager fm, String[] channelList) { + super(fm); + this.channelList = channelList; + this.fm = fm; + } + + @NonNull + @Override + public Fragment getItem(int position) { + String MessageCategoryTitle = channelList[position]; + + /* if(position == 0) + {return new PrivateMsgFragment(); + }*/ + return MessageChannelFragment.newInstance(MessageCategoryTitle); + } + + @Override + public int getCount() { + return channelList.length; + } +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/CommentFragment.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/CommentFragment.java new file mode 100644 index 0000000..e4a2546 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/CommentFragment.java @@ -0,0 +1,123 @@ +package com.example.leudaemialikeme.Fragment; + +import android.content.Context; +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.viewpager.widget.ViewPager; + +import com.example.leudaemialikeme.R; + +/** + * A simple {@link Fragment} subclass. + * Activities that contain this fragment must implement the + * {@link PrivateMsgFragment.OnFragmentInteractionListener} interface + * to handle interaction events. + * Use the {@link PrivateMsgFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class CommentFragment extends Fragment implements ViewPager.OnPageChangeListener { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + private View view; + + private OnFragmentInteractionListener mListener; + + public CommentFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment PrivateMsgFragment. + */ + // TODO: Rename and change types and number of parameters + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + // return inflater.inflate(R.layout.fragment_private_msg2, container, false); + super.onCreate(savedInstanceState); + View view = inflater.inflate(R.layout.fragment_private_msg,container,false); + return view; + } + + // TODO: Rename method, update argument and hook method into UI event + public void onButtonPressed(Uri uri) { + if (mListener != null) { + mListener.onFragmentInteraction(uri); + } + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnFragmentInteractionListener) { + mListener = (OnFragmentInteractionListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnFragmentInteractionListener"); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + + /** + * This interface must be implemented by activities that contain this + * fragment to allow an interaction in this fragment to be communicated + * to the activity and potentially other fragments contained in that + * activity. + *

+ * See the Android Training lesson Communicating with Other Fragments for more information. + */ + public interface OnFragmentInteractionListener { + // TODO: Update argument type and name + void onFragmentInteraction(Uri uri); + } +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/FansFragment.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/FansFragment.java new file mode 100644 index 0000000..88874cc --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/FansFragment.java @@ -0,0 +1,123 @@ +package com.example.leudaemialikeme.Fragment; + +import android.content.Context; +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.viewpager.widget.ViewPager; + +import com.example.leudaemialikeme.R; + +/** + * A simple {@link Fragment} subclass. + * Activities that contain this fragment must implement the + * {@link PrivateMsgFragment.OnFragmentInteractionListener} interface + * to handle interaction events. + * Use the {@link PrivateMsgFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class FansFragment extends Fragment implements ViewPager.OnPageChangeListener { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + private View view; + + private OnFragmentInteractionListener mListener; + + public FansFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment PrivateMsgFragment. + */ + // TODO: Rename and change types and number of parameters + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + // return inflater.inflate(R.layout.fragment_private_msg2, container, false); + super.onCreate(savedInstanceState); + View view = inflater.inflate(R.layout.fragment_fans,container,false); + return view; + } + + // TODO: Rename method, update argument and hook method into UI event + public void onButtonPressed(Uri uri) { + if (mListener != null) { + mListener.onFragmentInteraction(uri); + } + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnFragmentInteractionListener) { + mListener = (OnFragmentInteractionListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnFragmentInteractionListener"); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + + /** + * This interface must be implemented by activities that contain this + * fragment to allow an interaction in this fragment to be communicated + * to the activity and potentially other fragments contained in that + * activity. + *

+ * See the Android Training lesson Communicating with Other Fragments for more information. + */ + public interface OnFragmentInteractionListener { + // TODO: Update argument type and name + void onFragmentInteraction(Uri uri); + } +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/IndexFragment.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/IndexFragment.java index db015c7..ec1a648 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/IndexFragment.java +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/IndexFragment.java @@ -116,7 +116,7 @@ public class IndexFragment extends Fragment { clockLinear.setOnClickListener(new View.OnClickListener(){ @Override - public void onClick(View v) { + public void onClick(View view) { Toast.makeText(view.getContext(),"x1233",Toast.LENGTH_SHORT).show(); } }); diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageChannelFragment.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageChannelFragment.java new file mode 100644 index 0000000..cef283a --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageChannelFragment.java @@ -0,0 +1,64 @@ +package com.example.leudaemialikeme.Fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.fragment.app.Fragment; + +import com.example.leudaemialikeme.R; + +public class MessageChannelFragment extends Fragment { + private static final String ARG_CATEGORY_TITLE = "category_title"; + private String messageCategoryTitle = "Default"; + private TextView mTitleField; + + public MessageChannelFragment() { + // Required empty public constructor + } + + public static MessageChannelFragment newInstance(String messageCategoryTitle) { + MessageChannelFragment fragment = new MessageChannelFragment(); + Bundle args = new Bundle(); + args.putString(ARG_CATEGORY_TITLE,messageCategoryTitle); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + try{ + messageCategoryTitle = (String)getArguments().getString(ARG_CATEGORY_TITLE); + }catch (java.lang.NullPointerException e){ + System.out.println("TesFragment getArg error!"); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view; + if(messageCategoryTitle.equals(" 私信 ")) + { + view = inflater.inflate(R.layout.fragment_private_msg,container,false); + } + else if(messageCategoryTitle.equals(" 评论 ")){ + view = inflater.inflate(R.layout.fragment_comment,container,false); + } + else if(messageCategoryTitle.equals(" 粉丝 ")){ + view = inflater.inflate(R.layout.fragment_fans,container,false); + } + else if(messageCategoryTitle.equals(" 赞 ")){ + view = inflater.inflate(R.layout.fragment_nice,container,false); + } + else{ + view = inflater.inflate(R.layout.fragment_message_channel, container, false); + mTitleField = (TextView) view.findViewById(R.id.messageCategoryTitle); + mTitleField.setText(messageCategoryTitle); + } + return view; + } +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageFragment.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageFragment.java index ce5a8cf..bc4cb03 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageFragment.java +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/MessageFragment.java @@ -1,65 +1,112 @@ package com.example.leudaemialikeme.Fragment; import android.os.Bundle; +import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.HorizontalScrollView; +import android.widget.RadioButton; +import android.widget.RadioGroup; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.viewpager.widget.ViewPager; +import com.example.leudaemialikeme.Adapter.MessagePageFragmentAdapter; import com.example.leudaemialikeme.R; -/** - * A simple {@link Fragment} subclass. - * Use the {@link MessageFragment#newInstance} factory method to - * create an instance of this fragment. - */ -public class MessageFragment extends Fragment { - // TODO: Rename parameter arguments, choose names that match - // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER - private static final String ARG_PARAM1 = "param1"; - private static final String ARG_PARAM2 = "param2"; - - // TODO: Rename and change types of parameters - private String mParam1; - private String mParam2; +public class MessageFragment extends Fragment implements ViewPager.OnPageChangeListener { + private static final String ARG_CHANNEL_LIST = "channel_list"; + private View view=null; // 碎片的布局实例 + private ViewPager viewPager; //内导航的碎片的容器 + private RadioGroup rgChannel=null; // 内导航由单选按钮组构成 + private HorizontalScrollView hvChannel=null; //单选按钮组可滚动动 + private String[] channelList = {" 私信 "," 评论 ", + " 赞 "," 粉丝 "}; //默认的内导航栏目 + private MessagePageFragmentAdapter adapter; //viewPager 的适配器 public MessageFragment() { // Required empty public constructor } - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment MessageFragment. - */ - // TODO: Rename and change types and number of parameters - public static MessageFragment newInstance(String param1, String param2) { - MessageFragment fragment = new MessageFragment(); - Bundle args = new Bundle(); - args.putString(ARG_PARAM1, param1); - args.putString(ARG_PARAM2, param2); - fragment.setArguments(args); - return fragment; - } @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - mParam1 = getArguments().getString(ARG_PARAM1); - mParam2 = getArguments().getString(ARG_PARAM2); + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + if(view==null){ + view=inflater.inflate(R.layout.fragment_message, container, false); + viewPager=(ViewPager)view.findViewById(R.id.vpNewsList0); + initViewPager(); //设置 ViewPager + + rgChannel=(RadioGroup)view.findViewById(R.id.rgChannel0); + hvChannel=(HorizontalScrollView)view.findViewById(R.id.hvChannel0); + initTab(inflater); + + rgChannel.setOnCheckedChangeListener( + new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + viewPager.setCurrentItem(checkedId); + } + } + ); } + return view; + } + + private void initTab(LayoutInflater inflater) {//初始化上面的 + for(int i=0;i + * See the Android Training lesson Communicating with Other Fragments for more information. + */ + public interface OnFragmentInteractionListener { + // TODO: Update argument type and name + void onFragmentInteraction(Uri uri); + } +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/PrivateMsgFragment.java b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/PrivateMsgFragment.java new file mode 100644 index 0000000..dea6d06 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/java/com/example/leudaemialikeme/Fragment/PrivateMsgFragment.java @@ -0,0 +1,123 @@ +package com.example.leudaemialikeme.Fragment; + +import android.content.Context; +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.viewpager.widget.ViewPager; + +import com.example.leudaemialikeme.R; + +/** + * A simple {@link Fragment} subclass. + * Activities that contain this fragment must implement the + * {@link PrivateMsgFragment.OnFragmentInteractionListener} interface + * to handle interaction events. + * Use the {@link PrivateMsgFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class PrivateMsgFragment extends Fragment implements ViewPager.OnPageChangeListener { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + private View view; + + private OnFragmentInteractionListener mListener; + + public PrivateMsgFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment PrivateMsgFragment. + */ + // TODO: Rename and change types and number of parameters + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + // return inflater.inflate(R.layout.fragment_private_msg2, container, false); + super.onCreate(savedInstanceState); + View view = inflater.inflate(R.layout.fragment_private_msg,container,false); + return view; + } + + // TODO: Rename method, update argument and hook method into UI event + public void onButtonPressed(Uri uri) { + if (mListener != null) { + mListener.onFragmentInteraction(uri); + } + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnFragmentInteractionListener) { + mListener = (OnFragmentInteractionListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnFragmentInteractionListener"); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + + /** + * This interface must be implemented by activities that contain this + * fragment to allow an interaction in this fragment to be communicated + * to the activity and potentially other fragments contained in that + * activity. + *

+ * See the Android Training lesson Communicating with Other Fragments for more information. + */ + public interface OnFragmentInteractionListener { + // TODO: Update argument type and name + void onFragmentInteraction(Uri uri); + } +} diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_helper.png b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_helper.png new file mode 100644 index 0000000000000000000000000000000000000000..6d23a6c5759164270d7b1ade72ec5e8745c974f7 GIT binary patch literal 609 zcmV-n0-pVeP)Px%8%ab#R9HvtS3PJHK@|SJ-6GK@A_hgU$n7P9yGuk4K@g3gU==GXn{?LELT<0{ z1aET|{?s=1US|_g!5>gWt}xzRak_h{6vY$@5)R4DlZ`o9&%1z`h4sK!&YSn%$2Z@+ zc|)XZOu0V(O#rowS0v#AvQw8K0ai&iJK){vp!Bjg-yaM#tU_HNwr=4*@!v?}oE==f z7x(=Jpl*400L*P{SQNo4T_7|#1|>5f4gz@Yg#OXZ05kziiQtOc@{78~yYWj|?~o~Y z0bqnslXh4Ry1rfpByu>RpSU>dR{k--8KFAi2IVLJ0Sq4l@3Q&vHgMYL7)^V*)c1BY zCJKj@srHWo_a}pe&v6lJYoKQ39}+wnC2dP*N3M14YrH@;b7^dp=9g$qAdlQ|;Z&jk z>e<3;h)k~+P}t)x`=8`|+DD+HvNKST&w7ao#aA00000NkvXXu0mjfQezUD literal 0 HcmV?d00001 diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_reminding.png b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_reminding.png new file mode 100644 index 0000000000000000000000000000000000000000..7bf93f42ae09b3044d4919cc8476bdb8bfbbac8a GIT binary patch literal 721 zcmV;?0xtcDP)Px%i%CR5R9Hvtmdk4sQ543%a}z}nL{w;#nUM&t1fd%XEmRvfA}aVmS2fc?K~ek% zbYWfSKOl;NGEVGD@c}C0#zqSU>ZTyL5-iRmEvSefh$i>QjE%-L&Wl13bC)ycobPwP zxpU4XEb*cx*2ljMVA<+U-$7k-9;bCOwF9QDjtPOYzOa-yXK2n?8i+&yWl!6|5?h&g zh=8G1K?Wv?X_5qm>UpOWwIlz%<*8*b4g+{YneTn2-nlP-%L@eu9c5GynE*cMinA_`cr(Uw)%O6_N@l}Q z-5cou=KpmfR7!cLm;|8gsT0f?j_MJipP<=nx&U1V{$B?ySGfexi8w8|{TKb+lKHZ( zxF-|$fz}y7z|oT8Tu;;oT=fV8*P>=Z$39?kVTGvGpMlX2U|N357L5%vpOOHWZwsr% z^7;gTJ`kp4F1yX3nXm0NIs#apb{@>9{a{J7&&b>NlZZECO;6h^nD5O`(hGXtJ`)LG z)s!M6J^eX-QAs1*p5wRV;F;j_3UVvI0>90 zU`=Zb10Px9Vpv|Mi)-YKs8d19RsC7-U%^^eRaczBq^_j`Fl}{M2>kIar9{!toWy4) z6@b6X@!I-L4avdb$_T2APx&>`6pHR9HvtmS2ceRUF5^zdI?_f;9K8ZTU2{b7o9~C_|%=6x_gwpeX1er65`7 z-krh(3wmgMsjS#QoinZp{jrw^V`JF$6t88?Y^W%Sjjw+BY`?phw<%ICAkZ2__PLhRFRI8s^ zxNyw%YhVJ=Zys%HS~1aMvCqieVp z&x*@)`6mK6C4VCmzZVIFRJ&!eaNBv4(%Mp;h?a_h{Z&_N>RO8?U~qg>#xmzwyXpI+05bUs+T`*3=r>i z<{tq}Xjk<7Q&cg4liC$`H~!ltH3Y(z*?nS5^(}x^#9=Y;^1ICeqlk!63L;*xEbub%nbK?t=YSdlV@tFXs2<)Q6!W9=A+V+T9>5BKk83x#x>amj zfSxx_bzSMY{%Ev~82F&-im027EL~PF664i)_F=d#7|2ID|FXopz}{2oLr7mvM-FLM zY)v9a&uro7;>0UeSG+V=Od>$s3#G9^koEGk$RPq93f%0j*`iLV@)TRv<6wTU;j3NI z_-@Hy1keJaA$EZQMW778nOWU6s0(6yQnkzhq>3(*t|YNiX+9yBH$?TdI!$ zM5R3lqEEs){75uqafaiWTjQ|sQ&_|0=ylZeAen@P`}AgUy5k;5OMg9q55@_Z#6>R~ zCr>h4#urxN3o5Y!PN}kkiM9cBM7!C(q{NN!rp7&?U2#vx6|kj$0N_Uf-mBeQzbQbx zBZ%GsSZg=ubPSM|m7N4C0@SbF>|RpEp8x;=07*qoM6N<$f_5DSkpKVy literal 0 HcmV?d00001 diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_user1.png b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/img_user1.png new file mode 100644 index 0000000000000000000000000000000000000000..9e730c171988c77b9598f0d9c8f408733d37c82d GIT binary patch literal 707 zcmV;!0zCbRP)Px%eMv+?R9Hv7SBX&^K@4mnu!+Dp0z(AQ5nv*)i2#TIh`-)#{sqK>VudHUluTQvg2_gSP+#N}{yH;Kan|S~_|FJOKFQ z&hC{4lKN~EGgD0{>M#D`CCQ5t3rzsr@IN>7sKT3zEYZCqxwi=b-@W)IxivFIt8Nh8 zXCdcirj8g`AXyBul>yOs?vW_34`vpF(pOI;xAnrz;$kJqP$z3-ECDbWOq|H@ACg0R z#tgiX@O}VsM50^8r-BQz0&uFj$S`wMnh8|~eCk=DkTm&}4n>}(Ws;hljTQiL{!<%| zBzFqVgZ}nh*R%i-)u9Db0JkJHfE2w_^C1)EJ;^v-6O}3eH?HEkiUv_IBBw|GCYL5n zN)4>p<41d zpJa-Dwy)i(Hlw$GA2Efc}Mb^tesy{haa{!dP!}ofr{C+&ya{zj7|D`y`37P}& zveatF?}`B8`@h3xmueBf|42cx2Gj*Q!@|=|S7;SwJ=CbkFT$oQPC`FOH4DP%9nLS8 p+(WAFgV5vQkv;s^Q_|XH^a}fq0x;9{Aff;O002ovPDHLkV1g_hHT?hp literal 0 HcmV?d00001 diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/drawable/tab_selector.xml b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/tab_selector.xml new file mode 100644 index 0000000..7da99e3 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/tab_selector.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/drawable/user1.png b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/user1.png new file mode 100644 index 0000000000000000000000000000000000000000..a519b90fade01cf5c31fa61f202d47bf879a093f GIT binary patch literal 1197 zcmV;e1XBBnP)Px(XGugsR9HvNmVZoDWf;f5&pG$z1vG36kb$Ud2x;TTy%=7k4J3!OA|$yZ*H-+| z)?gOSR;_I6AI<5qUAM}uTB9~nZyOS&4g>s!0RygpNznpLvJ9N@%PVltJx@F5j_U>P z<=hlT=bv-l=Xu}n_wzpQdCz$X3w+T6`{Vx)u)QENT5yS<5nu#x9fbEGBLsw8F#o1h zkV%Lj<_3l^LL_ei@G_Y9TC3~#XjNFV0%gx-e*~b^OXx0uAfLj_10V|Xzjk`glSxR3f%t$&^UDx?Q0LtJU`Pt>ncxk#&M!E^2 zDB#?MmYE)mo!08Q549?%xde(pS>DDyAlmIMmXw%)7mM=LP{q;j(BAp;R4*p0wYql4 z905G_HHcqO#8$>c!Mr{h#^kkAwC(LzaIw*j>wSN@>`11Wb2mA zNL!bPuI_89?wa_O>fO72=3Em_)|^)WG&$ePk z%reBqMyvXlyLvG)>OlGvkE`vL#^zyj%45Z3Dy*Cn0JREs+i7W0=q4>eC9fMFX(HoR zb0B>Ks=%a>^wY@(CUL`T!pz*GUnH9;?&*QK2e|S>F+={sTi7)rL3~K(2?>N!aZS!A zftUyU5_*eCT{WLF;}s<)jg3Rp>p`M0*`-atHYYVu^ZNo&jazM_926SjZA9aD#&yO5 z!+$ZqZveL2e&mTUGfPf&Ba<`%V!59(OC#n5fX~<#OH2CR6hl|%;Ni$PIBpy0pF#I8 z*(Cw83vviKC@fy$p}t-WU;ADdiQZ3HmQgJr&0XNEf8!vJ^_B4WO@lt;5a`h)Rg-&a zK*PiC=O7&@K{C?(#4&S2inv&iNVlE6`vrJ9XH)Z!OPUUe6i!;)(c;s~XOJ)1wt-QhijLiY^mmmpq zI)J(q;i-`OTcJzcr2Z-|)yZMG&5(q;pg%y|R& zTH_f2jAk-f*82tE_M@vI3*FuwT!T$;4Y^;c>6aFO7;1vJbc!D!$nlh1^y{S7lnU^r zZ%V-YvA2=)#+P8p_jc9-Al+iwY<%r~IGVbz!*>f@AM#5ROxdrNCze{5s8JLi0;FkKU^Ef&=^uPJfdyb^+9g00000 LNkvXXu0mjfYQj=} literal 0 HcmV?d00001 diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/drawable/user2.png b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/user2.png new file mode 100644 index 0000000000000000000000000000000000000000..05bd9abd5882c07c43b8641274c17527ed9647a2 GIT binary patch literal 1195 zcmV;c1XTNpP)Px(Wl2OqR9HvFmTgc}RT#&AX9>p^P)ra-C{4l<(qhqK#SD6p2x5Fmq8G`jFU?dc zsgu)(qCQwn6ogJqV|_83cyXo}UZl(cGhTLZ1x=jDY-xO3qX-m`NbYIw-34}Y*}V(R zcxLYGz2`j7|M@-7bMDxc1NHTr{m`#~A zLdZ)Jv2iS*>;y4S3Q|=le?W8tm=iPBgV+hg_y|z1NV&~&tlFvvL>EAkDKlRP-f$HR zyvacL3?mo1`Uo*j;mW|!=&}H-BG{&<8a@G>nV0Fw#??kIgdPB!+FySGRC_&p!YhEM z(yPLcE?+?0yfD_LF63B;ov=_N?|$A)ckfkxv-i5N%FZTh^?YyeIx3JUT?JlRpGa!r zZOoY&e4Xw$mS1`E(;wXC!cQ|H-Kcu2KrSCoKkOKZicNmW2~PEO7WQ3i(}$x4o$xnraGV^_i9 ze})MN3>cj{XtBNj`X_a}1BK|<^AD-30t z7lYgbEFKjK4TB|SSp76y`Q0%cG7G-`0yfHP~iLx?7_ zARgx44vUt+LMPYhc4%*dKkd-o;wjb^QCRw+rv;AyGB0N-NRLX~y#l7q0HYCBt#N36 zR{?!}j{CL-xa@3=Ys3J8kfTG9S3&-A%{>@j=;kS0lFy$gNL?p(tm7 zX+8mN4uW;hgOp&YhhKj5>4M+_Qi&0T~}!Cs#6JO%{|WSTjMy<6sX%rinm2k$!negw&bMf7E%o(A|qI~ zGJ&d+(Tw!?yM8VG{uH|gkYDXf7i*q5peN{fHj@IFOyCjUe*vA_dNBDJ7>ob_002ov JPDHLkV1jt)KNSD~ literal 0 HcmV?d00001 diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/drawable/user3.png b/Code/LeudaemiaLikeMe/app/src/main/res/drawable/user3.png new file mode 100644 index 0000000000000000000000000000000000000000..8dcac4bcfaf85f0355f1b04742fcec3b3a5430eb GIT binary patch literal 1172 zcmV;F1Z(?=P)Px(PDw;TR9HvFmTyd3RT##f(-tTM+Oaa)!C;-CFkuWj3~leGEIMN}gMkChnA61! zf{ZO1Gr;)4&1e><#uyeRZqaRtQP&bS#P|urMrhYD*o?wNWWwB_rBtv(DE)U#Td5+Y zy=7f?zTBML_dL(>r%3TU|iH)EyhT@3kvi5MWHLL(il}slH zwh+Kd0e%os6M$6!QEPNv&xHp-#oPvvoU~f>$LN@OrCU^*D#7qALm>Uz8l5&JTmW_e zJW;&BVV<<`+@c36ccS6bX6!85issf1WM)WVGEc!YG3E1&ayf-x==GLB5bTbCVN9YG zf&_U^I)s8)*laeGmp%zi>qV3n6?mSR8Eer$FoN-kNp$z#fYoXPadETM`p*7)2T(DC zoAWc%YAVZuWz_S2*S;g3Cn1olwc6|V3~;Kh`lcX`zpkX@DUa4qBU9knELbl~^~}u{ zE9PttBqexTL(QR&z>nlwK0g1gFc>kbBRINm_r?0^9gjJpyn0>wACVvuA|uTU;6C@6 zSu572NIdiU!zUnFCD0yfJi9q80Pf!Z=Kg29vvRXN1sH6!w0@6st(UfGbh`Fnv8*!S z7AaM!UadV?{;qsudQ2eEk>3rb`nQ`dXtdgjVCJ4WVG}eT(^y;6QSnk?!Tj85bAY;> z;PIn;GN;b8b-i+|VGCQ`kO17Gmp=cnMU}sy*q_0jv5D)_ZM)@c%|p(BZ|9fK{^p8~ zmx34R^Wsd8k8u@yl0q?GHURBae}K8aUZ)NlV4nkVSOH#CA9?)XhWi3w{qBW~I~Lid zhh*!M0M2%RJ`6zYGo#eqb=((&0fcni8X5js68URq)H6*1yCAC!9Dk$!v~jfm#i}Rn z67x(9XmmQnVkyLls~2q6I6elWaTsLw7l>kJ@JV|dO-{-Bs_LDi<$SFu>`k(DAtATo9s}??2xQ*A(l^J{4>I%Ef(4_Z6z>FaiAZJKwEDl%+p?JWp=Wq zC|{~9*k5sf4Smp*2y!(SB`&qQsEci<&wRVA>K~`Jn53}K5IE0 m?-zj04#FLCUy3ah$iD%s`*ASpwkt#c0000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_fans.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_fans.xml new file mode 100644 index 0000000..ed0d37f --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_fans.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_invitation_channel.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_invitation_channel.xml index 1f97fb2..aeca9a8 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_invitation_channel.xml +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_invitation_channel.xml @@ -11,7 +11,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:textSize="30sp" - android:text="@string/hello_blank_fragment" /> + android:textSize="30sp"> + /> \ No newline at end of file diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message.xml index e78b6aa..c3f9b02 100644 --- a/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message.xml +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message.xml @@ -1,14 +1,96 @@ - - - + android:layout_height="50dp" + android:orientation="horizontal"> - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message_channel.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message_channel.xml new file mode 100644 index 0000000..4684214 --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_message_channel.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_private_msg2.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_private_msg2.xml new file mode 100644 index 0000000..0d290bb --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/fragment_private_msg2.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/layout/tab_rb.xml b/Code/LeudaemiaLikeMe/app/src/main/res/layout/tab_rb.xml new file mode 100644 index 0000000..964f02a --- /dev/null +++ b/Code/LeudaemiaLikeMe/app/src/main/res/layout/tab_rb.xml @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/Code/LeudaemiaLikeMe/app/src/main/res/mipmap-anydpi-v26/channel_down_narrow.png b/Code/LeudaemiaLikeMe/app/src/main/res/mipmap-anydpi-v26/channel_down_narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ce19fa5f1930894578996d3a77fdd9e0ce9952 GIT binary patch literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^xlUVr}C(sR=B$;TgW)ZkKdiJZ2+{LJ&>^Pd^6l>Tj)lzQ`N5#xp!J@M|N zuVuS7MXeQ4J-ul@bNk_kRePBVV#_s{7+KR>6P)Px$l1W5CR9Hvtm9a|0P!xv$8(MG?LC_Zv7Zt=wuyA`%I;yLqxClbAFW?eU#KA=b zLGTF#r%n#dNlGma4i4%dE`pQ3fTeA&1X_@gv&G97ziRF zCzw~S*XN{^&tdgK9q<#n-R>2D`J@n@=k1qDC99vu%xeIu04NMDvIRYe>7)Qb5oUhW zTECg5xfPx%_DMuRR9HvtmQ6@hQ547j=e@BID%xZ%idMC$XcJM9^3EGym;^yd*cbLm3D%+( z1yLGN)S@;9LG&Tm7iMiLOP!hXuqYxbq99rpK|!0KNWz(W;)=>Bla0>-Tg+X)ch5P$ z`@iR&a|jc>XoBOT2vAgDm;xfQ6TmhAivdh6aDx5-@CHB&GhZI`Jp>>k9snVtyQ z;Cq1qrW4UtV@xFxt!3uW`X2%a!|Kf*9P zuByjW^`P(j=b{j#QmF$(be4#Yc%FC4`bZ{|O?d&>%_33@;3j}ey}i8+)z#I%^8xAT z=$KquT6%sUp|>&f^+CHa0SrJaBccbY`aYdb*9SrHb~K3Y?(RjgSnL9TS(!{`du3(i zO26}+5LR# zfQYOCa09^0SS(goUS2-*8uC`4v$M0Tq@?5p5xD?rnfXaR!Lwe>N&vS2d`+j*yMrKj zop&WnBogyo*L?-Rl5b$ zh}o*z?l{gIRo!EZS(39C*mexyi>lgc)}^ZJMJxfXxGKzQ66;1N}cESyXw)YgZi0iwaD*0)GI}`JXVcTeEur0000#cdcdcd #66c18c #fff + #F1EEEE + \ No newline at end of file