• 基于百度定位及天气获取的DEMO +fragment+sharedpreference


    此工程较BaiduLocationXML相比:
    1.植入fragment,结合微信UI
    2.在原本主界面的button  textview  textview 移植到Fragment1
    3.增加网络判断,网络不通的情况下做另外处理
    4.在网络通畅的情况下,将地址信息、天气信息存入xml(sharedpreferences),
        网络不通的情况下,将原先xml信息读出展现

    fragment植入

    public class Fragment1 extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater,
                @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment1,container, false);
            locBtn = (Button) rootView.findViewById(R.id.location);
            locBtn.setVisibility(View.INVISIBLE);//隐藏button
            locInfo = (TextView) rootView.findViewById(R.id.location_info);
            weatherInfo = (TextView) rootView.findViewById(R.id.weather_info);
            initializeListeners();
            initialize();//注册广播
            return rootView;
        }
         @Override  
            public void onDestroyView() {  
               getActivity().unregisterReceiver(broadcastReceiver);  //注销广播
               super.onDestroyView();  
            }
    public class MainActivity extends FragmentActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
            // 初始化滑动条1/3
            initTabLine();
            // 初始化界面
            initView();//载入fragment
        }
    
    private void initView() {
            // 实例化对象
            viewPager = (ViewPager) findViewById(R.id.viewpager);
            tv1 = (TextView)findViewById(R.id.tv1);
            tv2 = (TextView) findViewById(R.id.tv2);
            tv3 = (TextView) findViewById(R.id.tv3);
            list = new ArrayList<Fragment>();
    
            // 设置数据源
            Fragment1 fragment1 = new Fragment1();
            Fragment2 fragment2 = new Fragment2();
            Fragment3 fragment3 = new Fragment3();
    
            list.add(fragment1);
            list.add(fragment2);
            list.add(fragment3);
    
            // 设置适配器
            FragmentPagerAdapter adapter = new FragmentPagerAdapter(
                    getSupportFragmentManager()) {
    
                @Override
                public int getCount() {
                    return list.size();
                }
    
                @Override
                public Fragment getItem(int arg0) {
                    return list.get(arg0);
                }
            };
    
            // 绑定适配器
            viewPager.setAdapter(adapter);
    
            // 设置滑动监听
            viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    
                @Override
                public void onPageSelected(int position) {
                    // 当页面被选择时,先讲3个textview的字体颜色初始化成黑
                    tv1.setTextColor(Color.BLACK);
                    tv2.setTextColor(Color.BLACK);
                    tv3.setTextColor(Color.BLACK);
    
                    // 再改变当前选择页(position)对应的textview颜色
                    switch (position) {
                    case 0:
                        tv1.setTextColor(Color.rgb(51, 153, 0));
                        break;
                    case 1:
                        tv2.setTextColor(Color.rgb(51, 153, 0));
                        break;
                    case 2:
                        tv3.setTextColor(Color.rgb(51, 153, 0));
                        break;
                    }
                    currentPage = position;
                }
    
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    Log.i("tuzi", arg0 + "," + arg1 + "," + arg2);
    
                    // 取得该控件的实例
                    LinearLayout.LayoutParams ll = (android.widget.LinearLayout.LayoutParams) tabline
                            .getLayoutParams();
    
                    if (currentPage == 0 && arg0 == 0) { // 0->1移动(第一页到第二页)
                        ll.leftMargin = (int) (currentPage * tabLineLength + arg1
                                * tabLineLength);
                    } else if (currentPage == 1 && arg0 == 1) { // 1->2移动(第二页到第三页)
                        ll.leftMargin = (int) (currentPage * tabLineLength + arg1
                                * tabLineLength);
                    } else if (currentPage == 1 && arg0 == 0) { // 1->0移动(第二页到第一页)
                        ll.leftMargin = (int) (currentPage * tabLineLength - ((1 - arg1) * tabLineLength));
                    } else if (currentPage == 2 && arg0 == 1) { // 2->1移动(第三页到第二页)
                        ll.leftMargin = (int) (currentPage * tabLineLength - (1 - arg1)
                                * tabLineLength);
                    }
    
                    tabline.setLayoutParams(ll);
    
                }
    
                @Override
                public void onPageScrollStateChanged(int arg0) {
                    // TODO Auto-generated method stub
    
                }
            });
    
        }

    SharedPreferences:

    //保存为xml部分
    SharedPreferences perference =context.getSharedPreferences("result",context.MODE_WORLD_READABLE);//xml名为result
    editor = perference.edit(); 
    editor.putString("地址",addressStr);  
            editor.putString("天气信息",result);  
            //以上的put内容是保存在内容中,完成后利用commit提交  
            editor.commit();
    //获取SharedPreferences  
                SharedPreferences perference = getActivity().getApplicationContext().getSharedPreferences("result",getActivity().getApplicationContext().MODE_PRIVATE);  
                //取得key为name的值,如果不存在,则返回空值  
                String addr = perference.getString("地址","");  
                //取得key为age的值,如果不存在,则返回0  
                String weather = perference.getString("天气信息","");

    网络连通状态判断

    //构造函数类型
    public class NetworkStatus {
        public boolean netStatus = false;
    
        public NetworkStatus(Context context) {
            try {
                ConnectivityManager connectManager = (ConnectivityManager) context
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo activeNetworkInfo = connectManager
                        .getActiveNetworkInfo();
                if (activeNetworkInfo != null) {
                    if (activeNetworkInfo.isAvailable()
                            && activeNetworkInfo.isConnected()) {
                        netStatus = true;
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    //boolean类型
    public class NetworkStatus {
        public boolean netStatus = false;
        public NetworkStatus(Context context) {
       ConnectivityManager con=(ConnectivityManager)context.getSystemService   (Activity.CONNECTIVITY_SERVICE);  
        boolean wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();  
        boolean internet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();  
        if(internet){  
            //执行相关操作  
            netStatus=true;
            Toast.makeText(context,  
                    "当前移动网络已连接!", Toast.LENGTH_LONG)  
                    .show();  
        }else if(wifi){ 
            netStatus=true;
            Toast.makeText(context,  
                    "当前WIFI已连接", Toast.LENGTH_LONG)  
                    .show();  
        } else
        {
            Toast.makeText(context,  
                     "亲,网络连了么?", Toast.LENGTH_LONG)  
                    .show(); 
        }
    }
    }

    源码:http://download.csdn.net/detail/xiejun1026/8444569

  • 相关阅读:
    lazyload is not a function解决方式
    APK反编译(Linux环境下)
    讲解图片压缩的文章
    startActivityForResult相关的
    把APP做成libary的注意事项
    ViewPager+Fragment,Fragment会预加载的问题
    FragmentTabHost使用注意
    使用ReTrofit做缓存(结合上拉加载和下拉刷新)
    极光推送,极光IM使用指南(AndroidStudio)
    AndroidStudio使用注意事项
  • 原文地址:https://www.cnblogs.com/NeilLing/p/4290081.html
Copyright © 2020-2023  润新知