Android进阶之路
来源:互联网 发布:淘宝查询礼服秋冬女装 编辑:程序博客网 时间:2024/06/15 22:12
在此之前,总是免不了小小的抱怨,因为找了一天的可行性代码,要么篇幅太长,要么解决不了问题,还好最后算是勉强解决了需求,下面这篇文章 送给如我一般的菜鸟。
Effect:
添加权限:
<uses-permission android:name="android.permission.INTERNET"/> <!--允许读取网络状态--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!--允许读取wifi网络状态--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
在正式开始观看代码之前,如果您的需求只是让弹一个Toask的话,一个工具类基本搞定,但是这样的话,您需要自己写个广播,在onReceiver内调用此工具类即可。
NetUtils:
package com.yl.demo.netstatetolayout;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.util.Log;import android.widget.Toast;/** * We need day day up - -! * 判断网络状态工具 */public class NetUtils { /*** * 是否有网 * */ public static boolean isOpenNet(Context context){ ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(context.getApplicationContext().CONNECTIVITY_SERVICE); NetworkInfo network = conManager.getActiveNetworkInfo(); if(network!=null){ Log.e("tag","网络打开了,true"); Toast.makeText(context,"网络打开了",Toast.LENGTH_SHORT).show(); return true; }else{ Log.e("tag","网络关闭了,false"); Toast.makeText(context,"网络关闭了",Toast.LENGTH_SHORT).show(); return false; } }}
如果您的需求是根据网络状态加载与隐藏UI的话,那么请直接观看吧。
注意与观点:
1.网络监听,不需要我们发送广播,因为系统会自动发出,我们需要做的就是监听此状态
2.这里我使用的也是广播机制,与平常使用广播方式不同的便是实时监听,如果只是统一进行广播处理的话,对应Layout的网络提示页面可需性加载有一些问题,不过可以写在Base中(我目前是这样实现的)
MainAcitivity :
package com.yl.demo.netstatetolayout;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private TextView netState; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); netState = (TextView) findViewById(R.id.tv_net_state); IntentFilter localFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"); this.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(NetUtils.isOpenNet(context)){ netState.setVisibility(View.GONE); }else { netState.setVisibility(View.VISIBLE); netState.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this,NetStateActivity.class)); } }); } } },localFilter); }}
MainActivity Xml :
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.yl.demo.netstatetolayout.MainActivity"> <TextView android:textColor="#fff" android:layout_width="match_parent" android:layout_height="50dp" android:text="Our Days" android:background="#1ba9e2" android:gravity="center" /> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:background="#f00" android:textColor="#fff" android:id="@+id/tv_net_state" android:text="网络状态出错" android:gravity="center" android:visibility="gone" /> <TextView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:text="If you are happy,you can do everything!" /></LinearLayout>
NetStateActivity :
package com.yl.demo.netstatetolayout;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;/** * We need day day up - -! */public class NetStateActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_state); TextView mBack = (TextView) findViewById(R.id.tv_back); mBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); }}
NetStateActivity Xml :
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:background="#1ba9e2" android:layout_height="wrap_content"> <TextView android:textColor="#fff" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="返回" android:id="@+id/tv_back" android:layout_marginLeft="8dp" android:layout_centerInParent="true" /> <TextView android:textColor="#fff" android:layout_width="match_parent" android:layout_height="50dp" android:text="网络设置提示" android:gravity="center" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#fff" android:orientation="vertical" android:padding="5dp" android:paddingLeft="10dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:text="请设置您的网络" android:textSize="15sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:text="1.打开设备的“系统设置”\'>“无线网和网络”\'>“移动网络”。" android:textColor="#D8D8D8" android:textSize="13sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:text="2.打开设备的“系统设置”\'>“WLAN”\'>启动“WLAN”后从中选择一个可用的热点连接。" android:textColor="#D8D8D8" android:textSize="13sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:background="#fff" android:orientation="vertical" android:padding="7dp" android:paddingLeft="10dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:padding="5dp" android:text="如果您已经链接WI-FI网络" android:textSize="15sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:background="#fff" android:padding="5dp" android:text="请确认你所接入的Wi-Fi网路已经连入互联网,或者确认你的设备是否被允许访问热点。" android:textColor="#D8D8D8" android:textSize="13sp" /> </LinearLayout></LinearLayout>
阅读全文
0 0
- Android进阶之路
- android进阶之路
- Android 进阶之路
- Android 进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- QT宏定义指针转换
- 备忘录
- 对称加密与非对称加密
- 【双语】使用ConstraintLayout构建响应式UI(Build a Responsive UI with ConstraintLayout)
- java中的this关键字/内部类
- Android进阶之路
- 给select下拉框赋值,js实现
- 自己收集的skynet教程
- 页面中的label标签本来随着里面字数的增加而增长,我准备设定label标的宽度为固定值,却一直设定不了
- 图解集合LinkedHashMap
- 以太坊不同客户端的定义和用途
- Python函数式编程
- gym/101149/ Right Build 有向spfa
- java性能优化