EN

Search
Close this search box.

موستانگ، وحشیِ دوست داشتنی

پاسخ داده شد
-1
0

می خواهیم با پایین کشیدن صفحه ، محتوا رفرش یا بروزرسانی شود!

رفرش کردن صفحه در اندروید - موستانگ

  • شما باید برای ارسال دیدگاه شوید
پاسخ عالی
0
0

برای این کار، از کلاس SwipeRefreshLayout استفاده می کنیم.

فرض کنید یک Webview تعریف کرده ایم که محتوای یک سایت را نمایش دهد. (از این لینک می توانید نحوه استفاده از Webview را آموزش ببینید).

ابتدا در فایل layout ، یک SwipeRefreshLayout را تعریف می کنیم بطوریکه Webview داخل آن قرار گرفته باشد:

 <androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/refresh_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

فایل اکتیویتی مان بدین صورت می شود:

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private String siteUrl = "https://www.mustang.ir";
    private String currentUrl = siteUrl;
    private SwipeRefreshLayout swipeLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        swipeLayout = (SwipeRefreshLayout) findViewById(R.id.refresh_container);

        webView = (WebView) findViewById(R.id.webView);
        webView.loadUrl(siteUrl);
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());

        WebSettings webSettings = webView.getSettings();
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setPluginState(WebSettings.PluginState.ON);


        webView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                findViewById(R.id.progressBar1).setVisibility(View.VISIBLE);
                view.loadUrl(url);
                currentUrl=url;

                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                findViewById(R.id.progressBar1).setVisibility(View.GONE);
                swipeLayout.setRefreshing(false);
                findViewById(R.id.welcome_screen).setVisibility(View.GONE);
            }
        });


        //swipe to refresh
        swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                webView.loadUrl(currentUrl);

            }
        });



    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            //if Back key pressed and webview can navigate to previous page
            webView.goBack();
            // go back to previous page
            return true;
        }
        else
        {
            finish();
            // finish the activity
        }
        return super.onKeyDown(keyCode, event);
    }

دو قسمت از کد بالا مربوط به SwipeRefreshLayout می شود:

  • در تابع setOnRefreshListener تعیین می کنیم که با رفرش شدن صفحه چه اتفاقی بیفتد (در اینجا ما مجدداً صفحه فعلی Webview را لود می کنیم).
  • دقت کنید که پس از لود صفحه (یعنی در تابع onPageFinished ) ، باید آن را از حالت رفرش خارج کنیم (در غیر اینصورت آن دایره چرخان برای همیشه خواهد چرخید).
  • شما باید برای ارسال دیدگاه شوید
نمایش 1 نتیجه
پاسخ شما
اگر قبلاً حساب کاربری دارید با پر کردن فیلد های زیر یا به عنوان مهمان ارسال کنید.
نام*
ایمیل*
وب سایت