使用Google Map Api在Android平台上开发地图应用3

本文介绍了一个简单的Android应用设置界面的开发过程,包括布局文件的设计、Spinner控件的应用及按钮点击事件的处理等关键技术点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

去三峡玩了几天

先把设置界面写完

 

布局文件代码如下:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">

     <!-- 选择个人设置 -->
	<TextView android:id="@+id/setting_tips" 
	    android:layout_width="fill_parent"
		android:layout_height="wrap_content" 
		android:text="" />

     <!-- 设置Gps更新频率 -->
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" 
		android:text="@string/setting_gps" />
		
      <!-- 设置Gps更新频率  -->
    <Spinner android:id="@+id/setting_gps"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:prompt="@string/spinner_gps_prompt"
    />
		
		<!-- 地图等级 -->
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" 
		android:text="@string/setting_map_level" />

		<!-- 设置地图等级 -->
    <Spinner android:id="@+id/setting_map_level"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:prompt="@string/spinner_map_prompt"
    />
		<!-- 确定按钮 -->
	<Button android:id="@+id/setting_submit" 
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" 
		android:text="@string/setting_submit" />

</LinearLayout>

 


 两个列表的数据资源放在array.xml中

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Used in View/setting.java -->
    <string-array name="gps">
        <item>5</item>
        <item>10</item>
        <item>15</item>
        <item>30</item>
        <item>60</item>
        <item>120</item>
    </string-array>
    
    <string-array name="map">
        <item>5</item>
        <item>6</item>
        <item>7</item>
        <item>8</item>
        <item>9</item>
        <item>10</item>
        <item>11</item>
        <item>12</item>
        <item>13</item>
        <item>14</item>
        <item>15</item>
        <item>16</item>
        
    </string-array>
    
</resources>


 

 

新建一个Setting的Activity类,用来控制设置界面的活动

代码如下:

package karant.map;

import android.R.integer;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

public class Setting extends Activity{

	private static final String TAG = "Setting";
	//定义菜单需要的常量
	private static final int MENU_MAIN = Menu.FIRST + 1;
	private static final int MENU_NEW = MENU_MAIN + 1;
	private static final int MENU_BACK = MENU_NEW + 1;
	
	//保存个性化设置
	public static final String SETTING_INFOS ="SETTING_Infos";
	public static final String SETTING_GPS = "SETTING_Gps";
	public static final String SETTING_MAP = "SETTING_Map";
	public static final String SETTING_GPS_POSITION = "SETTING_Gps_P";
	public static final String SETTING_MAP_POSITION = "SETTING_Map_p";
	private Button button_setting_submit ;
	private Spinner field_setting_gps;
	private Spinner field_setting_map_level;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.setting);
		setTitle(R.string.menu_setting);
		findViews();
		setListeners();
//		restorePrefs();
		
	}
	
	private void findViews(){
		Log.d(TAG, "find Views");
		button_setting_submit = (Button)findViewById(R.id.setting_submit);  //确定按钮
		
		field_setting_gps = (Spinner)findViewById(R.id.setting_gps);     //更新频率
		//获取选项,列表视图
		ArrayAdapter<CharSequence> adapter = 
			ArrayAdapter.createFromResource(this, R.array.gps, android.R.layout.simple_spinner_item); 
		    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		field_setting_gps.setAdapter(adapter);  //把列表选项加到列表框中
		    
		field_setting_map_level = (Spinner)findViewById(R.id.setting_map_level);  //地图等级
		ArrayAdapter<CharSequence> adapter2 =
			ArrayAdapter.createFromResource(this, R.array.map, android.R.layout.simple_spinner_item);
		adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		field_setting_map_level.setAdapter(adapter2); //把列表选项加到列表框中
	}
	
	//设置监听器
	private void setListeners(){
		Log.d(TAG, "set Listeners");
		button_setting_submit.setOnClickListener(setting_submit); //组件设置单击的监听器为setting_submit
	}
	
	private Button.OnClickListener setting_submit = new Button.OnClickListener(){
		public void onClick(android.view.View v) {
			Log.d(TAG, "onClick new track..");
			try{
				String gps = (field_setting_gps.getSelectedItem().toString()); //获取刷新频率
				String map = (field_setting_map_level.getSelectedItem().toString()); //获取地图等级
				
				if(gps.equals("") || map.equals("")){
					Toast.makeText(Setting.this, getString(R.string.setting_null), Toast.LENGTH_SHORT).show();
					//提示消息
				}
				else{
					//保存设定
					//...后面补全
					
					//跳转到主界面
					Intent intent = new Intent();
					intent.setClass(Setting.this, MapAppActivity.class);  //跳转到最开始的界面
					startActivity(intent);
				}
			}
			catch (Exception e) {
				//提示错误消息
				Log.d(TAG, "error"+ e.toString());
				Toast.makeText(Setting.this, getString(R.string.setting_fail), Toast.LENGTH_SHORT).show();
			}
		}
		};
	
 	//实现创建菜单和选择菜单
		public boolean onCreateOptionsMenu(Menu menu) {
			super.onCreateOptionsMenu(menu);
			menu.add(0, MENU_MAIN, 0, R.string.menu_main).setIcon(R.drawable.icon)
			.setAlphabeticShortcut('M');
			menu.add(0, MENU_NEW, 0, R.string.menu_new).setIcon(R.drawable.new_track)
			.setAlphabeticShortcut('N');
			menu.add(0, MENU_BACK, 0, R.string.menu_back).setIcon(R.drawable.back)
			.setAlphabeticShortcut('E');
			return true;
		};
		
		//当菜单被选中调用
		@Override
		public boolean onOptionsItemSelected(MenuItem item) {
			Intent intent = new Intent();
			switch (item.getItemId()) {
			case MENU_NEW:  //新建跟踪
				intent.setClass(Setting.this, NewTrack.class);
				startActivity(intent);
				return true;
			case MENU_MAIN: //主界面
				intent.setClass(Setting.this, MapAppActivity.class);
				startActivity(intent);
				return true;
			case MENU_BACK:  //返回
			    finish();
			    break;
			}
			return true;
			
		}
		
		//退出程序保存下
		@Override
		protected void onStop() {
			// TODO Auto-generated method stub
			super.onStop();
			Log.d(TAG, "save setting infos");
			//保存用户设置
//			storePrefs();
		}
}


里面有些String定义前面没有定义,可以按照代码的提示在string.xml里面相应的添加

 

程序运行结果:

进入时的界面

 

设置界面

 

菜单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值