|
@@ -1,8 +1,12 @@
|
|
|
package com.liaobo.im.ui.me.redpacket;
|
|
|
|
|
|
import android.content.Intent;
|
|
|
+import android.graphics.Color;
|
|
|
import android.os.Bundle;
|
|
|
import android.os.Parcelable;
|
|
|
+import android.support.design.widget.TabLayout;
|
|
|
+import android.support.v4.app.FragmentManager;
|
|
|
+import android.support.v4.app.FragmentPagerAdapter;
|
|
|
import android.support.v4.view.ViewPager;
|
|
|
import android.text.Editable;
|
|
|
import android.text.InputType;
|
|
@@ -18,7 +22,9 @@ import android.widget.Toast;
|
|
|
|
|
|
import com.liaobo.im.R;
|
|
|
import com.liaobo.im.db.InternationalizationHelper;
|
|
|
+import com.liaobo.im.fragment.MucSendPacketFragment;
|
|
|
import com.liaobo.im.ui.base.BaseActivity;
|
|
|
+import com.liaobo.im.ui.base.EasyFragment;
|
|
|
import com.liaobo.im.ui.message.ChatActivity;
|
|
|
import com.liaobo.im.ui.message.MucChatActivity;
|
|
|
import com.liaobo.im.ui.smarttab.SmartTabLayout;
|
|
@@ -35,26 +41,15 @@ import java.util.List;
|
|
|
/**
|
|
|
* Created by 魏正旺 on 2016/9/8.
|
|
|
*/
|
|
|
-public class MucSendRedPacketActivity extends BaseActivity implements View.OnClickListener {
|
|
|
- LayoutInflater inflater;
|
|
|
- private SmartTabLayout smartTabLayout;
|
|
|
- private ViewPager viewPager;
|
|
|
- private List<View> views;
|
|
|
- private List<String> mTitleList;
|
|
|
- private EditText edit_count_pt;
|
|
|
- private EditText edit_money_pt;
|
|
|
- private EditText edit_words_pt;
|
|
|
+public class MucSendRedPacketActivity extends BaseActivity {
|
|
|
|
|
|
- private EditText edit_count_psq;
|
|
|
- private EditText edit_money_psq;
|
|
|
- private EditText edit_words_psq;
|
|
|
+ private TabLayout mTabRedPacket;
|
|
|
+ private ViewPager viewPager;
|
|
|
+ private String roomId;
|
|
|
|
|
|
-// private EditText edit_count_kl;
|
|
|
-// private EditText edit_money_kl;
|
|
|
-// private EditText edit_words_kl;
|
|
|
|
|
|
- private TextView hbgs, ge, zje, yuan, xhb;
|
|
|
- private Button sq;
|
|
|
+ private List<EasyFragment> mFragmentList;
|
|
|
+ private TabFragmentPagerAdapter mPagerAdapter;
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -62,7 +57,7 @@ public class MucSendRedPacketActivity extends BaseActivity implements View.OnCli
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
setContentView(R.layout.activity_muc_redpacket);
|
|
|
- inflater = LayoutInflater.from(this);
|
|
|
+ roomId = getIntent().getStringExtra("roomId");
|
|
|
initView();
|
|
|
|
|
|
checkHasPayPassword();
|
|
@@ -80,296 +75,84 @@ public class MucSendRedPacketActivity extends BaseActivity implements View.OnCli
|
|
|
|
|
|
private void initView() {
|
|
|
getSupportActionBar().hide();
|
|
|
- findViewById(R.id.tv_title_left).setOnClickListener(new View.OnClickListener() {
|
|
|
- @Override
|
|
|
- public void onClick(View v) {
|
|
|
- finish();
|
|
|
- }
|
|
|
- });
|
|
|
+ findViewById(R.id.iv_title_left).setOnClickListener(view -> finish());
|
|
|
TextView tvTitle = (TextView) findViewById(R.id.tv_title_center);
|
|
|
tvTitle.setText(InternationalizationHelper.getString("JX_SendGift"));
|
|
|
+ mFragmentList = new ArrayList<>();
|
|
|
+ mTabRedPacket = findViewById(R.id.tab_red_packet);
|
|
|
+ viewPager = findViewById(R.id.muc_viewpager);
|
|
|
+ initTabLayout();
|
|
|
|
|
|
- smartTabLayout = (SmartTabLayout) findViewById(R.id.muc_smarttablayout_redpacket);
|
|
|
- viewPager = (ViewPager) findViewById(R.id.muc_viewpagert_redpacket);
|
|
|
- views = new ArrayList<View>();
|
|
|
- mTitleList = new ArrayList<String>();
|
|
|
- mTitleList.add(InternationalizationHelper.getString("JX_LuckGift"));
|
|
|
- mTitleList.add(InternationalizationHelper.getString("JX_UsualGift"));
|
|
|
-// mTitleList.add(InternationalizationHelper.getString("JX_MesGift"));
|
|
|
-
|
|
|
- views.add(inflater.inflate(R.layout.muc_redpacket_pager_pt, null));
|
|
|
- views.add(inflater.inflate(R.layout.muc_redpacket_pager_sq, null));
|
|
|
-// views.add(inflater.inflate(R.layout.muc_redpacket_pager_kl, null));
|
|
|
-
|
|
|
- View temp_view = views.get(0);
|
|
|
- edit_count_pt = (EditText) temp_view.findViewById(R.id.edit_redcount);
|
|
|
- edit_count_pt.addTextChangedListener(new RemoveZeroTextWatcher(edit_count_pt));
|
|
|
- edit_money_pt = (EditText) temp_view.findViewById(R.id.edit_money);
|
|
|
- edit_words_pt = (EditText) temp_view.findViewById(R.id.edit_blessing);
|
|
|
- hbgs = (TextView) temp_view.findViewById(R.id.hbgs);
|
|
|
- ge = (TextView) temp_view.findViewById(R.id.ge);
|
|
|
- zje = (TextView) temp_view.findViewById(R.id.zje);
|
|
|
- yuan = (TextView) temp_view.findViewById(R.id.yuan);
|
|
|
- xhb = (TextView) temp_view.findViewById(R.id.textviewtishi);
|
|
|
- sq = (Button) temp_view.findViewById(R.id.btn_sendRed);
|
|
|
- hbgs.setText(InternationalizationHelper.getString("NUMBER_OF_ENVELOPES"));
|
|
|
- ge.setText(InternationalizationHelper.getString("INDIVIDUAL"));
|
|
|
- zje.setText(InternationalizationHelper.getString("TOTAL_AMOUNT"));
|
|
|
- edit_money_pt.setHint(InternationalizationHelper.getString("INPUT_AMOUNT"));
|
|
|
- yuan.setText(InternationalizationHelper.getString("YUAN"));
|
|
|
- xhb.setText(InternationalizationHelper.getString("SAME_AMOUNT"));
|
|
|
- edit_words_pt.setHint(InternationalizationHelper.getString("JX_GiftText"));
|
|
|
- sq.setOnClickListener(this);
|
|
|
-
|
|
|
- temp_view = views.get(1);
|
|
|
- edit_count_psq = (EditText) temp_view.findViewById(R.id.edit_redcount);
|
|
|
- edit_count_psq.addTextChangedListener(new RemoveZeroTextWatcher(edit_count_psq));
|
|
|
- edit_money_psq = (EditText) temp_view.findViewById(R.id.edit_money);
|
|
|
- edit_words_psq = (EditText) temp_view.findViewById(R.id.edit_blessing);
|
|
|
- hbgs = (TextView) temp_view.findViewById(R.id.hbgs);
|
|
|
- ge = (TextView) temp_view.findViewById(R.id.ge);
|
|
|
- zje = (TextView) temp_view.findViewById(R.id.zje);
|
|
|
- yuan = (TextView) temp_view.findViewById(R.id.yuan);
|
|
|
- xhb = (TextView) temp_view.findViewById(R.id.textviewtishi);
|
|
|
- sq = (Button) temp_view.findViewById(R.id.btn_sendRed);
|
|
|
- hbgs.setText(InternationalizationHelper.getString("NUMBER_OF_ENVELOPES"));
|
|
|
- ge.setText(InternationalizationHelper.getString("INDIVIDUAL"));
|
|
|
- zje.setText(InternationalizationHelper.getString("TOTAL_AMOUNT"));
|
|
|
- edit_money_psq.setHint(InternationalizationHelper.getString("INPUT_AMOUNT"));
|
|
|
- yuan.setText(InternationalizationHelper.getString("YUAN"));
|
|
|
- xhb.setText(InternationalizationHelper.getString("RONDOM_AMOUNT"));
|
|
|
- edit_words_psq.setHint(InternationalizationHelper.getString("JX_GiftText"));
|
|
|
- sq.setOnClickListener(this);
|
|
|
-
|
|
|
-// temp_view = views.get(2);
|
|
|
-// edit_count_kl = (EditText) temp_view.findViewById(R.id.edit_redcount);
|
|
|
-// edit_count_kl.addTextChangedListener(new RemoveZeroTextWatcher(edit_count_kl));
|
|
|
-// edit_money_kl = (EditText) temp_view.findViewById(R.id.edit_money);
|
|
|
-// edit_words_kl = (EditText) temp_view.findViewById(R.id.edit_password);
|
|
|
-// EditText edit_compatible = (EditText) temp_view.findViewById(R.id.edit_compatible);
|
|
|
-// edit_compatible.requestFocus();
|
|
|
-
|
|
|
-// hbgs = (TextView) temp_view.findViewById(R.id.hbgs);
|
|
|
-// ge = (TextView) temp_view.findViewById(R.id.ge);
|
|
|
-// zje = (TextView) temp_view.findViewById(R.id.zje);
|
|
|
-// yuan = (TextView) temp_view.findViewById(R.id.yuan);
|
|
|
-// xhb = (TextView) temp_view.findViewById(R.id.textviewtishi);
|
|
|
-// sq = (Button) temp_view.findViewById(R.id.btn_sendRed);
|
|
|
-// TextView kl = (TextView) temp_view.findViewById(R.id.kl);
|
|
|
-// kl.setText(InternationalizationHelper.getString("JX_Message"));
|
|
|
-// hbgs.setText(InternationalizationHelper.getString("NUMBER_OF_ENVELOPES"));
|
|
|
-// ge.setText(InternationalizationHelper.getString("INDIVIDUAL"));
|
|
|
-// zje.setText(InternationalizationHelper.getString("TOTAL_AMOUNT"));
|
|
|
-//// edit_money_kl.setHint(InternationalizationHelper.getString("INPUT_AMOUNT"));
|
|
|
-// yuan.setText(InternationalizationHelper.getString("YUAN"));
|
|
|
-// xhb.setText(InternationalizationHelper.getString("REPLY_GRAB"));
|
|
|
-//// edit_words_kl.setHint(InternationalizationHelper.getString("BIG_ENVELOPE"));
|
|
|
-// sq.setOnClickListener(this);
|
|
|
-
|
|
|
- InputChangeListener inputChangeListenerPt = new InputChangeListener(edit_money_pt);
|
|
|
- InputChangeListener inputChangeListenerPsq = new InputChangeListener(edit_money_psq);
|
|
|
-// InputChangeListener inputChangeListenerKl = new InputChangeListener(edit_money_kl);
|
|
|
-
|
|
|
- // 添加输入监听
|
|
|
- edit_money_pt.addTextChangedListener(inputChangeListenerPt);
|
|
|
- edit_money_psq.addTextChangedListener(inputChangeListenerPsq);
|
|
|
-// edit_money_kl.addTextChangedListener(inputChangeListenerKl);
|
|
|
- // 只允许输入小数点和数字
|
|
|
- edit_money_pt.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
|
|
- edit_money_psq.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
|
|
-// edit_money_kl.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
|
|
-
|
|
|
- viewPager.setAdapter(new PagerAdapter());
|
|
|
- smartTabLayout.setViewPager(viewPager);
|
|
|
-
|
|
|
- /**
|
|
|
- * 为了实现点击Tab栏切换的时候不出现动画
|
|
|
- * 为每个Tab重新设置点击事件
|
|
|
- */
|
|
|
- for (int i = 0; i < mTitleList.size(); i++) {
|
|
|
- View view = smartTabLayout.getTabAt(i);
|
|
|
- view.setTag(i + "");
|
|
|
- view.setOnClickListener(this);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void onClick(View v) {
|
|
|
- if (v.getId() == R.id.btn_sendRed) {
|
|
|
- final int item = viewPager.getCurrentItem();
|
|
|
- final Bundle bundle = new Bundle();
|
|
|
- final Intent intent = new Intent(this, MucChatActivity.class);
|
|
|
- String money = null, words = null, count = null;
|
|
|
- int resultCode = 0;
|
|
|
- switch (item) {
|
|
|
- case 0: {
|
|
|
- money = edit_money_pt.getText().toString();
|
|
|
- words = StringUtils.isNullOrEmpty(edit_words_pt.getText().toString()) ?
|
|
|
- edit_words_pt.getHint().toString() : edit_words_pt.getText().toString();
|
|
|
- count = edit_count_pt.getText().toString();
|
|
|
- // 拼手气与普通红包位置对调 修改resultCode
|
|
|
- resultCode = ChatActivity.REQUEST_CODE_SEND_RED_PSQ;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 1: {
|
|
|
- money = edit_money_psq.getText().toString();
|
|
|
- words = StringUtils.isNullOrEmpty(edit_words_psq.getText().toString()) ?
|
|
|
- edit_words_psq.getHint().toString() : edit_words_psq.getText().toString();
|
|
|
- count = edit_count_psq.getText().toString();
|
|
|
- resultCode = ChatActivity.REQUEST_CODE_SEND_RED_PT;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 2: {
|
|
|
-// money = edit_money_kl.getText().toString();
|
|
|
-// words = StringUtils.isNullOrEmpty(edit_words_kl.getText().toString()) ?
|
|
|
-// edit_words_kl.getHint().toString() : edit_words_kl.getText().toString();
|
|
|
-// count = edit_count_kl.getText().toString();
|
|
|
-// resultCode = ChatActivity.REQUEST_CODE_SEND_RED_KL;
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
+ private void initFragment(){
|
|
|
+ MucSendPacketFragment luckFragment = new MucSendPacketFragment();
|
|
|
+ luckFragment.setRedPacketType(2);
|
|
|
+ luckFragment.setRoomId(roomId);
|
|
|
+ mFragmentList.add(luckFragment);
|
|
|
+ MucSendPacketFragment normalFragment = new MucSendPacketFragment();
|
|
|
+ normalFragment.setRedPacketType(1);
|
|
|
+ normalFragment.setRoomId(roomId);
|
|
|
+ mFragmentList.add(normalFragment);
|
|
|
+ mPagerAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager(),mFragmentList);
|
|
|
+ viewPager.setAdapter(mPagerAdapter);
|
|
|
+ viewPager.setOffscreenPageLimit(mFragmentList.size());
|
|
|
|
|
|
- if (!TextUtils.isEmpty(count) && Integer.parseInt(count) == 0) {
|
|
|
- Toast.makeText(this, R.string.tip_red_packet_too_slow, Toast.LENGTH_SHORT).show();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // 当金额过小,红包个数过多的情况下会出现不够分的情况
|
|
|
- if (!TextUtils.isEmpty(count) && Integer.parseInt(count) > 100) {
|
|
|
- Toast.makeText(this, R.string.tip_red_packet_too_much, Toast.LENGTH_SHORT).show();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (!TextUtils.isEmpty(money) &&
|
|
|
- !TextUtils.isEmpty(count) &&
|
|
|
- Double.parseDouble(money) / Integer.parseInt(count) < 0.01) {
|
|
|
- Toast.makeText(this, R.string.tip_money_too_less, Toast.LENGTH_SHORT).show();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (eqData(money, count, words)) {
|
|
|
- PayPasswordVerifyDialog dialog = new PayPasswordVerifyDialog(this);
|
|
|
- dialog.setAction(getString(R.string.chat_redpacket));
|
|
|
- dialog.setMoney(money);
|
|
|
- final String finalMoney = money;
|
|
|
- final String finalWords = words;
|
|
|
- final String finalCount = count;
|
|
|
- dialog.setOnInputFinishListener(new PayPasswordVerifyDialog.OnInputFinishListener() {
|
|
|
- @Override
|
|
|
- public void onInputFinish(final String password) {
|
|
|
- // 回传信息
|
|
|
- bundle.putString("money", finalMoney);
|
|
|
- bundle.putString("count", finalCount);
|
|
|
- bundle.putString("words", finalWords);
|
|
|
- // 拼手气与普通红包位置对调,修改type
|
|
|
- // bundle.putString("type", (item + 1) + "");
|
|
|
- if (item == 0) {
|
|
|
- bundle.putString("type", 2 + "");
|
|
|
- } else if (item == 1) {
|
|
|
- bundle.putString("type", 1 + "");
|
|
|
- } else {
|
|
|
- bundle.putString("type", (item + 1) + "");
|
|
|
- }
|
|
|
- bundle.putString("payPassword", password);
|
|
|
- intent.putExtras(bundle);
|
|
|
- setResult(item == 0 ? ChatActivity.REQUEST_CODE_SEND_RED_PSQ : ChatActivity.REQUEST_CODE_SEND_RED_KL, intent);
|
|
|
- finish();
|
|
|
- }
|
|
|
- });
|
|
|
- dialog.show();
|
|
|
- }
|
|
|
- } else {
|
|
|
- int index = Integer.parseInt(v.getTag().toString());
|
|
|
- viewPager.setCurrentItem(index, false);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
- private boolean eqData(String money, String count, String words) {
|
|
|
- if (StringUtils.isNullOrEmpty(money)) {
|
|
|
- ToastUtil.showToast(mContext, getString(R.string.need_input_money));
|
|
|
- return false;
|
|
|
- } else if (Double.parseDouble(money) > 1800 || Double.parseDouble(money) <= 0) {
|
|
|
- ToastUtil.showToast(mContext, getString(R.string.red_packet_range));
|
|
|
- return false;
|
|
|
- } else if (Double.parseDouble(money) > coreManager.getSelf().getBalance()) {
|
|
|
- ToastUtil.showToast(mContext, getString(R.string.balance_not_enough));
|
|
|
- return false;
|
|
|
- } else if (StringUtils.isNullOrEmpty(count)) {
|
|
|
- ToastUtil.showToast(mContext, getString(R.string.need_red_packet_count));
|
|
|
- return false;
|
|
|
- } else if (StringUtils.isNullOrEmpty(words)) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
+ private void initTabLayout(){
|
|
|
+ initFragment();
|
|
|
|
|
|
- private static class RemoveZeroTextWatcher implements TextWatcher {
|
|
|
- private EditText editText;
|
|
|
+ mTabRedPacket.setupWithViewPager(viewPager);
|
|
|
+ mTabRedPacket.removeAllTabs();
|
|
|
|
|
|
- RemoveZeroTextWatcher(EditText editText) {
|
|
|
- this.editText = editText;
|
|
|
- }
|
|
|
+ mTabRedPacket.addTab( mTabRedPacket.newTab().setText(InternationalizationHelper.getString("JX_LuckGift")));//手气红包
|
|
|
+ mTabRedPacket.addTab( mTabRedPacket.newTab().setText(InternationalizationHelper.getString("JX_UsualGift")));//普通红包
|
|
|
+ mTabRedPacket.setTabIndicatorFullWidth(false);
|
|
|
+ mTabRedPacket.setInlineLabel(true);
|
|
|
+ mTabRedPacket.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
|
|
|
+ @Override
|
|
|
+ public void onTabSelected(TabLayout.Tab tab) {
|
|
|
|
|
|
- @Override
|
|
|
- public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public void onTabUnselected(TabLayout.Tab tab) {
|
|
|
|
|
|
- @Override
|
|
|
- public void afterTextChanged(Editable editable) {
|
|
|
- // 删除开头的0,
|
|
|
- int end = 0;
|
|
|
- for (int i = 0; i < editable.length(); i++) {
|
|
|
- char ch = editable.charAt(i);
|
|
|
- if (ch == '0') {
|
|
|
- end = i + 1;
|
|
|
- } else {
|
|
|
- break;
|
|
|
- }
|
|
|
}
|
|
|
- if (end > 0) {
|
|
|
- editable.delete(0, end);
|
|
|
- editText.setText(editable);
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onTabReselected(TabLayout.Tab tab) {
|
|
|
+
|
|
|
}
|
|
|
- }
|
|
|
+ });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- private class PagerAdapter extends android.support.v4.view.PagerAdapter {
|
|
|
|
|
|
- @Override
|
|
|
- public int getCount() {
|
|
|
- return views.size();
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public boolean isViewFromObject(View view, Object object) {
|
|
|
- return view == object;
|
|
|
- }
|
|
|
+ private class TabFragmentPagerAdapter extends FragmentPagerAdapter {
|
|
|
|
|
|
- @Override
|
|
|
- public void destroyItem(View container, int position, Object object) {
|
|
|
- ((ViewPager) container).removeView(views.get(position));
|
|
|
+ private List<EasyFragment> mFragmentList;
|
|
|
+ public TabFragmentPagerAdapter(FragmentManager fm, List<EasyFragment> list) {
|
|
|
+ super(fm);
|
|
|
+ this.mFragmentList = list;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Object instantiateItem(View container, int position) {
|
|
|
- ((ViewGroup) container).addView(views.get(position));
|
|
|
- return views.get(position);
|
|
|
+ public void setPrimaryItem(ViewGroup container, int position, Object object) {
|
|
|
+ super.setPrimaryItem(container, position, object);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Parcelable saveState() {
|
|
|
- return null;
|
|
|
+ public EasyFragment getItem(int position) {
|
|
|
+ return mFragmentList.get(position);//显示第几个页面
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public CharSequence getPageTitle(int position) {
|
|
|
- return mTitleList.get(position);
|
|
|
+ public int getCount() {
|
|
|
+ return mFragmentList.size();//有几个页面
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|