基于百度定位及天气获取的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
基于百度定位及天气获取的DEMO +fragment+sharedpreference的更多相关文章
- 基于百度定位及天气获取的DEMO
demo基于百度定位APIv4.0版.新浪天气(不用查询城市代码). 需求: 1.button实现触发定位监听和天气捕获 2.两个textview 分别显示详细地址.天气. 界面很简陋,侧重功能实现. ...
- 百度定位SDK实现获取当前经纬度及位置
使用Android自带的LocationManager和Location获取位置的时候,经常会有获取的location为null的情况,并且操作起来也不是很方便,在这个Demo里我使用了百度地图API ...
- 基于百度定位SDK的定位服务的实现
转载请标明出处:http://blog.csdn.net/android_ls/article/details/10179013 一.定位模块的需求:我们想知道使用我们应用的用户的大概位置,每隔五分钟 ...
- 基于百度AI人脸识别技术的Demo
编写demo之前首先浏览官方API:http://ai.baidu.com/docs#/Face-API/top 下面是源码: package com.examsafety.test; import ...
- Android使用百度定位API时获取的地址信息为null
option.setAddrType("all"); //加上这个配置后才可以取到详细地址信息
- Android定位&地图&导航——基于百度地图实现的定位功能
一.问题描述 LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位.地图.导航等,首先我们看如何基于百度地图实现定位功能 二.配置环境 1.注册 ...
- Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK
原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
- 一个抽取百度定位的教程(下载百度地图Demo+配置+抽取)
效果展示 已经下载Demo的可以直接到第五步,已经配置好的并可以运行的可以直接到第七步. 1.在浏览器搜索 " 百度定位API ",点击下面这个链接 2.翻到最下面找到并点击 &q ...
- 使用百度定位Api获取当前用户登录地址
最近在做一个商城项目,客户想把网站做成类似于美团的效果,切换地区时,内容也跟随变化.这就要首先解决根据用户id获得地址的问题,最终决定使用百度定位(不适用于搭建反向代理的项目) String url ...
随机推荐
- 【转】PowerShell入门(九):访问.Net程序集、COM和WMI
转至:http://www.cnblogs.com/ceachy/archive/2013/02/28/PowerShell_DotNet_COM_WMI.html PowerShell可以设计的大而 ...
- css3属性之 box-sizing
w3c plus上有详细介绍及原理http://www.w3cplus.com/content/css3-box-sizing,这里摘录其中重要知识点部分. 本文重点考虑移动开发,所以默认移动端的浏览 ...
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
- php计算两个日期相差 年 月 日
在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等.在文章中,简单地举例介绍了PHP中如何计算两个日期相 ...
- 一、Docker之旅
刚刚接触到docker的同事可能会一头雾水,docker到底是一个什么东西,先看看官方的定义. Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔 ...
- [CCF] Z字形扫描
CCF Z字形扫描 感觉和LeetCode中的ZigZag还是有一些不一样的. 题目描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z ...
- jQuery判断元素是否存在方法
1.使用javascript判断元素是否存在 if(document.getElementById('div')) { } else { } 2.使用jquery判断元素是否存在 if ($(&quo ...
- 【jQuery】window.onload 和 $(document).ready() 的区别
... 在Stack Overflow上看到了这个问题,自己翻译了过来. The onload event is a standard event in the DOM, while the read ...
- Nordic Semiconductor nRF52832 蓝牙智能多协议单芯片解决方案荣获《中国电子商情》编辑选择奖
挪威奥斯陆 – 2016年4月11日 – Nordic Semiconductor ASA (OSE: NOD) 赢得<中国电子商情>颁发的"2015年编辑选择奖",其 ...
- WebSocket实战之————GatewayWorker使用笔记例子
参考文档:http://www.workerman.net/gatewaydoc/ 目录结构 ├── Applications // 这里是所有开发者应用项目 │ └── YourApp // 其中一 ...