• 简单的实现网路请求


          动画

    public class MainActivity extends AppCompatActivity {
    
        private ImageView img;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    //        Intent intent=new Intent(MainActivity.this,Main2Activity.class);
    //        startActivity(intent);
            img = (ImageView) findViewById(R.id.img);
            Animation animation=new AlphaAnimation(0.1f,1.0f);
            animation.setDuration(5000);
            img.startAnimation(animation);
            animation.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
    
                }
    
                @Override
                public void onAnimationEnd(Animation animation) {
                    Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                    startActivity(intent);
                }
    
                @Override
                public void onAnimationRepeat(Animation animation) {
    
                }
            });
    
        }
    }

    MainActivity

    public class Main2Activity extends BaseAcvitity implements View.OnClickListener {
        private String[] strList = new String[]{"推荐", "热点", "北京", "科技", "军事", "视频", "社会"};
    
    
        private DrawerLayout drawerLayout;
        private TabLayout tabLayout;
        private ViewPager vp;
        private ListView lv;
        private ActionBarDrawerToggle toggle;
        private List<String> list = new ArrayList<String>();
        private int mode;
    
        private List<ChannelBean> channelist;
        private String jsonStr;
        private List<Fragment>frlist=new ArrayList<Fragment>();
        private ImageView imgLogin;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
    
    
    
    
    
            //极光推送
            JPushInterface.setDebugMode(true);
            JPushInterface.init(this);
            //频道管理的点击事件
            findViewById(R.id.tvpindao).setOnClickListener(this);
    
            //夜间模式
            mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
            //
    
            if(isOnline()){
                initView();
                initData();
            }else{
                showDialog();
    
            }
    
    
    
        }
        //左侧滑显示listview数量
        private void initData() {
    
            Main2Adapter main2Adapter=new Main2Adapter(this,list);
            lv.setAdapter(main2Adapter);
            //左侧滑Listview
            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
                }
            });
    
            list.add("好友动态");
            list.add("与我相关");
            list.add("我的头条");
            list.add("我的话题");
            list.add("收藏");
            list.add("活动");
    
            //显示Fragment
            frlist.add(new Fragment1());
            frlist.add(new Fragment2());
            frlist.add(new Fragment3());
            frlist.add(new Fragment4());
            frlist.add(new Fragment5());
            frlist.add(new Fragment6());
            frlist.add(new Fragment7());
    
        }
    
        //查询控件
        private void initView() {
            lv = (ListView) findViewById(R.id.lv);
            drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
            tabLayout = (TabLayout) findViewById(R.id.tabLayout);
            vp = (ViewPager) findViewById(R.id.vp);
            //底布局
            findViewById(R.id.img4).setOnClickListener(this);
            findViewById(R.id.img5).setOnClickListener(this);
            newsView();
            //头布局变化
            toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.app_name, R.string.app_name);
            //同步侧滑
            toggle.syncState();
            drawerLayout.addDrawerListener(toggle);
    
    
            for (String str : strList) {
                tabLayout.addTab(tabLayout.newTab().setText(str));
            }
            vp.setAdapter(new MyPageAdapter(getSupportFragmentManager()));
            tabLayout.setupWithViewPager(vp);
    
    
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            return toggle.onOptionsItemSelected(item) | super.onOptionsItemSelected(item);
        }
    
    
        //FragmentPager适配器
        class MyPageAdapter extends FragmentPagerAdapter {
    
            public MyPageAdapter(FragmentManager fm) {
                super(fm);
            }
    
            @Override
            public Fragment getItem(int position) {
                return frlist.get(position);
            }
    
            @Override
            public int getCount() {
                return strList.length;
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                return strList[position];
            }
        }
    
        public void newsView() {
            //头布局
            View view = View.inflate(this, R.layout.leftsideslip, null);
            lv.addHeaderView(view);
            //登陆
            imgLogin = (ImageView) view.findViewById(img1);
            imgLogin.setOnClickListener(this);
            //短信
            ImageView imgnote = (ImageView) view.findViewById(R.id.img2);
            imgnote.setOnClickListener(this);
            //夜间模式
            ImageView imgnight = (ImageView) view.findViewById(R.id.img3);
            imgnight.setOnClickListener(this);
            //更多
            TextView tvgengduo= (TextView) view.findViewById(R.id.tv);
            tvgengduo.setOnClickListener(this);
    
    
    
    
    
        }
    
        //点击事件
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                //频道
                case R.id.tvpindao:{
    
                    Intent intent=new Intent(Main2Activity.this,Main5Activity.class);
                    startActivity(intent);
    
                }
                break;
                //更多登陆方式
                case R.id.tv:{
                    Intent intent=new Intent(Main2Activity.this,Main3Activity.class);
                    intent.putExtra("qq","https://sso.toutiao.com/login/");
                    startActivity(intent);
    
                }
                break;
                //第三方登录
                case R.id.img1: {
                    UMShareAPI.get(Main2Activity.this).getPlatformInfo(Main2Activity.this, SHARE_MEDIA.QQ, umAuthListener);
                    PlatformConfig.setQQZone("1106197903", "Vfdwhxp8yhlKPv4h");
    
                }
                break;
                //短信验证
                case R.id.img2: {
                    RegisterPage registerPage = new RegisterPage();
                    //回调函数
                    registerPage.setRegisterCallback(new EventHandler() {
                        public void afterEvent(int event, int result, Object data) {
                            // 解析结果
                            if (result == SMSSDK.RESULT_COMPLETE) {
                                //提交验证码成功
                                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                                }
                                //提交验证码成功,此时已经验证成功了
                                else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                                }
                            }
                        }
                    });
                    registerPage.show(Main2Activity.this);
    
                }
                break;
                //夜间模式
                case R.id.img3: {
    
                    if (mode == Configuration.UI_MODE_NIGHT_YES) {
                        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                    } else if (mode == Configuration.UI_MODE_NIGHT_NO) {
                        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                    }
                    recreate();
    
                }
                break;
                //设置
                case R.id.img4:{
                     Intent intent=new Intent(Main2Activity.this, Main4Activity.class);
                     startActivity(intent);
    
                }
                break;
                //城市列表
                case R.id.img5:{
    
                    CityListActivity.startCityActivityForResult(this);
    
                }
                break;
    
            }
    
        }
    
    
        //第三方需要重写的方法
        private UMAuthListener umAuthListener = new UMAuthListener() {
            @Override
            public void onStart(SHARE_MEDIA platform) {
                //授权开始的回调
            }
    
            @Override
            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
                Toast.makeText(getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show();
    //            String name = data.get("name");
    //            String gender = data.get("gender");
                String photoUrl = data.get("iconurl");
                //tv.setText(name + " " +gender);
    
                ImageLoader.getInstance().displayImage(photoUrl,imgLogin);
            }
    
            @Override
            public void onError(SHARE_MEDIA platform, int action, Throwable t) {
                Toast.makeText(getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
            }
    
            @Override
            public void onCancel(SHARE_MEDIA platform, int action) {
                Toast.makeText(getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
            }
        };
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    
        }
    
        //语音识别
       public  void discern(View view){
    
           //1.创建RecognizerDialog对象,第二个参数就是一个初始化的监听器,我们用不上就设置为null
           RecognizerDialog mDialog = new RecognizerDialog(this, null);
           //2.设置accent、language等参数
           mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//设置为中文模式
           mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");//设置普通话模式
           //若要将UI控件用于语义理解,必须添加以下参数设置,设置之后onResult回调返回将是语义理解
           //mDialog.setParameter("asr_sch", "1");
           //mDialog.setParameter("nlp_version", "2.0");
           //创建一个装每次解析数据的容器
           final StringBuilder mStringBuilder = new StringBuilder();
           //3.设置回调接口
           mDialog.setListener(new RecognizerDialogListener() {
               @Override//识别成功执行,参数recognizerResult 识别的结果,Json格式的字符串
               //第二参数 b:等于true时会话结束.方法才不会继续回调
               //一般情况下通过onResult接口多次返回结果,完整识别内容是多次结果累加的
               public void onResult(RecognizerResult recognizerResult, boolean b) {
                   //拿到讯飞识别的结果
                   String resultString = recognizerResult.getResultString();
                   System.out.println("讯飞识别的结果 " + resultString);
                   System.out.println("b参数是什么 " + b);
                   //自定义解析bean数据的方法,得到解析数据
                   String content = parseData(resultString);
                   System.out.println("解析后的数据 "+ content);
                   mStringBuilder.append(content);
                   //对参数2b进行判断,如果为true,代表这个方法不会对调,那么我们容器的数据转为字符串,拿来使用即可
                   if (b) {
                       String result = mStringBuilder.toString();
                       System.out.println(result);
                       //回答对象,在没有匹配到用户说的话,默认输出语句
                       String anwser = "不好意思,你说的我没有听清楚!!!";
                       if (result.contains("你好")) {
                           anwser = "你好,我是你的智能语音助手,很高兴为你服务";
                       } else if (result.contains("小明")) {
                           anwser = "和小明一块玩";
                       } else if (result.contains("王少良")) {
                           //定义一个String数组,智能语音根据美女这个数据,可能说的话
                           String [] answerList=new String[]{"500元,妹子陪你打一晚上游戏","你是坏人不和你玩了","小助手很纯洁,不要带坏我了"};
                           //小助手随机回答,所以使用生成随机数的类.random(因为此数是小数,乘以集合长度,再做int类型强转,得到的数是0到集合长度-1)
                           int random = (int) (Math.random()*answerList.length);
                           anwser=answerList[random];
                       }else if (result.contains("打开权限信息")) {
                           Intent intent = new Intent();
                           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                           if (Build.VERSION.SDK_INT >= 9) {
                               intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                               intent.setData(Uri.fromParts("package", getPackageName(), null));
                           } else if (Build.VERSION.SDK_INT <= 8) {
                               intent.setAction(Intent.ACTION_VIEW);
                               intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
                               intent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
                           }
                           startActivity(intent);
                       }
                       show(anwser);
                   }
               }
               @Override//识别失败执行的方法,speechError错误码
               public void onError(SpeechError speechError) {
                   System.out.println("错误码 " + speechError);
               }
           });
           //4.显示dialog,接收语音输入
           mDialog.show();
       }
        public void compound(View view){
            show("说话的是个大涮锅");
        }
        //语音合成
        public void show(String result) {
            //1.创建 SpeechSynthesizer 对象, 第二个参数:本地合成时传 InitListener
            SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(this, null);
            //2.合成参数设置,详见《MSC Reference Manual》SpeechSynthesizer 类
            // 设置发音人(更多在线发音人,用户可参见 附录13.2
            mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan"); //设置发音人
            mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速
            mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围 0~100
            mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端,这些功能用到了讯飞服务器,所以要有网络
            //设置合成音频保存位置(可自定义保存位置),保存在“./sdcard/iflytek.pcm”
            //保存在 SD 卡需要在 AndroidManifest.xml 添加写 SD 卡权限
            //仅支持保存为 pcm 和 wav 格式,如果不需要保存合成音频,注释该行代码
            // mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");
            // 3.开始合成,第一个参数就是转换成声音的文字,自定义,第二个参数就是合成监听器对象,我们不需要对声音有什么特殊处理,就传null
            mTts.startSpeaking(result, null);
        }
        private String parseData(String resultString) {
            //创建gson对象.记得要关联一下gson.jar包,方可以使用
            Gson gson = new Gson();
            //参数1 String类型的json数据   参数2.存放json数据对应的bean类
            XFBean xfBean = gson.fromJson(resultString, XFBean.class);
            //创建集合,用来存放bean类里的对象
            ArrayList<XFBean.WS> ws = xfBean.ws;
            //创建一个容器,用来存放从每个集合里拿到的数据,使用StringBUndle效率高
            StringBuilder stringBuilder = new StringBuilder();
            for (XFBean.WS w : ws) {
                String text = w.cw.get(0).w;
                stringBuilder.append(text);
            }
            //把容器内的数据转换为字符串返回出去
            return stringBuilder.toString();
        }
         /**
              * 提示用户的一个联网对话框
              */
             private void showDialog(){
    
                 AlertDialog.Builder builder = new AlertDialog.Builder(this);
                 builder.setMessage("是否开网");
                 builder.setNegativeButton("",null);
                 builder.setPositiveButton("", new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         //设置跳转网络界面
                         startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
                     }
                 });
    
                 builder.create().show();
    
             }
    
    
    
    
             /**
              * 判断网络是否连接
              * @return true 网络已经连接 false 网络没有连接
              */
             public boolean isOnline() {
                 //得到网络连接的管理者
                 ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
                 //通过网络管理者得到网络信息
                 NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
                 //判断网络是否连接
                 return (networkInfo != null && networkInfo.isConnected());
             }
    
    
    }

    Fragment

    public class Fragment1 extends Fragment implements XListView.IXListViewListener{
        private Handler handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
    
                   vp.setCurrentItem(intdex);
            }
        };
        private int intdex=1;
        private boolean flog;
        private XListView xlv;
        private View view;
        private MyAdapter adapter;
        private ViewPager vp;
        private List<String>imgList;
        private List<InifBean.ResultBean.DataBean> apklist;
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            view = inflater.inflate(R.layout.f1,container,false);
            xlv = (XListView) view.findViewById(R.id.xlv);
            xlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Intent intent=new Intent(getActivity(), Main3Activity.class);
                    intent.putExtra("qq",apklist.get(position-1).getUrl());
                    startActivity(intent);
                }
            });
            xlv.setPullLoadEnable(true);
            xlv.setXListViewListener(this);
            vp = (ViewPager) view.findViewById(R.id.vp);
            imgList= Arrays.asList("http://www.microvirt.com/new_market/img/zhuxian_logo.png","http://www.microvirt.com/new_market/img/zhuxian_logo.png","http://www.microvirt.com/new_market/img/zhuxian_logo.png");
    
            myinitData();
            vp.setAdapter(new MyPageAdapter());
    
    
    
            auto();
            return view;
        }
        public void auto(){
            new Thread(){
                @Override
                public void run() {
                    super.run();
    
                        while (true){
                            try {
                            sleep(1000);
    
    
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                     intdex++;
                     handler.sendEmptyMessage(0);
                        }
                }
            }.start();
    
    
        }
    
    
        //解析
        private void myinitData() {
            RequestParams parms=new RequestParams("http://v.juhe.cn/toutiao/index?type=junshi&key=54e3d5f4ee64f51bef570ce8505d37b5");
            x.http().get(parms, new Callback.CommonCallback<String>() {
                //请求数据成功
                @Override
                public void onSuccess(String result) {
                    Gson gson=new Gson();
                    InifBean bean = gson.fromJson(result, InifBean.class);
                    apklist = bean.getResult().getData();
                    if(adapter==null){
                        adapter=new MyAdapter(getActivity(), apklist);
                        xlv.setAdapter(adapter);
                    }else{
                        adapter.loadmore(apklist,flog);
    
                    }
    
    
                }
                //请求数据失败要做的
                @Override
                public void onError(Throwable ex, boolean isOnCallback) {
    
                }
                //取消
                @Override
                public void onCancelled(CancelledException cex) {
    
                }
                //最后要做的
                @Override
                public void onFinished() {
    
                }
            });
    
    
        }
    
        @Override
        public void onRefresh() {
            flog=false;
            ++intdex;
            myinitData();
            xlv.stopRefresh(true);
        }
    
        @Override
        public void onLoadMore() {
             flog=true;
             ++intdex;
            myinitData();
            xlv.stopLoadMore();
        }
        class MyPageAdapter extends PagerAdapter{
    
    
            @Override
            public int getCount() {
                return Integer.MAX_VALUE;
            }
    
            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view==object;
            }
    
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
    
                ImageView imageView=new ImageView(getActivity());
                container.addView(imageView);
                ImageLoader.getInstance().displayImage(imgList.get(position%imgList.size()),imageView, App.getDisp());
                return imageView;
            }
    
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
    
                container.removeView((View) object);
    
            }
        }
    
    }

    适配器

    public class MyAdapter extends BaseAdapter {
        private Context context;
        private List<InifBean.ResultBean.DataBean> apklist;
    
    
        public MyAdapter(Context context,List<InifBean.ResultBean.DataBean> apklist) {
            this.context=context;
            this.apklist=apklist;
    
    
        }
        public void loadmore(List<InifBean.ResultBean.DataBean> list,boolean flog){
            for (InifBean.ResultBean.DataBean  apkBean:list){
                if(flog){
                    list.add(apkBean);
                }else{
                    list.add(0,apkBean);
    
                }
    
            }
            notifyDataSetChanged();
    
        }
        @Override
        public int getCount() {
            return apklist.size();
        }
    
        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
        @Override
        public int getViewTypeCount() {
            return 2;
        }
    
        @Override
        public int getItemViewType(int position) {
            if(position%2==0){
                return 0;
            }
            return 1;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
                     if(convertView==null){
    
                         convertView = View.inflate(context, R.layout.item,null);
                         TextView tv1= (TextView) convertView.findViewById(R.id.tv1);
                         TextView tv2= (TextView) convertView.findViewById(R.id.tv2);
                         TextView tv3= (TextView) convertView.findViewById(R.id.tv3);
                         ImageView img1= (ImageView) convertView.findViewById(R.id.img);
                         ImageView img2= (ImageView) convertView.findViewById(R.id.img1);
                         ImageView img3= (ImageView) convertView.findViewById(R.id.img2);
    
                         tv3.setText(apklist.get(position).getTitle());
                         tv1.setText(apklist.get(position).getAuthor_name());
                         //tv2.setText(apklist.get(position).getAuthor_name());
                         loadImage(apklist.get(position).getUrl(),img1);
                         loadImage(apklist.get(position).getThumbnail_pic_s(),img2);
                         loadImage(apklist.get(position).getThumbnail_pic_s02(),img3);
    
    
    
            }
            return convertView;
        }
        public void loadImage(String url, final ImageView imggeView){
            new AsyncTask<String,Void,Bitmap>(){
    
                @Override
                protected void onPostExecute(Bitmap bitmap) {
                    super.onPostExecute(bitmap);
                    if(bitmap==null){
                        imggeView.setImageResource(R.mipmap.ic_empty);
                    }else{
                        imggeView.setImageBitmap(bitmap);
    
                    }
    
    
                }
    
                @Override
                protected Bitmap doInBackground(String... params) {
                    try {
                        URL url=new URL(params[0]);
                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                        connection.setRequestMethod("GET");
                        connection.setConnectTimeout(5000);
                        connection.setReadTimeout(5000);
                        int code = connection.getResponseCode();
                        if(code==200){
                            InputStream is = connection.getInputStream();
                            return BitmapFactory.decodeStream(is);
    
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
    
                    return null;
                }
            }.execute(url);
    
    
        }
  • 相关阅读:
    JQ轮播
    JS中正则匹配的三个方法match exec test的用法
    JavaScript 表单验证
    JS 控制CSS样式表
    AJAX 的简单用法:
    shell之运用sed将其值存到变量
    shell之创建文件及内容
    修复vbox的共享文件夹的符号链接错误
    字符转码
    php魔术方法
  • 原文地址:https://www.cnblogs.com/yu12/p/7566875.html
Copyright © 2020-2023  润新知