عملیات Real Time CRUD با استفاده از فایربیس گوگل در لاراول
عملیات Real Time CRUD با استفاده از فایربیس گوگل در لاراول
2019-05-11
استفاده از کتابخانه SweetAlert2 با AJAX در لاراول
کتابخانه SweetAlert2 استفاده از SweetAlert2 با AJAX در لاراول
2019-05-18

لودینگ هنگام‌ لود شدن وب ویو + حذف اسکرول افقی اضافی از WebView

لودینگ هنگام‌ لود شدن وب ویو + حذف اسکرول افقی اضافی از WebView

لودینگ هنگام‌ لود شدن وب ویو + حذف اسکرول افقی اضافی از WebView

لودینگ هنگام‌ لود شدن صفحات وب در وب ویو (WebView) ، حذف اسکرول افقی از وب ویو (WebView) ، یک ویو بسیار پرکاربرد در اندروید وب ویو WebView هستش که مشخصا برای نمایش صفحات وب در قالب اپلیکیشن استفاده میشه.
کار باهاش بشدت سادس فقط کافیه یه WebView به لایه اضافه کنید

لودینگ در زمان لود شدن WebView و حذف اسکرول افقی اضافی از وب ویو (WebView)

کار با وب ویو بشدت سادس فقط کافیه یه WebView به لایه اضافه کنید

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
    android:scrollbars="vertical"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/webivew"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

و آدرس url که میخواید رو با دستور زیر بهش بدید

        webView.loadUrl("https://tejariapp.com/");

حالا میخوایم چندتا دستور کاربردی برای وب ویو بهتون بگیم پس با ما همراه باشید 🙂
با این دستورات میتونیم جاوا اسکریپت رو برای وب ویو فعال کنیم

  webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new AppWebViewClients());
        webView.addJavascriptInterface(new WebAppInterface(), "Android");

لودینگ در زمان لود شدن WebView

با این دستور میتونیم اسکرول های افقی اضافی رو برا وب ویو حذف کنیم

webView.setHorizontalScrollBarEnabled(false);

لودینگ هنگام‌ لود شدن وب ویو

با این دستور هم میتونیم برای وب ویو لودینگ بذاریم برای زمان هایی که صفحه هنوز لود نشده و زمانی که کامل لود شد لودینگ دستی ما از بین بره

webView.setOnTouchListener(new View.OnTouchListener() {
            float m_downX;

            public boolean onTouch(View v, MotionEvent event) {

                if (event.getPointerCount() > 1) {
                    //Multi touch detected
                    return true;
                }

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN: {
                        // save the x
                        m_downX = event.getX();
                        break;
                    }
                    case MotionEvent.ACTION_MOVE:
                    case MotionEvent.ACTION_CANCEL:
                    case MotionEvent.ACTION_UP: {
                        // set x so that it doesn't move
                        event.setLocation(m_downX, event.getY());
                        break;
                    }

                }
                return false;
            }
        });

در نهایت اکتیویتی بدین صورت خواهد بود

public class MainActivity extends AppCompatActivity {

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

        createNotif();

        WebView webView = findViewById(R.id.webivew);

        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new AppWebViewClients());
        webView.addJavascriptInterface(new WebAppInterface(), "Android");
        webView.loadUrl("https://tejariapp.com/");

        webView.setHorizontalScrollBarEnabled(false);
        webView.setOnTouchListener(new View.OnTouchListener() {
            float m_downX;

            public boolean onTouch(View v, MotionEvent event) {

                if (event.getPointerCount() > 1) {
                    //Multi touch detected
                    return true;
                }

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN: {
                        // save the x
                        m_downX = event.getX();
                        break;
                    }
                    case MotionEvent.ACTION_MOVE:
                    case MotionEvent.ACTION_CANCEL:
                    case MotionEvent.ACTION_UP: {
                        // set x so that it doesn't move
                        event.setLocation(m_downX, event.getY());
                        break;
                    }

                }
                return false;
            }
        });
    }

    public class AppWebViewClients extends WebViewClient {

        private ProgressDialog progressDialog;

        AppWebViewClients() {

        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);

            if (progressDialog == null) {
                // in standard case YourActivity.this
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (progressDialog == null) {
                // in standard case YourActivity.this
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {

            super.onPageFinished(view, url);
            try {

                if (progressDialog.isShowing()) {

                    progressDialog.dismiss();

                    progressDialog = null;

                }

            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }
    }

    public class WebAppInterface {

        WebAppInterface() {

        }

        @JavascriptInterface
        public void showToast(String isSuccess, String amount) {

            finish();
        }
    }

    private void createNotif() {
        NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

        Uri sound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getApplicationContext().getPackageName() + "/" + R.raw.noti_ring);

        NotificationCompat.Builder nb = new NotificationCompat.Builder(this, getString(R.string.app_name));

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel mChannel = new NotificationChannel(getString(R.string.app_name) + "1-2-3-4-5",
                    getString(R.string.app_name),
                    NotificationManager.IMPORTANCE_HIGH);

            AudioAttributes attributes = new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                    .build();

            // Configure the notification channel.
//            mChannel.setDescription("this is message");
            mChannel.enableLights(true);
            mChannel.enableVibration(true);
            mChannel.setSound(sound, attributes); // This is IMPORTANT

            mNotificationManager.createNotificationChannel(mChannel);

            nb.setChannelId(getString(R.string.app_name) + "1-2-3-4-5");
        } else {
            nb.setSound(sound);
        }

        nb.setSmallIcon(R.drawable.ic_launcher_background);
        nb.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_background));
        nb.setContentTitle("title");
        nb.setContentText("message");
        nb.setStyle(new NotificationCompat.BigTextStyle().bigText("message"));
        nb.setAutoCancel(true);
        nb.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000, 1000, 1000});
        nb.setLights(Color.GREEN, 3000, 3000);
        //nb.setDefaults(Notification.DEFAULT_ALL);
        nb.setPriority(Notification.PRIORITY_HIGH);

        try {
            mNotificationManager.notify(0, nb.build());
        } catch (Exception e) {
        }
    }
}
 لودینگ هنگام‌ لود شدن صفحات وب در وب ویو + حذف اسکرول افقی اضافی از WebView
لودینگ در زمان لود شدن صفحات وب در وب ویو

امیدوارم این آموزش برای شما مفید بوده باشه…

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *