星辰小队针对于软件“星遇”的第二次10天冲刺——第3天

日期:2019.5.30

博客期:089  

星期四

   今天终终终终终终终终终终终终终终终终终终终终终于找到了可以使用的能够调用的方法了,因为之前使用的Activity,Activity里面的传值方式有很大的不同,所以我按照之前的Activity类的继承关系重新谱写了它可以用的View类,当然这是为了和 ViewPager一起联合使用而制作的!

  嘿嘿,小发以下代码,你们对比一看就知道有什么幺蛾子了!

  Activity代码:

  

  1 package com.example.meetstars2;
  2 
  3 import android.content.Intent;
  4 import android.location.LocationManager;
  5 import android.os.Bundle;
  6 import android.os.Handler;
  7 import android.support.constraint.ConstraintLayout;
  8 import android.support.v4.view.PagerAdapter;
  9 import android.support.v4.view.ViewPager;
 10 import android.support.v7.app.AppCompatActivity;
 11 import android.util.SparseArray;
 12 import android.view.LayoutInflater;
 13 import android.view.View;
 14 import android.view.ViewGroup;
 15 import android.view.animation.AccelerateInterpolator;
 16 import android.widget.Button;
 17 import android.widget.ImageView;
 18 import android.widget.TextView;
 19 import android.widget.Toast;
 20 
 21 import com.example.meetstars2.basic.CustomViewPager;
 22 import com.example.meetstars2.basic.FixedSpeedScroller;
 23 import com.example.meetstars2.basic.Info;
 24 import com.example.meetstars2.basic.LogUtils;
 25 import com.example.meetstars2.basic.RadarViewGroup;
 26 import com.example.meetstars2.basic.ZoomOutPageTransformer;
 27 
 28 import java.lang.reflect.Field;
 29 
 30 public class RadarPageActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, RadarViewGroup.IRadarClickListener{
 31 
 32     private SparseArray<Info> mDatas = new SparseArray<>();
 33     private int[] mImgs = {R.drawable.len, R.drawable.leo, R.drawable.lep,
 34             R.drawable.leq, R.drawable.ler, R.drawable.les, R.drawable.mln, R.drawable.mmz, R.drawable.mna,
 35             R.drawable.mnj};
 36     private String[] mNames = {"孟婆汤", "在陋巷", "王司徒", "吉尼太梅", "无敌霹雳小旋风", "黄大锤", "神马浮云", "在你家白吃","露了馅的豆包","忍者的儿子"};
 37     private RadarViewGroup radarViewGroup;
 38     private FixedSpeedScroller scroller;
 39     private CustomViewPager viewPager;
 40     private ConstraintLayout constraintLayout;
 41     private int mPosition;
 42     private static final String TAG = "RadarPageActivity";
 43     private LocationManager locationManager;
 44     private String locationProvider;
 45     @Override
 46     protected void onCreate(Bundle savedInstanceState) {
 47         super.onCreate(savedInstanceState);
 48         setContentView(R.layout.activity_radar_page);
 49 
 50         initData();
 51         initView();
 52 
 53         ViewpagerAdapter mAdapter = new ViewpagerAdapter();
 54         viewPager.setAdapter(mAdapter);
 55         //设置缓存数为展示的数目
 56         viewPager.setOffscreenPageLimit(mImgs.length);
 57         viewPager.setPageMargin(getResources().getDimensionPixelOffset(R.dimen.viewpager_margin));
 58         //设置切换动画
 59         viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
 60         viewPager.addOnPageChangeListener(this);
 61         setViewPagerSpeed(250);
 62 
 63         new Handler().postDelayed(new Runnable() {
 64             @Override
 65             public void run() {
 66                 radarViewGroup.setDatas(mDatas);
 67             }
 68         }, 1500);
 69 
 70         radarViewGroup.setiRadarClickListener(this);
 71 
 72     }
 73 
 74     private void initData() {
 75         for (int i = 0; i < mImgs.length; i++) {
 76             Info info = new Info();
 77             info.setPortraitId(mImgs[i]);
 78             info.setAge(((int) Math.random() * 25 + 16) + "岁");
 79             info.setName(mNames[(int) (Math.random() * mNames.length)]);
 80             info.setSex(i % 3 == 0 ? false : true);
 81             info.setDistance(Math.round((Math.random() * 10) * 100) / 100);
 82             mDatas.put(i, info);
 83         }
 84     }
 85     private void initView() {
 86         viewPager = (CustomViewPager) findViewById(R.id.vp);
 87         radarViewGroup = (RadarViewGroup) findViewById(R.id.radar);
 88     }
 89 
 90     private void setViewPagerSpeed(int duration) {
 91         try {
 92             Field field = ViewPager.class.getDeclaredField("mScroller");
 93             field.setAccessible(true);
 94             scroller = new FixedSpeedScroller(RadarPageActivity.this, new AccelerateInterpolator());
 95             field.set(viewPager, scroller);
 96             scroller.setmDuration(duration);
 97         } catch (NoSuchFieldException e) {
 98             e.printStackTrace();
 99         } catch (IllegalAccessException e) {
100             e.printStackTrace();
101         }
102     }
103 
104     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
105         mPosition = position;
106     }
107 
108     public void onPageSelected(int position) {
109         radarViewGroup.setCurrentShowItem(position);
110         LogUtils.w("当前位置 " + mPosition);
111         LogUtils.w("速度 " + viewPager.getSpeed());
112         //当手指左滑速度大于2000时viewpager右滑(注意是item+2)
113         if (viewPager.getSpeed() < -1800) {
114 
115             viewPager.setCurrentItem(mPosition + 2);
116             LogUtils.w("位置 " + mPosition);
117             viewPager.setSpeed(0);
118         } else if (viewPager.getSpeed() > 1800 && mPosition > 0) {
119             //当手指右滑速度大于2000时viewpager左滑(注意item-1即可)
120             viewPager.setCurrentItem(mPosition - 1);
121             LogUtils.w("位置 " + mPosition);
122             viewPager.setSpeed(0);
123         }
124     }
125 
126     public void onPageScrollStateChanged(int state) {
127 
128     }
129 
130 
131     public void onRadarItemClick(int position) {
132 
133         viewPager.setCurrentItem(position);
134 
135     }
136 
137     class ViewpagerAdapter extends PagerAdapter {
138         @Override
139         public Object instantiateItem(ViewGroup container, final int position) {
140             final Info info = mDatas.get(position);
141             //设置一大堆演示用的数据,麻里麻烦~~
142             View view = LayoutInflater.from(RadarPageActivity.this).inflate(R.layout.viewpager_layout, null);
143             ImageView ivPortrait = (ImageView) view.findViewById(R.id.iv);
144             ImageView ivSex = (ImageView) view.findViewById(R.id.iv_sex);
145             TextView tvName = (TextView) view.findViewById(R.id.tv_name);
146             TextView tvDistance = (TextView) view.findViewById(R.id.tv_distance);
147             tvName.setText(info.getName());
148             tvDistance.setText(info.getDistance() + "km");
149             ivPortrait.setImageResource(info.getPortraitId());
150             if (info.getSex()) {
151                 ivSex.setImageResource(R.drawable.girl);
152             } else {
153                 ivSex.setImageResource(R.drawable.boy);
154             }
155             ivPortrait.setOnClickListener(new View.OnClickListener() {
156                 @Override
157                 public void onClick(View v) {
158                     Toast.makeText(RadarPageActivity.this, "这是 " + info.getName() + " >.<", Toast.LENGTH_SHORT).show();
159                 }
160             });
161             container.addView(view);
162 
163             Button button = (Button)view.findViewById(R.id.btn_calling);
164             Button button2 = (Button)view.findViewById(R.id.btn_referInformation);
165 
166             button.setOnClickListener(new View.OnClickListener() {
167                 @Override
168                 public void onClick(View arg0) {
169                     // 打开另一个activity,通过意图,意图作用是激活其他组件
170                     Intent intent = new Intent();
171                     intent.setClass(getApplicationContext(),TalkPageActivity.class);
172 
173                     //发送意图.将意图发送给android系统,系统根据意图来激活组件
174                     startActivity(intent);
175                 }
176             });
177 
178             button2.setOnClickListener(new View.OnClickListener() {
179                 @Override
180                 public void onClick(View arg0) {
181                     // 打开另一个activity,通过意图,意图作用是激活其他组件
182                     Intent intent = new Intent();
183                     intent.setClass(getApplicationContext(),SettingsActivity.class);
184 
185                     //发送意图.将意图发送给android系统,系统根据意图来激活组件
186                     startActivity(intent);
187                 }
188             });
189             return view;
190         }
191 
192         @Override
193         public int getCount() {
194             return mImgs.length;
195         }
196 
197         @Override
198         public boolean isViewFromObject(View view, Object object) {
199             return view == object;
200         }
201 
202         @Override
203         public void destroyItem(ViewGroup container, int position, Object object) {
204             View view = (View) object;
205             container.removeView(view);
206         }
207     }
208 }
自定义的RadarPageActivity类

 

  View代码:

  

  1 package com.example.meetstars2.basic;
  2 
  3 import android.content.Context;
  4 import android.content.Intent;
  5 import android.location.LocationManager;
  6 import android.os.Bundle;
  7 import android.os.Handler;
  8 import android.support.constraint.ConstraintLayout;
  9 import android.support.v4.view.PagerAdapter;
 10 import android.support.v4.view.ViewPager;
 11 import android.util.SparseArray;
 12 import android.view.LayoutInflater;
 13 import android.view.View;
 14 import android.view.ViewGroup;
 15 import android.view.animation.AccelerateInterpolator;
 16 import android.widget.Button;
 17 import android.widget.ImageView;
 18 import android.widget.TextView;
 19 import android.widget.Toast;
 20 
 21 import com.example.meetstars2.ParternActivity;
 22 import com.example.meetstars2.R;
 23 import com.example.meetstars2.RadarPageActivity;
 24 import com.example.meetstars2.SettingsActivity;
 25 import com.example.meetstars2.TalkPageActivity;
 26 
 27 import java.lang.reflect.Field;
 28 
 29 public class RadarHelper implements ViewPager.OnPageChangeListener, RadarViewGroup.IRadarClickListener {
 30     private SparseArray<Info> mDatas = new SparseArray<>();
 31     private int[] mImgs = {R.drawable.len, R.drawable.leo, R.drawable.lep,
 32             R.drawable.leq, R.drawable.ler, R.drawable.les, R.drawable.mln, R.drawable.mmz, R.drawable.mna,
 33             R.drawable.mnj};
 34     private String[] mNames = {"孟婆汤", "在陋巷", "王司徒", "吉尼太梅", "无敌霹雳小旋风", "黄大锤", "神马浮云", "在你家白吃", "露了馅的豆包", "忍者的儿子"};
 35     private RadarViewGroup radarViewGroup;
 36     private FixedSpeedScroller scroller;
 37     private CustomViewPager viewPager;
 38     private ConstraintLayout constraintLayout;
 39     private int mPosition;
 40     private static final String TAG = "RadarPageActivity";
 41     private LocationManager locationManager;
 42     private String locationProvider;
 43     public Context context;
 44     public View final_view;
 45 
 46     public RadarHelper(LayoutInflater layoutInflater,Context context){
 47         final_view = layoutInflater.inflate(R.layout.activity_radar_page,null);
 48         this.context = context;
 49         init();
 50     }
 51 
 52     protected void init() {
 53 
 54         initData();
 55         initView();
 56 
 57         ViewpagerAdapter mAdapter = new ViewpagerAdapter();
 58         viewPager.setAdapter(mAdapter);
 59         //设置缓存数为展示的数目
 60         viewPager.setOffscreenPageLimit(mImgs.length);
 61         viewPager.setPageMargin(final_view.getResources().getDimensionPixelOffset(R.dimen.viewpager_margin));
 62         //设置切换动画
 63         viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
 64         viewPager.addOnPageChangeListener(this);
 65         setViewPagerSpeed(250);
 66 
 67         new Handler().postDelayed(new Runnable() {
 68             @Override
 69             public void run() {
 70                 radarViewGroup.setDatas(mDatas);
 71             }
 72         }, 1500);
 73 
 74         radarViewGroup.setiRadarClickListener(this);
 75 
 76     }
 77 
 78     private void initData() {
 79         for (int i = 0; i < mImgs.length; i++) {
 80             Info info = new Info();
 81             info.setPortraitId(mImgs[i]);
 82             info.setAge(((int) Math.random() * 25 + 16) + "岁");
 83             info.setName(mNames[(int) (Math.random() * mNames.length)]);
 84             info.setSex(i % 3 == 0 ? false : true);
 85             info.setDistance(Math.round((Math.random() * 10) * 100) / 100);
 86             mDatas.put(i, info);
 87         }
 88     }
 89 
 90     private void initView() {
 91         viewPager = (CustomViewPager) final_view.findViewById(R.id.vp);
 92         radarViewGroup = (RadarViewGroup) final_view.findViewById(R.id.radar);
 93     }
 94 
 95     private void setViewPagerSpeed(int duration) {
 96         try {
 97             Field field = ViewPager.class.getDeclaredField("mScroller");
 98             field.setAccessible(true);
 99             scroller = new FixedSpeedScroller(context, new AccelerateInterpolator());
100             field.set(viewPager, scroller);
101             scroller.setmDuration(duration);
102         } catch (NoSuchFieldException e) {
103             e.printStackTrace();
104         } catch (IllegalAccessException e) {
105             e.printStackTrace();
106         }
107     }
108 
109     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
110         mPosition = position;
111     }
112 
113     public void onPageSelected(int position) {
114         radarViewGroup.setCurrentShowItem(position);
115         LogUtils.w("当前位置 " + mPosition);
116         LogUtils.w("速度 " + viewPager.getSpeed());
117         //当手指左滑速度大于2000时viewpager右滑(注意是item+2)
118         if (viewPager.getSpeed() < -1800) {
119 
120             viewPager.setCurrentItem(mPosition + 2);
121             LogUtils.w("位置 " + mPosition);
122             viewPager.setSpeed(0);
123         } else if (viewPager.getSpeed() > 1800 && mPosition > 0) {
124             //当手指右滑速度大于2000时viewpager左滑(注意item-1即可)
125             viewPager.setCurrentItem(mPosition - 1);
126             LogUtils.w("位置 " + mPosition);
127             viewPager.setSpeed(0);
128         }
129     }
130 
131     public void onPageScrollStateChanged(int state) {
132 
133     }
134 
135 
136     public void onRadarItemClick(int position) {
137 
138         viewPager.setCurrentItem(position);
139 
140     }
141 
142     class ViewpagerAdapter extends PagerAdapter {
143         @Override
144         public Object instantiateItem(final ViewGroup container, final int position) {
145             final Info info = mDatas.get(position);
146             //设置一大堆演示用的数据,麻里麻烦~~
147             View view = LayoutInflater.from(container.getContext()).inflate(R.layout.viewpager_layout, null);
148             ImageView ivPortrait = (ImageView) view.findViewById(R.id.iv);
149             ImageView ivSex = (ImageView) view.findViewById(R.id.iv_sex);
150             TextView tvName = (TextView) view.findViewById(R.id.tv_name);
151             TextView tvDistance = (TextView) view.findViewById(R.id.tv_distance);
152             tvName.setText(info.getName());
153             tvDistance.setText(info.getDistance() + "km");
154             ivPortrait.setImageResource(info.getPortraitId());
155             if (info.getSex()) {
156                 ivSex.setImageResource(R.drawable.girl);
157             } else {
158                 ivSex.setImageResource(R.drawable.boy);
159             }
160             ivPortrait.setOnClickListener(new View.OnClickListener() {
161                 @Override
162                 public void onClick(View v) {
163                     Toast.makeText(container.getContext(), "这是 " + info.getName() + " >.<", Toast.LENGTH_SHORT).show();
164                 }
165             });
166             container.addView(view);
167 
168             Button button = (Button) view.findViewById(R.id.btn_calling);
169             Button button2 = (Button) view.findViewById(R.id.btn_referInformation);
170 
171             button.setOnClickListener(new View.OnClickListener() {
172                 @Override
173                 public void onClick(View arg0) {
174                     // 打开另一个activity,通过意图,意图作用是激活其他组件
175                     Intent intent = new Intent();
176                     intent.setClass(container.getContext(), TalkPageActivity.class);
177 
178                     //发送意图.将意图发送给android系统,系统根据意图来激活组件
179                     container.getContext().startActivity(intent);
180                 }
181             });
182 
183             button2.setOnClickListener(new View.OnClickListener() {
184                 @Override
185                 public void onClick(View arg0) {
186                     // 打开另一个activity,通过意图,意图作用是激活其他组件
187                     Intent intent = new Intent();
188                     intent.setClass(container.getContext(), SettingsActivity.class);
189 
190                     //发送意图.将意图发送给android系统,系统根据意图来激活组件
191                     container.getContext().startActivity(intent);
192                 }
193             });
194             return view;
195         }
196 
197         @Override
198         public int getCount() {
199             return mImgs.length;
200         }
201 
202         @Override
203         public boolean isViewFromObject(View view, Object object) {
204             return view == object;
205         }
206 
207         @Override
208         public void destroyItem(ViewGroup container, int position, Object object) {
209             View view = (View) object;
210             container.removeView(view);
211         }
212     }
213 }
自定义的RadarHelper类

 

  虽说会了以后就觉得挺简单的,我还是没有什么实际的感觉,毕竟~唉~还是对安卓程序发怵啊!花了这么多时间,才搞定这么一个小模块,感觉自己就是菜鸡啊!历程是艰苦的,结果是令人愉悦的,不对,接下来我们要针对用户的其他操作进行梳理和功能设计、实现了。

 

 

 

posted @ 2019-05-30 21:28  初等变换不改变矩阵的秩  阅读(169)  评论(0编辑  收藏  举报