简单的天气预报软件

版权声明:禁止转载,版权所有 https://blog.csdn.net/weixin_40281464/article/details/80100407

准备好所需布局:


全局运用线性布局为整体,上半部分城市选择运用HorizontalScrollView组件实现横向下拉的功能,

在其之中,添加线性布局,排列方向为横向展示,网页显示部分运用WebView组件显示。



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    tools:context="com.example.yls.demoa.MainActivity">

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_gz"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="广州" />

            <Button
                android:id="@+id/btn_sh"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="上海" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="北京" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="天津" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="厦门" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="青岛" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="澳门" />
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="香港" />
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="珠海" />
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="湖口" />

        </LinearLayout>
    </HorizontalScrollView>

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>





声明及获取组件

简单的组件绑定方法,Android开发者每天写代码都需要做的事情



public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private WebView webView;
    private Button gz;
    private Button sh;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initViews();
}
private void initViews() {
        gz = findViewById(R.id.btn_gz);
        sh = findViewById(R.id.btn_sh);
        webView = findViewById(R.id.webview);//获取webview组建
    }





实现点击事件

MainActivity需实现OnClickListener接口,复写OnClick方法根据点击按钮的id来识别当前操作,

然后对web View组件进行设定,通过getSetting方法等一系列代码设置(下文代码有注释)

网址来自中国天气网(百度搜索进入中国天气网,复制当前页面的网络链接)获取各个城市所不同的

网页来获取各个城市的天气情况


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private WebView webView;
    private Button gz;
    private Button sh;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initViews();

        webView.getSettings().setJavaScriptEnabled(true);//设置js可用
        webView.setWebChromeClient(new WebChromeClient());//处理js对话框
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("http://m.weather.com.cn/mweather/101010100.shtml");

        gz.setOnClickListener(this);
        sh.setOnClickListener(this);
    }

    private void initViews() {
        gz = findViewById(R.id.btn_gz);
        sh = findViewById(R.id.btn_sh);
        webView = findViewById(R.id.webview);//获取webview组建
    }

    private void openUrl(String id) {
        webView.loadUrl("http://m.weather.com.cn/mweather/"+id+".shtml");
    }


    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_gz:
                openUrl("101280101");
                break;
            case R.id.btn_sh:
                openUrl("101020100");
                break;
        }
    }





设置网络权限



有使用网络请求需要联网的操作都需要在Manifest中设置网络权限,减少不必要的麻烦




<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yls.demoa">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="天气预报"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>





在模拟器中运行软件:


这样子在软件就可以随意的使用天气预报功能了,本软件只是通过外部网站来获取资源







如上图显示,简单的天气应用小软件就完成啦!

猜你喜欢

转载自blog.csdn.net/weixin_40281464/article/details/80100407