Android中的ProgressBar-如何使用片段和线程使其更平滑?

Android中的ProgressBar-如何使用片段和线程使其更平滑?,android,performance,android-fragments,loading,lag,Android,Performance,Android Fragments,Loading,Lag,我目前正在编写一个基于与服务器通信的应用程序。 现在我正试图在用户尝试登录时设置加载循环的动画。我的问题是,它的动画不是很流畅。我相信这是因为它运行在主线程上,与其他繁重的操作一样 下面是一些代码: public void headClick(View v){ showLoadingFragment(); powerLogin(); } public void showLoadingFragment(){ FragmentManager fragmentManager

我目前正在编写一个基于与服务器通信的应用程序。 现在我正试图在用户尝试登录时设置加载循环的动画。我的问题是,它的动画不是很流畅。我相信这是因为它运行在主线程上,与其他繁重的操作一样

下面是一些代码:

public void headClick(View v){
    showLoadingFragment();
    powerLogin();
}

public void showLoadingFragment(){
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    LoadingFragment loadingFragment = new LoadingFragment();
    fragmentTransaction.replace(R.id.logsign_content, loadingFragment);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();
}
我知道,这有点。。。特别的通常情况下,我会在这个屏幕上替换片段,当前唯一可以自由显示这个进度条的地方是由片段填充的。我的想法是隐藏所有用户选项按钮、文本字段和全部,并在其中放置一个带圆圈的清晰片段

这是目前的片段实现,它是标准的:

public class LoadingFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View loadingFragment = inflater.inflate(R.layout.fragment_main_loading, container, false);

    return loadingFragment;
}


}
以及用户界面:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<ProgressBar
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:id="@+id/progressBar" />

</RelativeLayout>
我搜索了类似的问题,但是解决方案并不真正适合我的方法。例如,我正在使用改装库进行通信,而不是使用经典的AsynchTask co,因为我在做事情时无法显示ProgressBar。因为我使用碎片,我不能一直隐藏它。。。因为它不在那里


有什么想法吗?

您可以使用帧动画或动画制作自己的进度条
如果你想要复杂的进度条和线程,你可以使用surfaceView或glSurfaceView

你能详细说明你所说的繁重操作是什么意思吗?@Salem最坏的情况是这样的:检查用户是否登录否->将用户登录到服务器->下载用户数据,例如排名、姓名、,等等->保存所有内容以备将来使用->使用谷歌地图视图启动主要活动。这绝对不是数据处理。。。但由于某种原因,这个循环会结巴,不是吗?如果你使用HTTP调用,它们需要在主线程之外进行。@Salem我相信,这一改进对我来说已经涵盖了这一点。