zoukankan      html  css  js  c++  java
  • 星辰小队针对于软件“星遇”的第二次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类

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

  • 相关阅读:
    微软职位内部推荐-SOFTWARE ENGINEER II
    微软职位内部推荐-SOFTWARE ENGINEER II
    微软职位内部推荐-SDEII for Windows Phone Apps
    微软职位内部推荐-SDEII for Windows Phone Apps
    微软职位内部推荐-Software Engineer II-SDP
    微软职位内部推荐-SDE II
    微软职位内部推荐-Senior Software Engineer-SDP
    微软职位内部推荐-Senior Software Engineer
    微软职位内部推荐-Software Engineer II-Office Incubation
    微软职位内部推荐-Senior Software Engineer-Office Incubation
  • 原文地址:https://www.cnblogs.com/onepersonwholive/p/10987628.html
Copyright © 2011-2022 走看看