android 将布局多次添加,android统一添加布局内容

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

基类:

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 :

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!"

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

布局文件 layout_title.xml :

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/rl_title_all"

>

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"

>

android:id="@+id/rl_title_left"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_alignParentLeft="true"

android:clickable="true"

>

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"

/>

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"

/>

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" />

android:id="@+id/rl_title_right"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_alignParentRight="true"

android:clickable="true">

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"

/>

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" />

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"

/>

清单文件:

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

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">

效果图:

cfcbd8345fe4

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值