美文网首页
android统一添加布局内容

android统一添加布局内容

作者: gold_tq | 来源:发表于2018-11-15 20:41 被阅读0次

    新版的项目需要添加一个功能,没网络的时候提示用户,有网络的时候提示内容自动消失,由于项目做了一年多,布局文件较多,如果给没给页面添加控件,比较麻烦,而且后期要是有变动,需要改的东西较多,所有决定在基类中添加显示,上代码 :

    基类:

    package com.shuchang.yingyong.test.networkshow;

    import android.content.IntentFilter;

    import android.os.Bundle;

    import android.support.annotation.Nullable;

    import android.support.v7.app.AppCompatActivity;

    import android.view.View;

    import android.view.ViewGroup;

    import android.widget.LinearLayout;

    import android.widget.RelativeLayout;

    import android.widget.TextView;

    public abstract class BaseActvityextends AppCompatActivity {

    private TextViewtipsView;

    private IntentFilterintentFilter;

    private NetworkChangeReceivernetworkChangeReceiver;

    @Override

        public void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(getLayoutID());

    }

    /**

        * @return 布局文件id

    */

        protected abstract int getLayoutID();

    @Override

        protected void onResume() {

    super.onResume();

    showNetView();

    }

    @Override

        protected void onPause() {

    super.onPause();

    unregisterReceiver(networkChangeReceiver);

    }

    /**

    * 显示网络异常时候的提示

    */

        private void showNetView() {

    intentFilter =new IntentFilter();

    intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

    networkChangeReceiver =new NetworkChangeReceiver(new NetworkChangeReceiver.INetWorkChangeListener() {

    @Override

                public void changeState(Boolean isAvailable) {

    if(tipsView!=null){

    if (isAvailable) {

    tipsView.setVisibility(View.GONE);

    }else {

    tipsView.setVisibility(View.VISIBLE);

    }

    }

    }

    });

    registerReceiver(networkChangeReceiver,intentFilter);

    tipsView =new TextView(this);

    tipsView.setText("网络没有链接");

    View decorView = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content);

    ViewGroup headView = decorView.findViewById(R.id.rl_title_all);

    if (headView !=null) {

    if (headViewinstanceof RelativeLayout) {

    View one = headView.findViewById(R.id.headone);

    RelativeLayout.LayoutParams params =new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

    params.addRule(RelativeLayout.BELOW, one.getId());

    tipsView.setLayoutParams(params);

    headView.addView(tipsView);

    }else if (headViewinstanceof LinearLayout) {

    }

    }

    }

    }

    网络监听:

    package com.shuchang.yingyong.test.networkshow;

    import android.content.BroadcastReceiver;

    import android.content.Context;

    import android.content.Intent;

    import android.net.ConnectivityManager;

    import android.net.NetworkInfo;

    public class NetworkChangeReceiverextends BroadcastReceiver {

    //    网络变化回调

        INetWorkChangeListenermChangeListener;

    private NetworkChangeReceiver(){

    }

    public NetworkChangeReceiver(INetWorkChangeListener changeListener){

    mChangeListener=changeListener;

    }

    @Override

        public void onReceive(Context context, Intent intent) {

    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

    if (mChangeListener !=null) {

    if (networkInfo !=null && networkInfo.isAvailable()) {

    mChangeListener.changeState(true);

    }else {

    mChangeListener.changeState(false);

    }

    }

    }

    public interface  INetWorkChangeListener{

    public void changeState(Boolean isAvailable);

    }

    }

    测试类1:    

    package com.shuchang.yingyong.test.networkshow;

    import android.app.Activity;

    import android.content.Intent;

    import android.support.v7.app.AppCompatActivity;

    import android.os.Bundle;

    import android.view.View;

    import android.view.ViewGroup;

    import android.widget.LinearLayout;

    import android.widget.RelativeLayout;

    import android.widget.TextView;

    public class MainActivityextends BaseActvity {

    private TextViewhellword;

    @Override

        public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    hellword = findViewById(R.id.hellword);

    hellword.setOnClickListener(new View.OnClickListener() {

    @Override

                public void onClick(View v) {

    startActivity(new Intent(MainActivity.this,NextActivity.class));

    }

    });

    }

    @Override

        protected int getLayoutID() {

    return R.layout.activity_main;

    }

    }

    测试类2:

    package com.shuchang.yingyong.test.networkshow;

    import android.content.Intent;

    import android.os.Bundle;

    import android.view.View;

    import android.widget.TextView;

    public class NextActivityextends BaseActvity {

    private TextViewhellword;

    @Override

        public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    hellword = findViewById(R.id.hellword);

    hellword.setText("这是 第二个界面");

    }

    @Override

        protected int getLayoutID() {

    return R.layout.activity_main;

    }

    }

    布局文件 activity_main.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:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        tools:context=".MainActivity">

        <include layout="@layout/layout_title"></include>

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="Hello World!"

            android:id="@+id/hellword"/>

    </LinearLayout>

    布局文件 layout_title.xml :

    <?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:id="@+id/rl_title_all"

        >

        <RelativeLayout

            android:layout_width="match_parent"

            android:layout_height="44dp"

            android:background="@color/color_8"

            android:layout_alignParentTop="true"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true"

            android:id="@+id/headone"

            >

            <RelativeLayout

                android:id="@+id/rl_title_left"

                android:layout_width="wrap_content"

                android:layout_height="match_parent"

                android:layout_alignParentLeft="true"

                android:clickable="true"

                >

                <ImageView

                    android:id="@+id/tv_activity_base_left"

                    android:layout_width="wrap_content"

                    android:layout_height="match_parent"

                    android:paddingLeft="10dp"

                    android:paddingRight="10dp"

                    android:layout_centerVertical="true"

                    android:visibility="gone"

                    android:src="@mipmap/title_return_arow"

                    />

                <TextView

                    android:id="@+id/tv_return_text"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_toRightOf="@+id/tv_activity_base_left"

                    android:textSize="14sp"

                    android:layout_centerVertical="true"

                    android:text="返回"

                    android:paddingRight="10dp"

                    android:visibility="gone"

                    android:textColor="@color/deep_6"

                    />

            </RelativeLayout>

            <TextView

                android:id="@+id/tv_activity_base_title"

                android:layout_width="wrap_content"

                android:layout_height="match_parent"

                android:singleLine="true"

                android:ellipsize="end"

                android:layout_centerInParent="true"

                android:gravity="center"

                android:maxLength="15"

                android:drawablePadding="4dp"

                android:textColor="@color/white"

                android:text="测试网络连接"

                android:textSize="16sp" />

            <RelativeLayout

                android:id="@+id/rl_title_right"

                android:layout_width="wrap_content"

                android:layout_height="match_parent"

                android:layout_alignParentRight="true"

                android:clickable="true">

                <TextView

                    android:id="@+id/tv_activity_base_right"

                    android:layout_width="wrap_content"

                    android:layout_height="match_parent"

                    android:gravity="center"

                    android:textSize="15sp"

                    android:text=""

                    android:textColor="@color/white"

                    android:layout_centerVertical="true"

                    android:paddingLeft="16dp"

                    android:paddingRight="16dp"

                    />

                <TextView

                    android:id="@+id/tv_activity_base_right2"

                    android:layout_width="wrap_content"

                    android:layout_height="match_parent"

                    android:layout_toRightOf="@+id/tv_activity_base_right"

                    android:gravity="center"

                    android:paddingRight="15dp"

                    android:text=""

                    android:textSize="15sp"

                    android:textColor="@color/white"

                    android:visibility="gone" />

                <ImageView

                    android:id="@+id/iv_return_to_home"

                    android:layout_width="wrap_content"

                    android:layout_height="match_parent"

                    android:src="@mipmap/home_logos"

                    android:paddingLeft="15dp"

                    android:paddingRight="15dp"

                    android:visibility="gone"

                    />

            </RelativeLayout>

        </RelativeLayout>

    </RelativeLayout>

    清单文件:

    <?xml version="1.0" encoding="utf-8"?>

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"

        package="com.shuchang.yingyong.test.networkshow">

        <application

            android:allowBackup="true"

            android:icon="@mipmap/ic_launcher"

            android:label="@string/app_name"

            android:roundIcon="@mipmap/ic_launcher_round"

            android:supportsRtl="true"

            android:theme="@style/AppTheme">

            <activity android:name=".MainActivity">

                <intent-filter>

                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />

                </intent-filter>

            </activity>

            <activity android:name=".NextActivity">

            </activity>

        </application>

        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

        <uses-permission android:name="android.permission.INTERNET" />

    </manifest>

    效果图:

    完整的项目下载地址:https://download.csdn.net/download/wangyufengdy/10787432

    相关文章

      网友评论

          本文标题:android统一添加布局内容

          本文链接:https://www.haomeiwen.com/subject/ihljaftx.html