文章目录 MainActivity 继承Activity的setContentView流程 1) MainActivity 继承至 Activity 1.1) Activity#setContentView...PhoneWindow // 这里调用的是 PhoneWindow的setContentView getWindow().setContentView(layoutResID);...调用的是AppCompatDelegateImpl实现类中的 setContentView @Override public void setContentView(@LayoutRes int layoutResID...#setContentView @Override public void setContentView(int resId) { // 确保ActionBar的特有UI结构构建完毕..., null, false); linear_layout.addView(view); } } 正常的: 不带有布局参数的: 发布者:全栈程序员栈长,转载请注明出处
安卓在4.0之前对话框都是模态的,之后就改成非模态了。 ...解决方法吗,使用progressdialog.setCancelable(false)也行,但是这样就不能响应返回键的事件了,最好的方法是调用progressdialog.setCanceledOnTouchOutside...(false),这样一切都和4.0之前的一样 下面是个例子: ProgressDialog dialog = new ProgressDialog(MainActivity.this); dialog.setTitle...; //解决方法吗,使用progressdialog.setCancelable(false)也行, //但是这样就不能响应返回键的事件了, //最好的方法是调用progressdialog.setCanceledOnTouchOutside...(false),这样一切都和4.0之前的一样 dialog.setCanceledOnTouchOutside(false); dialog.show();
ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialog的静态方法Dialog.show()。...boolean cancelable 设置是否进度条是可以取消的 ProgressDialog dialog4 = ProgressDialog.show(this, "提示", "正在登陆中",...的样式有两种,一种是圆形不明确状态,一种是水平进度条状态 第一种方式:圆形进度条 final ProgressDialog dialog = new ProgressDialog(this);...dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条 dialog.setCancelable...第二种方式:水平进度条 // 进度条还有二级进度条的那种形式,这里就不演示了 final ProgressDialog dialog = new ProgressDialog(this
大家好,又见面了,我是你们的朋友全栈君。 ...使用背景:项目中需要使用几个机器学习模型,由于加载很缓慢,所以考虑用ProgressDialog来进行提示,预测结束后dialog自动消失。 ...效果如下: 1.声明Handler和ProgressDialog public ProgressDialog progressDialog; public Handler handler = null...; 2.点击事件 query.setOnClickListener(v -> { progressDialog = new ProgressDialog(AdaBoostActivity.this...); progressDialog.setTitle("提示"); progressDialog.setMessage("正在加载..."); progressDialog.setIcon
大家好,又见面了,我是你们的朋友全栈君。...最近工作中需要用到progressDialog,可是系统自带的黑色progressDialog又是其丑无比,无奈只能自己自定义了,在网上查看别人的例子,并自己整理了一份Demo: 先上图: MyProgressDialog...的过程,采用了线程的sleep,运行5秒后关闭ProgressDialog,上代码: package com.example.myprogressdialog_zzw; import android.app.Activity...android.widget.Button; import android.widget.Toast; /** * @author 鹭岛猥琐男 * 采用线程的的sleep模拟下载结束后关闭progressDialog...Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView
Android开发的同学们对setContentView肯定都不陌生,但凡写到Activity,都离不开这个函数,今天我们就来看看它内部的实现吧! 备注:本文基于Android 8.1.0版本。...1、Activity 与 AppCompatActivity的区别 当我们在老版本Android SDK开发的时候新建的Project的默认继承的是Activity,而在5.0之后默认继承的就是AppCompatActivity...2、setContentView AppCompatActivity中的setContentView也非常简洁,可以看出来需要去代理类中继续查看代码。...5、总结 setContentView的过程就是通过PhoneWindow创建DecorView,然后创建SubDecor,最终将传递进来的布局add进来。...这样大家也更容易明白为什么通过一些性能分析工具查看布局层次及数量的时候总是比我们自己写的Layout多,也更容易明白对Activity设置View的函数被命名为setContentView。
我们在Activity创建的时候,都用调用setContentView()函数来设置界面,下面我们通过源码来分析setContentView()的流程。...* * @see #setContentView(android.view.View) * @see #setContentView(android.view.View,...我们再次点击setContentView进去查看发现是一个Window的抽象方法,所以我们要找到对应的实现类,我们点击getWindow()进去查看最终得到: mWindow = new PhoneWindow...setContentView其实就是把那个View加入到一个id为com.android.internal.R.id.content的FrameLayout里面,而这个id为com.android.internal.R.id.content...在这基础上我们看AppCompatActivity的setContentView函数: @Override public void setContentView(@LayoutRes int
源码分析: 说到Activity的setContentView,咱们直接找到一个Activity中的setContentView点进去看看!...下面的FrameLayout即为我们的ContentView,所谓的setContentView就是往这个FrameLayout里面添加我们的布局View的!...ViewGroup contentParent =(ViewGroup)findViewById(ID_ANDROID_CONTENT); //......return contentParent; } } ID_ANDROID_CONTENT就是R.id.content,就是这个FrameLayout...上面,我们在点击了重填按钮后,我们的setContentView使用的是老大,即setContentView(int id),回想刚才我们分析的源码,老大是通过反射拿到我们的view,而每次反射拿到的view
本系列主要是探讨View的绘制过程及部分相关的实现机制的源码分析 setContentView分析 相关关系 Activity中有Window成员 实例化为PhoneWindow PhoneWindow...工具分析一下 PhoneWindow的setContentView分析 Window类的setContentView方法 而Window的setContentView方法是抽象的 所以查看PhoneWindow...的setContentView() setContentView方法 // This is the view in which the window contents are placed....mContentRoot = (ViewGroup) in; ViewGroup contentParent = (ViewGroup)findViewById(ID_ANDROID_CONTENT...说明在Activity的布局改动时 (setContentView或者addContentView 方法执行完毕后会调用改方法) 所以各种View的findViewById方法什么的可以放在这里 setContentView
Activity的setContentView public void setContentView(int layoutResID) { getWindow().setContentView...setContentView 这里的Window的实现类是PhoneWindow(package com.android.internal.policy.impl;),我们直接看它的实现: @Override...至于features,除了theme中设置的,我们也可以在Activity的onCreate的setContentView之前进行requestFeature,也解释了,为什么需要在setContentView...再贴一次PhoneWindow的setContentView @Override public void setContentView(int layoutResID) {...到此,我们的setContentView就分析完成了,我们可以回顾一下: 首先初始化mDecor,即DecorView为FrameLayout的子类。就是我们整个窗口的根视图了。
); 设置进度条是否显示进度 setMax(MAX_PROGRESS); 设置进度条的最大值 setMessage("..."); 设置对话框执行内容 setProgressStyle(ProgressDialog.STYLE_HORIZONTAL...) 设置对话框进度条风格 setProgress() 设置 进度条内的进度值(当前) 效果: 代码实现: 主要是两种类型 1.带耗时操作 showIndeterminate 2.不带耗时操作 showProgress...public class MainActivity extends Activity { final static int MAX_PROGRESS = 100; //虚拟 填充长度为100的数组...; //创建一个负责更新进度的Handler Handler mHandler = new Handler(){ @Override public void...void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView
原本Android的ProgressDialog用法很简单,两三行代码就搞定了。但是,但是,但是,用在无人值守的自助终端上,总是把之前隐藏掉的导航栏和状态栏显示出来。这是不可接受的。...项目中用到一个Android的ProgressDialog显示操作的进度条,机器要求是屏蔽或隐藏掉导航栏和虚拟按键的显示。...在Activity中,虽然在setContentView(R.layout.activity_main)之前调用隐藏状态栏的代码,但是一旦Activity跳转,就又出来了, 解决办法是在隐藏状态栏逻辑代码的下面...直接贴出来代码: package com.newcapec.smartorder.dialog; import android.app.ProgressDialog; import android.content.Context...,支持调整进度条的透明度和长宽高,显示位置等属性: package com.newcapec.smartorder.utils; import android.app.ProgressDialog;
前言 小伙伴们,在上文中我们介绍了Android视图组件AlertDialog,本文我们继续盘点,介绍一下视图控件的ProgressDialog。...特别注意:ProgressDialog在Android API级别26中已被废弃;取而代之的是ProgressBar和自定义布局来实现进度提示和等待效果 一 ProgressDialog基本介绍 ProgressDialog...是是Android平台上的一个对话框,用于显示进度信息或操作的等待状态。...二 ProgressDialog使用方法 ProgressDialog已在Android API级别26被弃用,推荐使用ProgressBar和自定义布局来代替。...若需要在ProgressDialog中显示自定义布局,可以通过setContentView(View view)方法设置自定义布局。
2、难点 假设当前Activity在onCreate中启动一个异步线程去夹在数据,当然为了给用户一个很好的体验,会有一个ProgressDialog,当数据加载完成,ProgressDialog消失,设置数据...b)关闭ProgressDialog的代码在线程的onPostExecutez中,但是上个线程如果已经杀死,无法关闭之前ProgressDialog。...c)谷歌的官方不建议使用ProgressDialog,这里我们会使用官方推荐的DialogFragment来创建我的加载框,如果你不了解:请看 Android 官方推荐 : DialogFragment...当Android系统因为配置变化关闭你的Activity的时候,你的Activity中被标识保持的fragments不会被销毁。...Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView
Adding checkboxes and radio buttons 增加单选框和复选框 要创建一个带有多选列表或者单选列表的对话框, 使用setMultiChoiceItems()和setSingleChoiceItems...主Activity更新ProgressDialog.package com.example.progressdialog; import android.app.Activity; import...android.app.Dialog; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler...定义好布局后,将根View对象或者布局资源ID传给setContentView(View)....); 在初始化Dialog之后,使用setContentView(int),将布局资源id传给它。
最近呢一直进行Android项目的开发。开发过程中发现,以前的好多知识点都想不起来了,都得先去Google一下,进展缓慢,耗时又耗力,所以决定将开发中的知识点慢慢总结下来,以便日后查验。...今天呢,阿Q就给大家讲一下项目中用到的加载框吧! 首先呢,先讲一下阿Q最先想到的ProgressDialog的用法吧,查阅Android API发现,此类在API 26中已经被弃用了。...ProgressDialog的使用方法有两种,一种是直接New ProgressDialog,一种是调用ProgressDialog的静态方法show。接下来就让代码说话吧。...的进度条是否不明确;这个属性对于ProgressDailog默认的转轮模式没有实际意义, 默认下设置为true,它仅仅对带有ProgressBar的Dialog有作用。...) //设置progress发生变化时的进度指示条的背景图 setProgressDrawable() 第二种方式: final ProgressDialog pd2 = ProgressDialog.show
一、Android当中的多线程 在Android当中,当一个应用程序的组件启动的时候,并且没有其他的应用程序组件在运行时,Android系统就会为该应用程序组件开辟一个新的线程来执行。...①下载图片时,弹出一个ProgressDialog,但是不显示实时进度 我们来看看布局文件: android="http://schemas.android.com...void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView...②带有进度条更新的下载一张网络图片 下面这个代码示例,将会在下载图片的时候,显示进度条的更新,配置文件都不变,我们来看看Activity代码: public class MainActivity extends...void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView
:String路径 添加访问网络的权限android.permission.INTERNET 调用WebView对象的getSettings()方法,获取到WebSettings设置对象 调用WebSettings...对象的canGoForward()方法,判断是否能前进,调用goForward()方法前进 页面loading 获取ProgressDialog对象,new出来,参数:上下文 调用ProgressDialog...重写onPageStarted()方法和onPageFinshed()方法 在onPageStarted()方法内 调用ProgressDialog对象的show()方法 在onPageFinshed(...)方法内 调用ProgressDialog对象的dismiss()方法 package com.tsh.mywebview; import android.app.Activity; import android.app.ProgressDialog...super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView
1.直接看下setContentVIew源码 activity.java public void setContentView(@LayoutRes int layoutResID) { getWindow...().setContentView(layoutResID);// initWindowDecorActionBar(); } 1.在activity.java源码中我们可以看到 mWindow...= new PhoneWindow(this, window, activityConfigCallback);所以我们直接看PhoneWindow源码中的setContentView。...PhoneWindow.java public void setContentView(int layoutResID) { // Note: FEATURE_CONTENT_TRANSITIONS...2.这里的root就是decorView,root.addview(),实际是root的父类frameLayout的父类viewGroup来具体实现。
重新运行程序 1.7 ProgressDialog ProgressDialog和AlertDialog有点类似,都可以在界面上弹出一个对话框,都能够屏蔽掉其他控件的交互能力。...不同的是,ProgressDialog会在对话框中显示一个进度条,一般用于表示当前操作比较耗时,让用户耐心地等待。..."This is ProgressDialog"); progressDialog.setMessage("Loading..."); progressDialog.setCancelable...注意,如果在setCancelable() 中传入了false ,表示ProgressDialog是不能通过Back键取消掉的,这时你就一定要在代码中做好控制,当数据加载完成后必须要调用ProgressDialog...的dismiss() 方法来关闭对话框,否则ProgressDialog将会一直存在。
领取专属 10元无门槛券
手把手带您无忧上云