我有一项任务是ProgressBar在其上添加带有百分比值的值,以在用户想要预测某些内容时显示一个值。我没有使用,ProgressDialog因为它现在已被弃用。此处,百分比值取决于从请求开始到完成所用的时间。我正在使用Volley从服务器获取数据。
这是我要实现的目标的示例图像:
我已经这样做了
我在警报对话框中实现了一个水平进度条(我使用这种方式是因为进度对话框已被弃用)。我想像这样设置进度条。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_result_prediction, container, false);
predictProgress = (ProgressBar) view.findViewById(R.id.progressbarPredict);
AlertDialog.Builder(view.getContext());
builder.setCancelable(false); // if you want user to wait for some process to finish,
View v = inflater.inflate(R.layout.layout_loading_dialog, null);
builder.setView(v);
final AlertDialog dialog = builder.create();
submitPredictPlant.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.show();
predictProgress.setProgress(25);
predictProgress.setProgress(50);
predictProgress.setProgress(75);
predictProgress.setProgress(100);
dialog.dismiss();
Run Code Online (Sandbox Code Playgroud)
当进度为 100 时,我想关闭对话框。但这会出现类似错误
java.lang.NullPointerException: Attempt …Run Code Online (Sandbox Code Playgroud) 概括 :
使用图1作为参考。
我需要将灰色部分保留在绿色部分下方,以便当绿色减少时,灰色变得可见。但我也想要未覆盖的部分(只是灰色不存在)。导致 2/3 重叠圆。
我正在尝试在 android studio 中创建 2/3 圆(带圆角)作为进度条。我做不到。我希望得到你的帮助。
当前圈子:(图1)
我需要的圈子:
形状:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="ring" android:innerRadiusRatio="2.5" android:useLevel="false"
android:thicknessRatio="12">
<solid android:color="#DDD"/>
</shape>
</item>
<item>
<shape android:shape="ring" android:innerRadiusRatio="2.5" android:useLevel="true"
android:thicknessRatio="12">
<solid android:color="@color/colorAccent"/>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
tools:context=".MainActivity">
<ProgressBar
android:id="@+id/timerProgressBar"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="1:1"
android:indeterminateOnly="false"
android:progressDrawable="@drawable/circle"
android:rotation="-90"
app:layout_constraintBottom_toTopOf="@+id/guidelineBottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guidelineTop"
android:progress="10"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guidelineBottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guidelineTop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.1" /> …Run Code Online (Sandbox Code Playgroud) 我已经尝试了很多方法来实现下面的例子,但我不能让它普遍适用.
我已经完成了以下屏幕的构建.我已经对齐右中心和中心垂直.并给予一定的余地.

我的问题是我必须为此添加onpressed状态,我需要添加循环进度,如下面的截图.

我不知道如何在那个特定的地方实施循环进展.我尝试从左中心垂直实现进度并给出一些余量并修复它.但是当我在大屏幕上安装时,校准会出错.所以我尝试从右侧中心垂直实现它,并为该圆圈提供边距.但即使这样也行不通.
请别人帮帮我,如何解决这个问题:(
我被这个打了一个多星期了:(
编辑: XML代码:
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/circular_progress"
android:layout_marginRight="185dp"
android:progress="50" />
<ImageButton
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@null"
android:src="@drawable/tap_to_capture" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="@string/tap_to_cap"
android:textSize="12sp"
android:textColor="#006666"
android:layout_marginRight="25dp"
android:textAppearance="?android:attr/textAppearanceSmall" />
Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题,我无法弄清楚,需要一些其他的眼睛来看.我已经动态创建了一个ProgressBar视图,除了我的Motorola Xoom之外,它还适用于各种设备和AVD.
所有屏幕截图都有它们之上的设备名称,并且从它通过ADT获得的任何内容减少了大约50%,除了Nexus 10,因为它的超高分辨率是25%.添加了ProgressBar的红色背景以用于调试目的,以显示视图在那里并且可见.我添加了左边和顶部填充以使其居中.
下面的屏幕截图从Xoom开始,它不起作用,其次是Nexus 10(AVD),Nexus 7,Galaxy Nexus和HTC Droid Incredible,展示它在其他地方工作.拍摄后我会添加我的代码.
进度条不工作!但请注意视图是可见的(我们看到红色背景).

所有这些设备上都可以看到圆圈进度.
模拟三星Nexus 10

华硕Nexus 7

三星Galaxy Nexus

HTC Droid令人难以置信

这将创建包含它的父视图:
RelativeLayout discoverListLayout = new RelativeLayout(mContext);
discoverListLayout.setLayoutParams(params);
discoverListLayout.addView(mDiscoverList);
Run Code Online (Sandbox Code Playgroud)
mDiscoverList是最终显示的列表视图.ProgressBar加载在它之上,直到加载列表.
现在创建并设置进度条.我在onGlobalLayout上设置了填充,因为否则对象的宽度和高度为0.
mDiscoverLoading = new ProgressBar(mContext);
params.height = ViewPager.LayoutParams.WRAP_CONTENT;
params.width = ViewPager.LayoutParams.WRAP_CONTENT;
mDiscoverLoading.setLayoutParams(params);
mDiscoverLoading.setIndeterminate(true);
discoverListLayout.addView(mDiscoverLoading);
ViewTreeObserver vto = mDiscoverLoading.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
if (mDiscoverList.getCount() > 0) {
processLoadedList(true);
} else {
mDiscoverLoading.setBackgroundColor(getActivity().getResources().getColor(R.color.stitchoid_red));
mDiscoverLoading.setPadding((getView().getWidth() / 2) - (mDiscoverLoading.getWidth() / 2),(getView().getHeight() / 2) …Run Code Online (Sandbox Code Playgroud) 我正在使用
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setSupportProgressBarIndeterminateVisibility(true);
setSupportProgressBarIndeterminateVisibility(false);
Run Code Online (Sandbox Code Playgroud)
启用/禁用不确定的进度条.使用ActionBarSherlock,它适用于所有设备,但在与ActionBarCompat一起使用时,它仅适用于2.3以上的Android版本.
我想过使用WindowCompat而不是Window,但是WindowCompat没有使用FEATURE_INDETERMINATE_PROGRESS标志.
我想实现progressBar,如下图所示.
现在,我从片段类中获取了AsyncTask,我使用AsyncTask来加载数据,现在我已经实现了progressBar对话框,但我想摆脱它,因为我想做一个更好的用户体验.
我在onPreExecute()方法中显示了ProgressBar对话框,然后将其解除onPostExecute.
那么,我如何实现后台进度条,如下图所示

嗨,大家好今天我想尝试做我的自定义进度条,为此我创建了一个spinner_inner和一个spinner_outer,但我的内部大小是大的,并重叠外部.

我的活动
<ProgressBar
style="@style/Spinner"
android:layout_width="100dp"
android:layout_height="100dp"
android:indeterminateDrawable="@drawable/loading" />
<TextView
android:id="@+id/login_status_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:fontFamily="sans-serif-light"
android:text="@string/login_progress_signing_in"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我的风格
<style name="Spinner">
<item name="android:indeterminate">true</item>
<item name="android:indeterminateDrawable">@drawable/spinner_outer</item>
<item name="android:indeterminateDuration">2000</item>
<item name="android:indeterminateOnly">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我的xml
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<item android:drawable="@drawable/spinner_inner"/>
<item>
<rotate
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >
<bitmap
android:antialias="true"
android:filter="true"
android:src="@drawable/spinner_outer" />
</rotate>
</item>
Run Code Online (Sandbox Code Playgroud)
我已经找到了答案,但没有成功
如果加载显示错误消息需要很长时间,我想暂停我的webview.我正在使用,setWebViewClient因为我需要使用public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error).
我一直在环顾四周,看到我可以使用这种方法onProgressChanged(WebView view, int newProgress).现在我不能使用这种方法setWebViewClient,也无法弄清楚如何解决这个问题.我的另一个问题是,一旦页面加载,进度条永远不会消失,我也无法在方法中添加断点public void onPageFinished(WebView view, String url).
Web视图设置方法:
public void WebViewSettings(){
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.canGoBack();
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals(urlString)) {
// This is my web site, so do not override; let my WebView load the page
return false;
}
// Otherwise, the link is not for …Run Code Online (Sandbox Code Playgroud) 我有一个自定义进度栏,如下所示:
这是我用来创建它的.xml代码:
background_drawable.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="@dimen/progress_bar_radial_inner_radius"
android:thickness="@dimen/progress_bar_radial_thickness"
android:shape="ring"
android:useLevel="false" >
<solid android:color="@color/main_color_alpha"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
progress_drawable.xml
<?xml version="1.0" encoding="UTF-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="270"
android:toDegrees="270">
<shape
android:innerRadius="@dimen/progress_bar_radial_inner_radius"
android:thickness="@dimen/progress_bar_radial_thickness"
android:shape="ring" >
<solid android:color="@color/main_color"/>
</shape>
</rotate>
Run Code Online (Sandbox Code Playgroud)
我想要得到的是我用来显示进度的圆角。看起来像这样的东西:
有人对如何实现这一目标有任何想法吗?
android drawable android-progressbar xml-drawable android-drawable
android ×9
java ×2
progress-bar ×2
android-gui ×1
background ×1
drawable ×1
webview ×1
xml-drawable ×1