android edittext 输入 模糊查询_Android天气查询页面设计

7e9bc524854fcfdb246835ac08e22c38.png

a14a4eca2ffa75fa9b325137010f7985.png

今天介绍一个Android天气界面

通过Spinner选取城市之后获取天气

MainActivity.java

import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;

import com.example.dell.shoppingmall.R;
import com.example.dell.shoppingmall.View.MainActivity;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class WeatherActivity extends AppCompatActivity {
    private TextView textView1;
    private TextView textView2;
    private TextView textView3;
    private TextView textView4;
    private EditText editText;
    private Spinner spinner;
    private String city;
    private String[] spinnerArray;
    private Button button;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_weather);
        new Thread(new MyHttpRequest()).start();
        ImageView imageView=(ImageView)findViewById(R.id.weather_bg);
        String url="http://img8.zol.com.cn/bbs/upload/23932/23931932.jpg";

        //动态引图
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader imageLoader=ImageLoader.getInstance();
        imageLoader.init(config);
        imageLoader.displayImage(url,imageView);

        //搜索框
        editText=(EditText)findViewById(R.id.weather_et);
        button=(Button)findViewById(R.id.wb);

        spinner=(Spinner)findViewById(R.id.weather_sp);
        spinner.setVisibility(View.INVISIBLE);

        //获取文本框,并连接网络数据
        textView1=(TextView)findViewById(R.id.weather_tv1);
        textView2=(TextView)findViewById(R.id.weather_tv2);
        textView3=(TextView)findViewById(R.id.weather_tv3);
        textView4=(TextView)findViewById(R.id.weather_tv4);

    }
    private class MyHttpRequest implements Runnable{
        @Override
        public void run() {
           try {
                //准备请求的地址
                URL url=new URL("http://v.juhe.cn/weather/index?format=2&key=a95f4761381587458485a997e442a915&cityname=" + URLEncoder.encode(city,"UTF-8"));
             //   URL url=new URL("http://v.juhe.cn/weather/index?format=2&cityname="+ URLEncoder.encode(city,"UTF-8")+"&key=a95f4761381587458485a997e442a915");
                //得到HttpURLConnection对象
                HttpURLConnection connection=(HttpURLConnection)url.openConnection();
                //设置HTTP请求属性
                connection.setConnectTimeout(100000);//超过这个时间后断开连接(单位是毫秒)
                connection.setRequestMethod("GET");//设置HTTP请求方法
                connection.setDoInput(true);//是否向服务器进行数据输入
                connection.setDoOutput(true);//是否从服务器获得数据
                connection.connect();//发出请求
                //如果响应码不是500的错误,获取数据
                if(connection.getResponseCode()!=HttpURLConnection.HTTP_BAD_REQUEST){
                    BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(connection.getInputStream()));//获取输入流,读取返回内容
                    String temp="";
                    final StringBuilder response=new StringBuilder();
                    while ((temp=bufferedReader.readLine())!=null){ //用readLine读取返回的字符串,每次读一行
                        response.append(temp);
                    }

                    Log.d(MyHttpRequest.class.toString(),response.toString());
                    //解析JSON
                    JSONObject jsonObject=new JSONObject(response.toString());
                    final String result=jsonObject.getString("result");
                    final String resultcode=jsonObject.getString("resultcode");
                    JSONObject jsonObject1=new JSONObject(result);
                    String today=jsonObject1.getString("today");
                    String sk=jsonObject1.getString("sk");
                    JSONObject jsonObject2=new JSONObject(today);
                    final String temp1=jsonObject2.getString("temperature");
                    final String weather1=jsonObject2.getString("weather");
                    JSONObject sk1=new JSONObject(sk);
                    final String wind=sk1.getString("wind_direction");
                   // JSONArray jsonArray=jsonObject1.getJSONArray("future");
                    //JSONObject jsonObject3=(JSONObject)jsonArray.get(0);//数组里的第一项数据
                    //weather2=jsonObject3.getString("weather");//获取未来一天的天气

                    Log.d(MyHttpRequest.class.toString(),temp1+","+weather1);
                    //把内容显示到界面
                    //显示天气
                    textView1.post(new Runnable() {
                        @Override
                        public void run() {
                            textView1.setText(weather1);
                        }
                    });
                    //显示温度
                    textView2.post(new Runnable() {
                        @Override
                        public void run() {
                            textView2.setText(temp1);
                        }
                    });
                    //显示风向
                    textView3.post(new Runnable() {
                        @Override
                        public void run() {
                            textView3.setText("风向:"+wind);
                        }
                    });

                    bufferedReader.close();
                }
                connection.disconnect();//断开连接

            }catch (Exception e){
               Log.e(WeatherActivity.class.toString(),e.toString());
            }
        }
    }
    public void search(View view){
        spinner.setVisibility(View.VISIBLE);
        Resources resources=getResources();
        spinnerArray=resources.getStringArray(R.array.city);
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,R.layout.spinner_item,spinnerArray);
        spinner.setAdapter(arrayAdapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                   WeatherActivity.this.city = spinnerArray[position];
                    new Thread(new MyHttpRequest()).start();

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                WeatherActivity.this.city="济南";
                new Thread(new MyHttpRequest()).start();
            }
        });
    }
    //搜索按钮实现搜索
    public void searchWeather(View view){
        String s=editText.getText().toString();
        city=s;
    }
    //返回首页
    public void toLoginPage(View view){
        Intent intent=new Intent(this, MainActivity.class);
        startActivity(intent);
    }

}

Layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:background="@color/floralwhite"
    android:layout_height="match_parent"
    android:weightSum="1">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/blue"
        android:orientation="horizontal">

        <Button
            android:id="@+id/login_back_bt"
            android:layout_width="56dp"
            android:layout_height="51dp"
            android:background="@drawable/back"
            android:onClick="toLoginPage"
            android:textColor="#fff"
            android:textSize="30dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_weight="0.2"
            android:gravity="center_vertical"
            android:text="            天气情况"
            android:textColor="#fff"
            android:textSize="27dp" />
        <Button
            android:layout_width="wrap_content"
            android:id="@+id/wb"
            android:onClick="search"
            android:background="@drawable/button_style"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="search"
            android:textColor="#fff"
            android:textSize="25dp"
            android:layout_height="wrap_content" />

    </LinearLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="10dp" />
    <LinearLayout
        android:layout_width="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"
        android:layout_height="wrap_content">
    <EditText
        android:layout_width="wrap_content"
        android:background="@drawable/allcorner"
        android:hint="     搜索更多地方天气    "
        android:textSize="20dp"
        android:id="@+id/weather_et"
        android:gravity="center"
        android:layout_gravity="center"
        android:layout_height="wrap_content" />

        <ImageView
            android:layout_width="59dp"
            android:src="@drawable/search"
            android:id="@+id/weather_search"
            android:onClick="searchWeather"
            android:layout_height="match_parent" />

    </LinearLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="10dp" />
    <LinearLayout
        android:layout_width="351dp"
        android:background="@drawable/allcorner"
        android:layout_gravity="center"
        android:layout_height="100dp"
        android:orientation="vertical"
        android:layout_weight="0.95">
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="match_parent"
                android:id="@+id/weather_bg"
                android:layout_height="200dp" />
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:orientation="horizontal"
                android:layout_height="wrap_content">
            <ImageView
                android:layout_width="51dp"
                android:layout_gravity="center"
                android:src="@drawable/place"
                android:layout_height="52dp" />
             <Spinner
                 android:layout_width="119dp"
                 android:layout_gravity="center"
                 android:id="@+id/weather_sp"
                 android:layout_height="match_parent"></Spinner>
            </LinearLayout>
        </FrameLayout>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="10dp" />
        <TextView
            android:layout_width="match_parent"
            android:id="@+id/weather_tv1"
            android:textSize="25dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_height="wrap_content" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="15dp" />
        <TextView
            android:layout_width="match_parent"
            android:id="@+id/weather_tv2"
            android:textSize="25dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_height="wrap_content" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="15dp" />
        <TextView
            android:layout_width="match_parent"
            android:id="@+id/weather_tv3"
            android:textSize="25dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_height="wrap_content" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="15dp" />
        <TextView
            android:layout_width="match_parent"
            android:id="@+id/weather_tv4"
            android:textSize="25dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_height="wrap_content" />

    </LinearLayout>

</LinearLayout>

drawable下spinner样式

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:id="@+id/spinner_tv1"
    android:textSize="26dp"
    android:textColor="#000"
    android:layout_height="match_parent">

</TextView>

drawable下button样式

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item>
     <shape>
         <corners android:radius="15dp"></corners>
         <gradient android:startColor="@color/silver"
             android:endColor="@color/lightyellow"
             android:centerColor="@color/greypink"
             android:type="linear"
             android:angle="45"/>
     </shape>
     </item>
    <item android:state_focused="true">
        <shape>
            <corners android:radius="15dp"></corners>
            <solid android:color="@color/greypink"/>
        </shape>
    </item>

</selector>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值