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>
原创粉丝点击