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

时间:2023-03-09 08:40:34
基于百度定位及天气获取的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