如何在应用中重新创建网站内容?

时间:2016-06-30 13:29:35

标签: java android xml android-studio

经过几个小时的搜索并试图独自完成,我担心我已经没有选择,我不得不寻求帮助。 我想从this制作一切 即使用户处于离线状态,也可在应用中使用该页面。 我试着复制那些小图片并将它们用作按钮但是我无法将这些数字放在它们旁边。很多人告诉我使用WebView,但据我所知,它需要访问互联网,这不是我的目标。

如果可以,请帮忙。提前谢谢!

3 个答案:

答案 0 :(得分:1)

如果是比Android更熟悉的Web技术,您可以构建混合应用程序。 Ionic就是其中之一,用于开发网络应用程序。您需要知道的只是网络技术。

答案 1 :(得分:1)

您的问题的一个可能解决方案是完全下载页面的源文件,然后使用方法

 webView.loadDataWithBaseURL(null, yourfullHTMLwithCSSandJShere, "text/html", "UTF-8", null);

所以你只需将网站的源代码作为字符串参数提供给webview

答案 2 :(得分:1)

将您的.html页面复制到android项目的assets文件夹中,并使用给定的代码加载页面表单资源文件夹。

import android.app.FragmentManager;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private ProgressDialog loading;


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

        //code for ads
        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

        //casting view
        webView = (WebView) findViewById(R.id.webView);


        //load URL in webView
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("file:///android_asset/hindi.html");

        //start progress dialog
        loading = new ProgressDialog(MainActivity.this);
        loading.setMessage("Loading...");
        loading.show();

        //webView client
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                loading.dismiss();
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(MainActivity.this, "Error:" + description, Toast.LENGTH_SHORT).show();
            }
        });


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.option_menus, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1:
                webView.loadUrl("file:///android_asset/hindi.html");
                return true;
            case R.id.item2:
                webView.loadUrl("file:///android_asset/english.html");
                return true;

            case R.id.item3:
                FragmentManager fm = getFragmentManager();
                FragmentDialog dialogFragment = new FragmentDialog();
                dialogFragment.setCancelable(false);
                dialogFragment.show(fm, "Sample FragmentDialog");
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }


    //save and restore state of application
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        // Save UI state changes to the savedInstanceState.
        // This bundle will be passed to onCreate if the process is
        // killed and restarted.
        // etc.

        savedInstanceState.putLong("elapsedTime", 1);

    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        // Restore UI state from the savedInstanceState.
        // This bundle has also been passed to onCreate.

        long elapsedTime = savedInstanceState.getLong("elapsedTime");
    }
}

我在OptionsMenu中加载网址,您可以随意加载网址,并且不需要互联网。