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我相信,这一改进对我来说已经涵盖了这一点。