Android Studio project之module移除导致工具编译错误
Android Studio project之module移除导致工具编译错误 问题现象:一般提示为 Gradle failed: xxxxxx already disposed 解决方案: 第一步:Build -> Clean Project 第二步:File -> Invalidate Caches / Restart
Android基于Window.ID_ANDROID_CONTENT给定id添加子View
这一技术特点在一些视频播放器中比较有用。
例如代码:
package zhangphil.demo;
import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.FrameLayout;
public class MainActivity extends AppCompatActivity {
private static final int VIEW_ID = 0xf0a01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
int w = 500;
int h = 500;
int gap = 100;
addView(w, h, getResources().getColor(android.R.color.holo_orange_light));
addView(w - gap, h - gap, getResources().getColor(android.R.color.holo_green_light));
addView(w - gap * 2, h - gap * 2, getResources().getColor(android.R.color.holo_red_light));
}
private void addView(int w, int h, int color) {
ViewGroup vp = (ViewGroup) (scanForActivity(this))//.getWindow().getDecorView();
.findViewById(Window.ID_ANDROID_CONTENT);
View old = vp.findViewById(VIEW_ID);
if (old != null) {
vp.removeView(old);
}
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(w, h, Gravity.CENTER);
FrameLayout newView = new FrameLayout(this);
newView.setBackgroundColor(color);
newView.setId(VIEW_ID);
vp.addView(newView, params);
}
public static Activity scanForActivity(Context context) {
if (context == null) return null;
if (context instanceof Activity) {
return (Activity) context;
} else if (context instanceof ContextWrapper) {
return scanForActivity(((ContextWrapper) context).getBaseContext());
}
return null;
}
}
运行结果:
如果在addView里面把这段代码注释掉:
// View old = vp.findViewById(VIEW_ID);
// if (old != null) {
// vp.removeView(old);
// }
运行结果。
这一特性如果巧妙加以利用可制作成特殊视频view的呈现。
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。
Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。