1.通用脚本参考
public sealed class AdUnionContext : MonoBehaviour
{
private AndroidJavaObject currentActivity;
private static readonly AdUnionContext _AdUnionContext = new AdUnionContext();
/*
* 获取当前实例
*/
public static AdUnionContext GetInstance()
{
return _AdUnionContext;
}
/*
* 获取当前Activity
*/
public AndroidJavaObject GetActivity()
{
if (null == currentActivity)
{
currentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer")
.GetStatic<AndroidJavaObject>("currentActivity");
}
return currentActivity;
}
/*
* 运行在主UI线程
*/
public void RunOnUIThread(AndroidJavaRunnable runnable)
{
GetActivity().Call("runOnUiThread", runnable);
}
/*
* 获取根节点的布局,可用于添加banner广告,具体业务需要的容器,可自行处理
*/
public AndroidJavaObject GetRootLayout()
{
AndroidJavaClass R = new AndroidJavaClass("android.R$id");
return currentActivity.Call<AndroidJavaObject>("findViewById", R.GetStatic<int>("content"));
}
}
具体使用逻辑
var pc = AdUnionContext.GetInstance().GetRootLayout();
if (ADSMgr.Inst.curView != null)
{
AdUnionContext.GetInstance().RunOnUIThread(new AndroidJavaRunnable(() =>
{
curView.Call("setVisibility", 8);
}));
// pc.Call("removeView", ADSMgr.Inst.curView);
//curView.Call("setVisibility", 8);
}
我在项目当中用到的是:
1、布局中设置控件为android:visibility
2、在程序中可用setVisibility();
3、对应的三个常量值为0、4、8
VISIBLE:0 可见的
INVISIBLE:4 不可见的,但还占着原来的空间
GONE:8 隐藏,不占用原来的布局空间
当用setVisibility();该方法设置控件隐藏或显示时,该方法内对应的取值为int类型,所以可取常量值