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

时间:2014-08-02 13:28:18

标签: android performance android-fragments loading lag

我目前正在编写一个基于与我的服务器通信的应用程序。 现在,当用户尝试登录时,我试图为加载圈设置动画。我的问题是 - 它的动画并不是非常流畅。我相信它是因为它在主线程上运行,与其他"重型操作相同"。

以下是一些代码:

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(我可以在做东西时显示ProgressBar)。因为我使用片段,所以我无法保持它总是被隐藏......因为它不在那里。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用帧动画OR创建自己的进度条 如果你想要带有线程的复杂进度条,可以使用surfaceView或glSurfaceView