美文网首页
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