diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fbd856f9da..2e0e19c684 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -237,6 +237,10 @@ android:name = "com.gh.gamecenter.AskSelectGameActivity" android:screenOrientation = "portrait" /> + + extends BaseFragment implements mListViewModel = ViewModelProviders.of(this, factory).get(ListViewModel.class); mListViewModel.getObsListData().observe(this, this); mListViewModel.load(LoadType.nomarl); + + mListRv.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); } @Override @@ -69,7 +71,6 @@ public abstract class ListFragment extends BaseFragment implements mLayoutManager = new LinearLayoutManager(getContext()); mListRv.setLayoutManager(mLayoutManager); mListRv.setAdapter(provideListAdapter()); - mListRv.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); mListRv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/AnswerEditFragment.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/AnswerEditFragment.java new file mode 100644 index 0000000000..9166978aad --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/AnswerEditFragment.java @@ -0,0 +1,152 @@ +package com.gh.gamecenter.questionsdetail; + +import android.content.Intent; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Bundle; +import android.provider.MediaStore; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.text.Editable; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.style.ImageSpan; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import com.gh.base.fragment.BaseFragment; +import com.gh.gamecenter.R; +import com.lightgame.utils.Utils; + +import java.io.FileOutputStream; + +import butterknife.BindView; +import butterknife.OnClick; + +import static com.gh.gamecenter.SelectUserIconActivity.MEDIA_ICON_REQUEST; + +/** + * Created by khy on 7/12/17. + */ + +public class AnswerEditFragment extends BaseFragment { + @BindView(R.id.answer_edit_title) + TextView mTitle; + @BindView(R.id.answer_edit_content) + EditText mEditContent; + @BindView(R.id.answer_edit_img_icon) + ImageView mImgIcon; + + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (data != null && requestCode == MEDIA_ICON_REQUEST) { + Uri selectedImage = data.getData(); + if (selectedImage == null || getActivity() == null) { + return; + } + String[] filePathColumn = {MediaStore.Images.Media.DATA}; + + Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null); + if (cursor == null) { + return; + } + cursor.moveToFirst(); + + int columnIndex = cursor.getColumnIndex(filePathColumn[0]); + String picturePath = cursor.getString(columnIndex); + cursor.close(); + + Bitmap bitmap = compressPicture(picturePath); + + insertPicToEt(bitmap); // todo 插入图片前应该向服务器提交图片 + + Utils.log("picturePath = " + picturePath); + } + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_answer_edit; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + } + + /** + * 压缩图片 + * 规则: + * 1.如果图片大于当前EditText的最大宽度则按比例缩放,使图片宽度和EditText的宽度保持一致 (高度不处理) + * 2.如果图片小于当前EditText 由于比例限制 将不处理 + * @param srcPath 图片路径 + * @return + */ + public Bitmap compressPicture(String srcPath) { + + FileOutputStream fos = null; + BitmapFactory.Options op = new BitmapFactory.Options(); + + // 开始读入图片,此时把options.inJustDecodeBounds 设回true了 + op.inJustDecodeBounds = true; + Bitmap bitmap = BitmapFactory.decodeFile(srcPath, op); + op.inJustDecodeBounds = false; + + // 缩放图片的尺寸 + float w = op.outWidth; + float h = op.outHeight; + float index = w/h; + int width = mEditContent.getWidth(); + float hh = width/index; + float ww = width; + + float be = 1.0f; + if (w > h && w > ww) { + be = (float) (w / ww); + } else if (w < h && h > hh) { + be = (float) (h / hh); + } + if (be <= 0) { + be = 1.0f; + } + op.inSampleSize = (int) be;// 设置缩放比例,这个数字越大,图片大小越小. + // 重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了 + bitmap = BitmapFactory.decodeFile(srcPath, op); + int desWidth = (int) (w / be); + int desHeight = (int) (h / be); + return Bitmap.createScaledBitmap(bitmap, desWidth, desHeight, true); + + } + + @OnClick(R.id.answer_edit_img_icon) + public void onClick(View view) { + if (view.getId() == R.id.answer_edit_img_icon) { + Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(intent, MEDIA_ICON_REQUEST); + } + } + + private void insertPicToEt(Bitmap bitmap) { + if (bitmap == null) return; + ImageSpan imageSpan = new ImageSpan(getContext(), bitmap); + int index = mEditContent.getSelectionStart(); + String tempUrl = ""; + SpannableString spannableString = new SpannableString(tempUrl); + spannableString.setSpan(imageSpan, 0, tempUrl.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + Editable editableText = mEditContent.getEditableText(); + if (index < 0 || index >= editableText.length()) { + editableText.append(spannableString); + } else { + editableText.insert(index, spannableString); + } + + Utils.log("insertPicToEt = "); + + } +} diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailAdapter.java new file mode 100644 index 0000000000..d82d4cfb22 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailAdapter.java @@ -0,0 +1,102 @@ +package com.gh.gamecenter.questionsdetail; + +import android.content.Context; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.gh.base.OnListClickListener; +import com.gh.common.constant.ItemViewType; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder; +import com.gh.gamecenter.ask.AskItemViewHolder; +import com.lightgame.adapter.BaseRecyclerAdapter; + +/** + * Created by khy on 7/12/17. + */ + +public class QuestionsDetailAdapter extends BaseRecyclerAdapter { + + private OnListClickListener mListClickListener; + + public QuestionsDetailAdapter(Context context, OnListClickListener listClickListener) { + super(context); + mListClickListener = listClickListener; + } + + @Override + public int getItemViewType(int position) { + if (position == 0) { + return ItemViewType.ITEM_TOP; + } else if (position == getItemCount() - 1) { + return ItemViewType.ITEM_FOOTER; + } else { + return ItemViewType.ITEM_BODY; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view; + switch (viewType) { + case ItemViewType.ITEM_TOP: + view = mLayoutInflater.inflate(R.layout.questionsdetail_item, parent, false); + return new QuestionsDetailItemViewHolder(view, null, mListClickListener); + case ItemViewType.ITEM_FOOTER: + view = mLayoutInflater.inflate(R.layout.questionsdetail_footer_item, parent, false); + return new ReuseViewHolder(view); + case ItemViewType.ITEM_BODY: + view = mLayoutInflater.inflate(R.layout.ask_hot_item, parent, false); + return new AskItemViewHolder(view, null, mListClickListener); + default: + return null; + } + + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + switch (getItemViewType(position)) { + case ItemViewType.ITEM_TOP: + initQuestionsDetailItemViewHolder((QuestionsDetailItemViewHolder) holder); + break; + case ItemViewType.ITEM_FOOTER: + break; + case ItemViewType.ITEM_BODY: + break; + } + } + + private void initQuestionsDetailItemViewHolder(QuestionsDetailItemViewHolder holder) { + + holder.mTagRv.setLayoutManager(new LinearLayoutManager(mContext, RecyclerView.HORIZONTAL, false)); + holder.mTagRv.setAdapter(new RecyclerView.Adapter() { + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = mLayoutInflater.inflate(R.layout.questionsdetail_tag_item, parent, false); + return new ReuseViewHolder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + View item = holder.itemView; + if (item instanceof TextView) { + TextView tag = (TextView) item; + } + } + + @Override + public int getItemCount() { + return 0; + } + }); + } + + @Override + public int getItemCount() { + return 0; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailFragment.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailFragment.java new file mode 100644 index 0000000000..9b1d24fbdd --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailFragment.java @@ -0,0 +1,54 @@ +package com.gh.gamecenter.questionsdetail; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.RelativeLayout; + +import com.gh.base.fragment.BaseFragment; +import com.gh.gamecenter.R; + +import butterknife.BindView; +import butterknife.OnClick; + +/** + * Created by khy on 7/12/17. + */ + +public class QuestionsDetailFragment extends BaseFragment { + + @BindView(R.id.questionsdetail_rv) + RecyclerView mRecyclerView; + @BindView(R.id.questionsdetail_answer) + RelativeLayout mAnswer; + @BindView(R.id.questionsdetail_invite) + RelativeLayout mInvite; + + QuestionsDetailAdapter mAdapter; + + @Override + protected int getLayoutId() { + return R.layout.fragment_questionsdetail; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + mAdapter = new QuestionsDetailAdapter(getContext(), this); + mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + mRecyclerView.setAdapter(mAdapter); + } + + @OnClick({R.id.questionsdetail_answer, R.id.questionsdetail_invite}) + public void onClick(View v) { + switch (v.getId()) { + case R.id.questionsdetail_answer: + break; + case R.id.questionsdetail_invite: + break; + } + } +} diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailItemViewHolder.java new file mode 100644 index 0000000000..b075425620 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailItemViewHolder.java @@ -0,0 +1,41 @@ +package com.gh.gamecenter.questionsdetail; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; +import com.gh.gamecenter.R; + +import butterknife.BindView; + +/** + * Created by khy on 7/12/17. + */ + +public class QuestionsDetailItemViewHolder extends BaseRecyclerViewHolder { + @BindView(R.id.questionsdetail_item_tagrv) + public RecyclerView mTagRv; + @BindView(R.id.questionsdetail_item_title) + public TextView mTitle; + @BindView(R.id.questionsdetail_item_des) + public TextView mDes; + @BindView(R.id.questionsdetail_item_pic1) + public SimpleDraweeView mPic1; + @BindView(R.id.questionsdetail_item_pic2) + public SimpleDraweeView mPic2; + @BindView(R.id.questionsdetail_item_pic3) + public SimpleDraweeView mPic3; + @BindView(R.id.questionsdetail_item_answercount) + public TextView mAnswercount; + @BindView(R.id.questionsdetail_item_concern) + public TextView mConcern; + + public QuestionsDetailItemViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + itemView.setOnClickListener(this); + mConcern.setOnClickListener(this); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteAdapter.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteAdapter.java new file mode 100644 index 0000000000..c0e5af4754 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteAdapter.java @@ -0,0 +1,85 @@ +package com.gh.gamecenter.questionsdetail; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.view.ViewGroup; + +import com.gh.base.OnListClickListener; +import com.gh.common.constant.ItemViewType; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.baselist.BaseListAdapter; +import com.gh.gamecenter.baselist.LoadStatus; + +import java.util.List; + +/** + * Created by khy on 7/12/17. + */ + +public class QuestionsInviteAdapter extends BaseListAdapter { + + private OnListClickListener mListClickListener; + + public QuestionsInviteAdapter(Context context, OnListClickListener listClickListener) { + super(context); + mListClickListener = listClickListener; + } + + @Override + protected void provideListData(List listData) { + + } + + @Override + protected void loadChange(LoadStatus status) { + + } + + @Override + public int getItemViewType(int position) { + if (position == 0) { + return ItemViewType.ITEM_TOP; + } else if (position == getItemCount() - 1) { + return ItemViewType.ITEM_FOOTER; + } else { + return ItemViewType.ITEM_BODY; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view; + switch (viewType) { + case ItemViewType.ITEM_TOP: + view = mLayoutInflater.inflate(R.layout.questionsinvite_top_item, parent, false); + return new QuestionsInviteTopItemViewHolder(view, null, mListClickListener); + case ItemViewType.ITEM_FOOTER: + view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view, null, mListClickListener); + case ItemViewType.ITEM_BODY: + view = mLayoutInflater.inflate(R.layout.questionsinvite_item, parent, false); + return new QuestionsInviteItemViewHolder(view, null, mListClickListener); + default: + return null; + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + switch (getItemViewType(position)) { + case ItemViewType.ITEM_TOP: + break; + case ItemViewType.ITEM_FOOTER: + break; + case ItemViewType.ITEM_BODY: + break; + } + } + + @Override + public int getItemCount() { + return 0; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteFragment.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteFragment.java new file mode 100644 index 0000000000..a61ea91a5e --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteFragment.java @@ -0,0 +1,28 @@ +package com.gh.gamecenter.questionsdetail; + +import com.gh.gamecenter.baselist.BaseListAdapter; +import com.gh.gamecenter.baselist.ListFragment; +import com.gh.gamecenter.entity.NewsEntity; + +import java.util.List; + +import rx.Observable; + +/** + * Created by khy on 7/12/17. + */ + +public class QuestionsInviteFragment extends ListFragment { + + private QuestionsInviteAdapter mAdapter; + + @Override + public Observable> provideDataObservable() { + return null; + } + + @Override + protected BaseListAdapter provideListAdapter() { + return mAdapter == null ? mAdapter = new QuestionsInviteAdapter(getContext(), this) : mAdapter; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteItemViewHolder.java new file mode 100644 index 0000000000..d455088c49 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteItemViewHolder.java @@ -0,0 +1,32 @@ +package com.gh.gamecenter.questionsdetail; + +import android.view.View; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; +import com.gh.gamecenter.R; + +import butterknife.BindView; + +/** + * Created by khy on 7/12/17. + */ + +public class QuestionsInviteItemViewHolder extends BaseRecyclerViewHolder { + @BindView(R.id.questionsinvite_item_icon) + public SimpleDraweeView mIcon; + @BindView(R.id.questionsinvite_item_name) + public TextView mName; + @BindView(R.id.questionsinvite_item_answercount) + public TextView mAnswercount; + @BindView(R.id.questionsinvite_item_votecount) + public TextView mVotecount; + @BindView(R.id.questionsinvite_item_invite) + public TextView mInvite; + + public QuestionsInviteItemViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteTopItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteTopItemViewHolder.java new file mode 100644 index 0000000000..7b044932de --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteTopItemViewHolder.java @@ -0,0 +1,23 @@ +package com.gh.gamecenter.questionsdetail; + +import android.view.View; +import android.widget.TextView; + +import com.gh.base.BaseRecyclerViewHolder; +import com.gh.base.OnListClickListener; +import com.gh.gamecenter.R; + +import butterknife.BindView; + +/** + * Created by khy on 7/12/17. + */ + +public class QuestionsInviteTopItemViewHolder extends BaseRecyclerViewHolder { + @BindView(R.id.questionsinvite_top_item_invite) + public TextView mInvite; + + public QuestionsInviteTopItemViewHolder(View itemView, Object data, OnListClickListener listClickListener) { + super(itemView, data, listClickListener); + } +} diff --git a/app/src/main/res/drawable-xxhdpi/answer_edit_img_icon.png b/app/src/main/res/drawable-xxhdpi/answer_edit_img_icon.png new file mode 100644 index 0000000000..7306cdba6a Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/answer_edit_img_icon.png differ diff --git a/app/src/main/res/drawable-xxhdpi/answer_edit_questions_icon.png b/app/src/main/res/drawable-xxhdpi/answer_edit_questions_icon.png new file mode 100644 index 0000000000..8ec13e435a Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/answer_edit_questions_icon.png differ diff --git a/app/src/main/res/drawable-xxhdpi/questionsdetail_answer_icon.png b/app/src/main/res/drawable-xxhdpi/questionsdetail_answer_icon.png new file mode 100644 index 0000000000..8360e49443 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/questionsdetail_answer_icon.png differ diff --git a/app/src/main/res/drawable-xxhdpi/questionsdetail_footer_icon.png b/app/src/main/res/drawable-xxhdpi/questionsdetail_footer_icon.png new file mode 100644 index 0000000000..e1c66df667 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/questionsdetail_footer_icon.png differ diff --git a/app/src/main/res/drawable-xxhdpi/questionsdetail_invite_icon.png b/app/src/main/res/drawable-xxhdpi/questionsdetail_invite_icon.png new file mode 100644 index 0000000000..d43764de18 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/questionsdetail_invite_icon.png differ diff --git a/app/src/main/res/layout/activity_ask_questionsdetail.xml b/app/src/main/res/layout/activity_ask_questionsdetail.xml new file mode 100644 index 0000000000..aac4ab2bb4 --- /dev/null +++ b/app/src/main/res/layout/activity_ask_questionsdetail.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_answer_edit.xml b/app/src/main/res/layout/fragment_answer_edit.xml new file mode 100644 index 0000000000..20bd2de07a --- /dev/null +++ b/app/src/main/res/layout/fragment_answer_edit.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_questionsdetail.xml b/app/src/main/res/layout/fragment_questionsdetail.xml new file mode 100644 index 0000000000..c6a156ff31 --- /dev/null +++ b/app/src/main/res/layout/fragment_questionsdetail.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/questionsdetail_footer_item.xml b/app/src/main/res/layout/questionsdetail_footer_item.xml new file mode 100644 index 0000000000..d7018568a2 --- /dev/null +++ b/app/src/main/res/layout/questionsdetail_footer_item.xml @@ -0,0 +1,10 @@ + + diff --git a/app/src/main/res/layout/questionsdetail_item.xml b/app/src/main/res/layout/questionsdetail_item.xml new file mode 100644 index 0000000000..5d87351735 --- /dev/null +++ b/app/src/main/res/layout/questionsdetail_item.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/questionsdetail_tag_item.xml b/app/src/main/res/layout/questionsdetail_tag_item.xml new file mode 100644 index 0000000000..e6f5426fae --- /dev/null +++ b/app/src/main/res/layout/questionsdetail_tag_item.xml @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/questionsinvite_item.xml b/app/src/main/res/layout/questionsinvite_item.xml new file mode 100644 index 0000000000..47ddac1baa --- /dev/null +++ b/app/src/main/res/layout/questionsinvite_item.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/questionsinvite_top_item.xml b/app/src/main/res/layout/questionsinvite_top_item.xml new file mode 100644 index 0000000000..26b71f05ab --- /dev/null +++ b/app/src/main/res/layout/questionsinvite_top_item.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 138b9b556d..9162b4963b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -441,5 +441,6 @@ 长按图片调整排序 恢复默认顺序 选择游戏 + 邀请