当前位置:  编程技术>移动开发
本页文章导读:
    ▪scrollViewDidScroll 跟scrollViewDidEndScrollingAnimation的区别        scrollViewDidScroll 和scrollViewDidEndScrollingAnimation的区别    UIScrollViewDelegate has got two delegate methods scrollViewDidScroll: and scrollViewDidEndScrollingAnimation: but neither of these tell you when scrolling has completed.   .........
    ▪ 应用 SharedPreferences        使用 SharedPreferences SharedPreferences是一种轻量级的数据存储方式,学过Web开发的同学,可以想象它是一个小小的Cookie。它可以用键值对的方式把简单数据类型(boolean、int、float、long和String)存储.........
    ▪ goolge 舆图弹出气泡       goolge 地图弹出气泡  新建图层 package com.android.angking.yibai; import java.util.ArrayList; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.gr.........

[1]scrollViewDidScroll 跟scrollViewDidEndScrollingAnimation的区别
    来源: 互联网  发布时间: 2014-02-18
scrollViewDidScroll 和scrollViewDidEndScrollingAnimation的区别
   UIScrollViewDelegate has got two delegate methods scrollViewDidScroll: and scrollViewDidEndScrollingAnimation: but neither of these tell you when scrolling has completed.
   scrollViewDidScroll only notifies you that the scroll view did scroll not that it has finished scrolling.
  scrollViewDidEndScrollingAnimation only seems to fire if you programmatically move the scroll view not if the user scrolls.

    
[2] 应用 SharedPreferences
    来源: 互联网  发布时间: 2014-02-18
使用 SharedPreferences

SharedPreferences是一种轻量级的数据存储方式,学过Web开发的同学,可以想象它是一个小小的Cookie。它可以用键值对的方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名/shared_prefs/)自己定义的xml文件中。

    SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下常用方法来访问SharedPreferences的key_value键值对。

   

SharedPreferences常用的属性和方法

方法名称

描述

public abstract boolean contains (String key)

判断SharedPreferences是否包含特定key的数据

public abstract SharedPreferences.Editor edit ()

返回一个Edit对象用于操作SharedPreferences

public abstract Map<String, ?> getAll ()

获取SharedPreferences数据里全部的key-value对

getXXX(String key,XXX defvlaue)

获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。

Editor接口的常用方法

方法名称

描述

public abstract SharedPreferences.Editor clear ()

清空SharedPreferences里所有的数据

public abstract boolean commit ()

当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改

public abstract SharedPreferences.Editor putXXX (String key, boolean XXX)

向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值

public abstract SharedPreferences.Editor remove (String key)

删除SharedPreferences里指定key对应的数据项

 

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例

name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

package com.learn.android;

import android.app.Activity;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class SharedPreferences_LearnActivity extends Activity {
	EditText edit1;
	EditText edit2;
	Button write;
	Button read;
	SharedPreferences sp;
	Editor edit;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initComponent();
        //可以让其他应用程序读取
        sp = this.getSharedPreferences("preferences",MODE_WORLD_READABLE);
        edit = sp.edit();
    }

	private void initComponent() {
		// TODO Auto-generated method stub
		edit1 = (EditText) this.findViewById(R.id.editText1);
		edit2 = (EditText) this.findViewById(R.id.editText2);
		write = (Button) this.findViewById(R.id.button1);
		read = (Button) this.findViewById(R.id.button2);
		write.setOnClickListener(writeListener);
		read.setOnClickListener(readListener);
	}
	OnClickListener writeListener = new OnClickListener(){

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			String name = edit1.getText().toString();
			System.out.println("name="+name);
			edit.putString("name",name);
			int count = sp.getInt("count",0);
			System.out.println("count="+count);
			edit.putInt("count",++count);
			edit.commit();
		}
		
	};
	OnClickListener readListener = new OnClickListener(){

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			String name = sp.getString("name","");
			int count = sp.getInt("count",0);
			edit1.setText(name);
			edit2.setText(count+"");
		}
		
	};
}

 效果图:

 

读写其他应用SharedPreferences

在有时的开发过程中,我们可能要访问其他的应用程序的SharedPreferences,要实现这样的功能,我们必须要保证要访问的那个应用程序的SharedPreferences的访问权限要是MODE_WORLD_READABLE,这表明该SharedPreferences可以被其他应用程序读取,如果指定的MODE_WORLD_WRITEABLE表明该SharedPreferences可以被其他应用程序读取写入其实现思路如下

1、  获得其他应用程序对应的Context

2、  通过这个Context得到这个应用程序的SharedPreferences,然后再利用这个SharedPreferences读取内容

以上一例的SharedPreference为例。实现代码:

package com.learn.android;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
import android.view.View;
import android.view.View.OnClickListener;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

public class GetOtherSharedPreferencesActivity extends Activity {
	Button button;
	TextView view;
	Context othercontext;
	SharedPreferences sp;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button) this.findViewById(R.id.button1);
        view = (TextView) this.findViewById(R.id.view);
        try {
			othercontext = createPackageContext("com.learn.android",
					Context.CONTEXT_IGNORE_SECURITY);
			sp = othercontext.getSharedPreferences("preferences",othercontext.MODE_PRIVATE);
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        button.setOnClickListener(l);
    }
    OnClickListener l = new OnClickListener(){

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			String name = sp.getString("name","");
			int count = sp.getInt("count",0);
			view.setText("name="+name+"操作次数="+count);
		}
    	
    };
}

 

SharedPreferences的注意事项:

编辑完SharedPreferences一定要记得调用Editor的commit()方法,否则不会将数据写入到文件里的。

回顾总结:

1、  如何得到SharedPreferences

SharedPreferences preferences=getPreferences(“test”,MODE_PRIVATE);

2、  如何编辑SharedPreferences

得到Editor对象实例

SharedPreferences.Editor editor=preferences.editor();

3、  SharedPreferences的存储位置

/data/data/<package name>/shared_prefs

 

 


    
[3] goolge 舆图弹出气泡
    来源: 互联网  发布时间: 2014-02-18
goolge 地图弹出气泡



 新建图层

package com.android.angking.yibai;

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.google.android.maps.Projection;

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem>{
     private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
     private Context context;
     public CustomItemizedOverlay(Context context,Drawable defaultMarker){
    	 super(boundCenterBottom(defaultMarker));
    	 this.context = context;
     }
     public void draw(Canvas canvas,MapView mapView,boolean shadow){
    	 super.draw(canvas, mapView, shadow);
    	 //Projection 接口用于屏幕像素点坐标体系和地球概况纬度点坐标体系之间的变换
    	 Projection projection = mapView.getProjection();
    	 //遍历所有的OverlayItem
    	 for(int index = this.size()-1;index>=0;index--){
    		 //获得给定索引的item
    		 OverlayItem overlayItem = getItem(index);
    		 //把经纬度变换相对于MapView左上角的屏幕像素坐标
    		 Point point = projection.toPixels(overlayItem.getPoint(), null);
    		 
    		 Paint paintText = new Paint();
    		 paintText.setColor(Color.RED);
    		 paintText.setTextSize(13);
    		 //绘制文本
    		 canvas.drawText(overlayItem.getTitle(), point.x+10, point.y-15, paintText);
    	 }
     }
     protected boolean onTap(int index){
    	 setFocus(mOverlays.get(index));
		return super.onTap(index);
    	 
     }
     public void removeAll(){
       if(mOverlays.size()>=0){
    	   mOverlays.removeAll(mOverlays);
       }
     }
     public void addOverlay(OverlayItem overlay){
    	 mOverlays.add(overlay);
    	 populate();
     }
//	public CustomItemizedOverlay(Drawable defaultMarker) {
//		super(boundCenterBottom(defaultMarker));
//		// TODO Auto-generated constructor stub
//	}

	@Override
	protected OverlayItem createItem(int i) {
		// TODO Auto-generated method stub
		return mOverlays.get(i);
	}

	@Override
	public int size() {
		// TODO Auto-generated method stub
		return mOverlays.size();
	}
	

}

 自定义OverlayItem

package com.android.yibai.antking;

import android.graphics.Bitmap;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.OverlayItem;

public class MyOverlayItem extends OverlayItem{
     private Bitmap bitmap;
	public MyOverlayItem(GeoPoint point, String title, String snippet,Bitmap bitmap) {
		super(point, title, snippet);
		this.bitmap = bitmap;
		// TODO Auto-generated constructor stub
	}
	public  Bitmap getBitmap(){
		return bitmap;
	}

}

 实现类

package com.android.yibai.antking;

import java.util.List;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class MapMain extends MapActivity{
	/**
	 * 地图
	 */
	protected MapView mapView;
	/**
	 * 弹出的气泡View
	 */
	private View popView;
	
	private int[] image={R.drawable.icon};
	
	 public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        
	        //初始化气泡,并设置为不可见
	        popView = View.inflate(this, R.layout.popview, null);
	        setContentView(R.layout.main);
	        
	        //获得map
	        mapView = (MapView)this.findViewById(R.id.mapview);
	        mapView.addView(popView,new MapView.LayoutParams(
	        		MapView.LayoutParams.WRAP_CONTENT,
	        		MapView.LayoutParams.WRAP_CONTENT,null
	        		,MapView.LayoutParams.BOTTOM_CENTER));
	       //这里没有给GeoPoint ,在onFoucusChangeListener中设置
	        popView.setVisibility(View.GONE);
	        /**
	         * 创建图标资料(用于显示在overlayItem所表示表记的地位
	         */
	        Drawable drawable =this.getResources().getDrawable(R.drawable.icon);
	        
	        //为mark定以地位和鸿沟
	        drawable.setBounds(0,0,drawable.getIntrinsicWidth(),
	        		drawable.getIntrinsicHeight());
	        CustomItemizedOverlay overlay = new CustomItemizedOverlay(this,drawable);
	        //设置显示/隐藏气泡的位置
	        overlay.setOnFocusChangeListener(onFocusChangeListener);
           
	        /**
	         * 创建并添加一个标志
	         */
	       GeoPoint point = new GeoPoint(35422006,119524095);
	       //创建标识
	       Bitmap bitmap = BitmapFactory.decodeResource(MapMain.this.getResources(), R.drawable.psu);
	       MyOverlayItem overlayItem = new MyOverlayItem(point
	    		   ,"银河公园","这是一个充满神奇的公园,一步一景,我去的时候有一种柳暗花明又一村的感觉",bitmap);
	       overlay.addOverlay(overlayItem);
	       /**
	        * 创建第二个标识
	        */
	       Bitmap bitmap1 = BitmapFactory.decodeResource(this.getResources(), R.drawable.icon);
	        GeoPoint point1 = new GeoPoint((int)(22.53108*1E6),(int)(113.99151*1E6));
	       MyOverlayItem overlayItem1 = new MyOverlayItem(point1,"秀丽中华","中国最好的旅游胜地之一",bitmap1);
	       overlay.addOverlay(overlayItem1);
	       
	       //向地图里添加自定义的ItemizedOverlay
	       List<Overlay> mapOverlays =mapView.getOverlays();
	       mapOverlays.add(overlay);
	       //设置地图为卫星地图
	       mapView.setSatellite(true);
	       //设置地图可以缩放
	       mapView.setBuiltInZoomControls(true);
	       /**
	        * 取得地图管理对象,用于把握地图
	        * 
	        */
	       //设置地图的中间
	       mapView.getController().setCenter(point);
	       //设置地图默认的缩放级别
	       mapView.getController().setZoom(13);
	       
	 }
	@Override
	protected boolean isRouteDisplayed() {
		// TODO Auto-generated method stub
		return false;
	}
	private final ItemizedOverlay.OnFocusChangeListener onFocusChangeListener = new ItemizedOverlay.OnFocusChangeListener() {

		@Override
		public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus) {
			// TODO Auto-generated method stub
			//创建气泡窗口
			if(popView!=null){
				popView.setVisibility(View.GONE);
			}
			if(newFocus !=null){
				MapView.LayoutParams geoLp =(MapView.LayoutParams) popView
				.getLayoutParams();
				geoLp.point = newFocus.getPoint();//这行用于popView的定位
				TextView title = (TextView)popView.findViewById(R.id.map_bubbleTitle);
				title.setText(newFocus.getTitle());
				
				TextView desc = (TextView)popView.findViewById(R.id.map_bubbleText);
			    ImageView image = (ImageView)popView.findViewById(R.id.map_bubbleImage);
			    image.setImageBitmap(((MyOverlayItem) newFocus).getBitmap());
				if(newFocus.getSnippet()==null
					||newFocus.getSnippet().length()==0){
					desc.setVisibility(View.GONE);
				}else{
					desc.setVisibility(View.VISIBLE);
					desc.setText(newFocus.getSnippet());
				}
				mapView.updateViewLayout(popView,geoLp);
				popView.setVisibility(View.VISIBLE);
			}
		}
	
	
	};

}
 

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3