1.activity
public class MainActiviry extends Activity { @BindView(R.id.tv_jine) TextView tvJine; @BindView(R.id.tv_chongzhi) TextView tvChongzhi; @BindView(R.id.tv_fasong) TextView tvFasong; @BindView(R.id.vp_viewpager) ViewPager vpViewpager; @BindView(R.id.points) LinearLayout points; private float mLeftVolume; private float mRightVolume; private Context mContext; private MediaPlayer mBackgroundMediaPlayer; private boolean mIsPaused; private String mCurrentPath; private String token; private static final String TAG = "ChongzhiActivity"; private static final int SDK_PAY_FLAG = 1; public static int item_grid_num = 4;//每一页中GridView中item的数量 public static int number_columns = 4;//gridview一行展示的数目 private MyViewPagerAdapter mAdapter; private List<DataBean1.DataBean> dataList = new ArrayList<DataBean1.DataBean>(); private List<GridView> gridList = new ArrayList<>(); private IWXAPI api; private String liwuid, liwuname, liwupic, zhuboid, jine, uuid; private int dianji; private MediaPlayer mediaPlayer; private String svgaliwu; private int mPageSize = 4; //每页显示的最大的数量 private int totalPage; //总的页数 private List<View> viewPagerList; private ArrayList<String> keylist = new ArrayList<String>(); private ArrayList<String> viuelist = new ArrayList<String>(); private String nicheng, touxiang; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置为true点击区域外消失 setFinishOnTouchOutside(true); setContentView(R.layout.liwu_dialog); WindowManager m = getWindowManager(); Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高 WindowManager.LayoutParams p = getWindow().getAttributes(); // p.height = (int) (d.getHeight() * 0.6); // 高度设置为屏幕的0.3 // p.width = (int) (d.getWidth() * 1); // 宽度设置为屏幕的0.7 // WindowManager.LayoutParams p = getWindow().getAttributes(); WindowManager.LayoutParams dialogParams = LiwuDlalogActivity.this.getWindow().getAttributes(); dialogParams.width = WindowManager.LayoutParams.MATCH_PARENT; dialogParams.height = WindowManager.LayoutParams.WRAP_CONTENT; //设置底部显示 dialogParams.gravity = Gravity.BOTTOM; LiwuDlalogActivity.this.getWindow().setAttributes(dialogParams); getWindow().setAttributes(p); ButterKnife.bind(this); getWindow().setWindowAnimations(R.style.mystyle);//动画 p.gravity = Gravity.BOTTOM;//设置对话框置顶显示 // iniver(); Intent intent = getIntent(); zhuboid = intent.getStringExtra("id"); if (token.length() > 8) { money(); } else { tvJine.setText("未登录"); } zhibo(); } @OnClick({R.id.tv_chongzhi, R.id.tv_fasong}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.tv_chongzhi: if (!Check.isFastClick()) { Toast.makeText(LiwuDlalogActivity.this,"请勿频繁点击",Toast.LENGTH_SHORT).show(); return; } //下面写点击事件逻辑 Intent intent = new Intent(LiwuDlalogActivity.this, CHongzhi.class); startActivity(intent); break; case R.id.tv_fasong: if (!Check.isFastClick()) { Toast.makeText(LiwuDlalogActivity.this,"请勿频繁点击",Toast.LENGTH_SHORT).show(); return; } //下面写点击事件逻辑 if (liwuid==""||liwuid==null){ Toast.makeText(LiwuDlalogActivity.this,"请选择礼物",Toast.LENGTH_SHORT).show(); }else { paygift(); } break; } } private void paygift() { SharedPreferences sPreferences = getSharedPreferences("Login", MODE_PRIVATE); token = sPreferences.getString("token", ""); HashMap<String, String> hash = new HashMap<>(); hash.put("giftId", giftId+ ""); hash.put("anchorId", anchorId+ ""); String str = new String(); str = new Gson().toJson(hash); OkGo.<String>post(HttpUtils.url + "/tel/pay/giveGift").upJson(str).headers("authorization", token).execute(new StringCallback() { @Override public void onSuccess(Response<String> response) { SongLiWuModel confirm = new SongLiWuModel(); confirm = new Gson().fromJson(response.body().toString(), SongLiWuModel.class); // zhinolist = confirm.getData(); if (confirm.getCode() == 1) { tvJine.setText(String.valueOf(confirm.getData().getBalance().setScale(2, RoundingMode.HALF_UP))); Intent intent = getIntent(); Bundle bundle = new Bundle(); bundle.putString("name", liwuname); bundle.putString("pic", liwupic); bundle.putString("xianshi", "1"); intent.putExtras(bundle); setResult(RESULT_OK, intent); EventBus.getDefault().post(new SanEvent(svgaliwu)); Log.e("dong", svgaliwu + ""); } else if (confirm.getCode() == 401) { SharedPreferences sPreferences = getSharedPreferences("Login", MODE_PRIVATE); SharedPreferences.Editor edit = sPreferences.edit(); edit.putString("userid", ""); edit.putString("token", ""); edit.putString("name", ""); edit.commit(); // finish(); ToastUtils.showToast("请重新登录"); startActivity(new Intent(MainActivity.this, LoginActivity.class)); } }); } private void getGiftList() { SharedPreferences sPreferences = getSharedPreferences("Login", MODE_PRIVATE); token = sPreferences.getString("token", ""); uuid = sPreferences.getString("uuid", ""); HashMap<String, String> hash = new HashMap<>(); OkGo.<String>get(HttpUtils.url + "/tel/sys/giftList" + "?offset=1" + "&limit=20" + "&uuid=" + uuid).headers("authorization", token).execute(new StringCallback() { @Override public void onSuccess(Response<String> response) { DataBean1 confirm = new DataBean1(); confirm = new Gson().fromJson(response.body().toString(), DataBean1.class); if (confirm.getCode() == 1) { if (response.body().contains("暂无数据")){ }else { dataList = confirm.getData(); totalPage = (int) Math.ceil(dataList.size() * 1.0 / mPageSize); viewPagerList = new ArrayList<View>(); for (int i = 0; i < totalPage; i++) { //每个页面都是inflate出一个新实例 final GridView gridView = (GridView) View.inflate(MainActivity.this, R.layout.item_viewpage, null); gridView.setAdapter(new MyGridViewAdpter(MainActivity.this, dataList, i, mPageSize)); //添加item点击监听 gridView.setBackgroundResource(R.color.pickerview_timebtn_nor); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub String ss = arg0.getAdapter().getItem(position).toString(); Log.w("ssss", ss); Object obj = gridView.getItemAtPosition(position); if (obj != null && obj instanceof DataBean1.DataBean) { System.out.println(((DataBean1.DataBean) obj).getGiftId()); // liwuid=dataList.get(position).getGiftId(); // Toast.makeText(LiwuDlalogActivity.this, ((DataBean1.DataBean) obj).getGiftId(), Toast.LENGTH_SHORT).show(); for (int i = 0; i < arg0.getCount(); i++) { View v = arg0.getChildAt(i); arg0.setBackgroundResource(R.color.pickerview_timebtn_nor); if (position == i) {//当前选中的Item改变背景颜色 v.setBackgroundResource(R.drawable.shape_hei1); } else { v.setBackgroundResource(R.drawable.shape_hei); } } Uri uri = Uri.parse(((DataBean1.DataBean) obj).getGiftVoice()); if (mediaPlayer!=null) { mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null; } if (mediaPlayer == null) { // R.raw.mmp是资源文件,MP3格式的 mediaPlayer = MediaPlayer.create(LiwuDlalogActivity.this, uri); mediaPlayer.start(); mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mediaPlayer.stop(); } }); } pic = ((DataBean1.DataBean) obj).getGiftPicUrl(); name = ((DataBean1.DataBean) obj).getGiftName(); id = ((DataBean1.DataBean) obj).getGiftId(); svga = ((DataBean1.DataBean) obj).getGiftSpecial(); } Log.w("liwuid", ((DataBean1.DataBean) obj).getGiftId()); Log.w("dong", ((DataBean1.DataBean) obj).getGiftSpecial() + ""); } }); //每一个GridView作为一个View对象添加到ViewPager集合中 viewPagerList.add(gridView); } //设置ViewPager适配器 vpViewpager.setAdapter(new MyViewPagerAdapter(viewPagerList)); } } else if (confirm.getCode() == 401) { SharedPreferences sPreferences = getSharedPreferences("Login", MODE_PRIVATE); SharedPreferences.Editor edit = sPreferences.edit(); edit.putString("userid", ""); edit.putString("token", ""); edit.putString("name", ""); edit.commit(); finish(); ToastUtils.showToast("请重新登录"); startActivity(new Intent(LiwuDlalogActivity.this, LoginActivity.class)); } } }); } private void money() { SharedPreferences sPreferences = getSharedPreferences("Login", MODE_PRIVATE); token = sPreferences.getString("token", ""); OkGo.<String>get(HttpUtils.url + "/tel/userInfo/myWallet").headers("authorization", token).execute(new StringCallback() { @Override public void onSuccess(Response<String> response) { NewQianBaoMdel confirm = new NewQianBaoMdel(); confirm = new Gson().fromJson(response.body().toString(), NewQianBaoMdel.class); if (confirm.getCode() == 1) { jine = String.valueOf(confirm.getData().getBalance().setScale(2, RoundingMode.HALF_UP)); tvJine.setText(jine + ""); } else if (confirm.getCode() == 401) { tvJine.setText("暂未登录"); } else { ToastUtils.showToast(confirm.getMsg()); } } }); } @Override protected void onRestart() { super.onRestart(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); finish(); } @Override protected void onStop() { super.onStop(); finish(); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (mediaPlayer!=null) { mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null; } }
2.adapter
public class MyViewPagerAdapter extends PagerAdapter { private List<View> viewList;//View就二十GridView public MyViewPagerAdapter(List<View> viewList) { this.viewList = viewList; } @Override public int getCount() { // TODO Auto-generated method stub return viewList!=null ? viewList.size() : 0; } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == arg1; } /** * 将当前的View添加到ViewGroup容器中 * 这个方法,return一个对象,这个对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPage上 */ @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub container.addView(viewList.get(position)); return viewList.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub container.removeView((View) object); } }
public class MyGridViewAdpter extends BaseAdapter { private String liwuid, liwuname, liwupic, zhuboid, jine; private int dianji; private int defItem; private Context context; private List<DataBean1.DataBean> lists; //数据源 private int mIndex; // 页数下标,标示第几页,从0开始 private int mPargerSize; // 每页显示的最大的数量 public MyGridViewAdpter(Context context, List < DataBean1.DataBean > lists, int mIndex, int mPargerSize) { this.context = context; this.lists = lists; this.mIndex = mIndex; this.mPargerSize = mPargerSize; } /** * 先判断数据及的大小是否显示满本页lists.size() > (mIndex + 1)*mPagerSize * 如果满足,则此页就显示最大数量lists的个数 * 如果不够显示每页的最大数量,那么剩下几个就显示几个 */ @Override public int getCount() { // TODO Auto-generated method stub return lists.size() > (mIndex + 1) * mPargerSize ? mPargerSize: (lists.size() - mIndex * mPargerSize); } @Override public DataBean1.DataBean getItem(int arg0) { // TODO Auto-generated method stub return lists.get(arg0 + mIndex * mPargerSize); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0 + mIndex * mPargerSize; } public void setDefSelect(int position) { this.defItem = position; notifyDataSetChanged(); } public View getView(int i, View itemView, ViewGroup viewGroup) { ViewHolder mHolder; if (itemView == null) { mHolder = new ViewHolder(); itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_liwu, viewGroup, false); mHolder.iv_img = (ImageView) itemView.findViewById(R.id.iv_liwu_list); mHolder.tv_text = (TextView) itemView.findViewById(R.id.tv_liwu_mingcheng_list); mHolder.money = (TextView) itemView.findViewById(R.id.tv_liwu_jine_list); mHolder.liwu = (LinearLayout) itemView.findViewById(R.id.ll_liwuid); itemView.setTag(mHolder); } else { mHolder = (ViewHolder) itemView.getTag(); } liwuname = lists.get(i).getGiftName(); liwupic = lists.get(i).getGiftPicUrl(); int pos=i+mIndex*mPargerSize; if (lists.get(i) != null) { Picasso .with(context) .load(lists.get(pos).getGiftPicUrl()) .into(mHolder.iv_img); mHolder.tv_text.setText(lists.get(pos).getGiftName()); // if (lists.get(pos).getGiftPrice() == 0) { // if (lists.get(pos).getFreeCountHaving() == 2) { // mHolder.money.setText("已送完"); // } else if (lists.get(pos).getFreeCountHaving() == 1) { // mHolder.money.setText("赠送1次"); // } else if (lists.get(pos).getFreeCountHaving() == 0) { // mHolder.money.setText("赠送2次"); // } // } else { // mHolder.money.setText(lists.get(pos).getGiftPrice() + "小熊币"); // } // Log.w("liwu", "1111"); } return itemView; } private class ViewHolder { private ImageView iv_img; private TextView tv_text; private TextView money; private LinearLayout liwu; } }
3..自定义控件
public class WrapContentHeightViewPager extends ViewPager { public WrapContentHeightViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // find the current child view // and you must cache all the child view // use setOffscreenPageLimit(adapter.getCount()) View view = getChildAt(getCurrentItem()); if (view != null) { // measure the current child view with the specified measure spec view.measure(widthMeasureSpec, heightMeasureSpec); } setMeasuredDimension(getMeasuredWidth(), measureHeight(heightMeasureSpec, view)); } /** * Determines the height of this view * * @param measureSpec A measureSpec packed into an int * @param view the base view with already measured height * * @return The height of the view, honoring constraints from measureSpec */ private int measureHeight(int measureSpec, View view) { int result = 0; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); if (specMode == MeasureSpec.EXACTLY) { result = specSize; } else { // set the height from the base view if available if (view != null) { result = view.getMeasuredHeight(); } if (specMode == MeasureSpec.AT_MOST) { result = Math.min(result, specSize); } } return result; } /** * 單獨測量view獲取尺寸 * * @param view */ public void measeureView(View view) { int intw = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int inth = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); // 重新測量view view.measure(intw, inth); // 以上3句可簡寫成下面一句 //view.measure(0,0); // 獲取測量後的view尺寸 int intwidth = view.getMeasuredWidth(); int intheight = view.getMeasuredHeight(); } }