当前位置:  编程技术>移动开发
本页文章导读:
    ▪计算两中纬度之间的位置        计算两经纬度之间的位置 #define PI 3.1415926double LantitudeLongitudeDist(double lon1,double lat1,   double lon2,double lat2){ double er = 6378137; // 6378700.0f; //ave. radius = 6371.315 (someone said more accurate is 6366.707) /.........
    ▪ Runnable 跟 Thread        Runnable 和 Thread 我们都知道创建线程有两个方法:  一是通过继承Thread类;二是向Thread类传递一个Runnable对象. 比如说一个售票站有四个窗口卖票,我们要设计四个线程 第一种方法:传递一个Runnable.........
    ▪ Bit地图,byte流,drawable之相互转换       Bitmap,byte流,drawable之相互转换 刚开始学习android,以前学习J2me的时候也碰到过类似的问题,现在看到有同学总结过了,地址为:http://www.iteye.com/topic/642128    这里全文摘抄,以备学习:).........

[1]计算两中纬度之间的位置
    来源: 互联网  发布时间: 2014-02-18
计算两经纬度之间的位置
#define PI 3.1415926
double LantitudeLongitudeDist(double lon1,double lat1,
  double lon2,double lat2)
{
double er = 6378137; // 6378700.0f;
//ave. radius = 6371.315 (someone said more accurate is 6366.707)
//equatorial radius = 6378.388
//nautical mile = 1.15078
double radlat1 = PI*lat1/180.0f;
double radlat2 = PI*lat2/180.0f;
//now long.
double radlong1 = PI*lon1/180.0f;
double radlong2 = PI*lon2/180.0f;
if( radlat1 < 0 ) radlat1 = PI/2 + fabs(radlat1);// south
if( radlat1 > 0 ) radlat1 = PI/2 - fabs(radlat1);// north
if( radlong1 < 0 ) radlong1 = PI*2 - fabs(radlong1);//west
if( radlat2 < 0 ) radlat2 = PI/2 + fabs(radlat2);// south
if( radlat2 > 0 ) radlat2 = PI/2 - fabs(radlat2);// north
if( radlong2 < 0 ) radlong2 = PI*2 - fabs(radlong2);// west
//spherical coordinates x=r*cos(ag)sin(at), y=r*sin(ag)*sin(at), z=r*cos(at)
//zero ag is up so reverse lat
double x1 = er * cos(radlong1) * sin(radlat1);
double y1 = er * sin(radlong1) * sin(radlat1);
double z1 = er * cos(radlat1);
double x2 = er * cos(radlong2) * sin(radlat2);
double y2 = er * sin(radlong2) * sin(radlat2);
double z2 = er * cos(radlat2);
double d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
//side, side, side, law of cosines and arccos
double theta = acos((er*er+er*er-d*d)/(2*er*er));
double dist  = theta*er;
return dist;
}

    
[2] Runnable 跟 Thread
    来源: 互联网  发布时间: 2014-02-18
Runnable 和 Thread

我们都知道创建线程有两个方法:  一是通过继承Thread类;二是向Thread类传递一个Runnable对象.

比如说一个售票站有四个窗口卖票,我们要设计四个线程

第一种方法:传递一个Runnable对象.

public class MyThread
{
 public static void main(String[] args)
 {
  TestThread tt = new TestThread();
  new Thread(tt).start();
  new Thread(tt).start();
  new Thread(tt).start();
  new Thread(tt).start(); 
}
}  
class TestThread implements Runnable
{
 public int ticket = 100;
 public void run()
 {
  while(ticket>0)
  {
   System.out.println(Thread.currentThread().getName()+"is saling ticket"+ticket--);
  }
 }
}
 

 二.通过继承Thread类

public class MyThread
{
 public static void main(String[] args)
 {
  TestThread tt1 = new TestThread().start();
  TestThread tt2= new TestThread().start();                  
TestThread tt3 = new TestThread().start();
TestThread tt4 = new TestThread().start();


}
}
class TestThread implements Runnable
{
 public int ticket = 100;
 public void run()
 {
  while(ticket>0)
  {
   System.out.println(Thread.currentThread().getName()+"is saling ticket"+ticket--);
  }
 }
}
 

 结论:

方法一中四个线程是合作卖100张,而方法二中是四个线程分别各卖100张,就是说四个线程都会卖同一张票四次。

也就是说Runnalbe 是多个对象同时跑一个run,Thread是各自跑各自的

 

1 楼 dotjar 2012-04-20  
我觉得话应该这么说:
引用

TestThread tt = new TestThread(); 
  new Thread(tt).start(); 
  new Thread(tt).start(); 
  new Thread(tt).start(); 
  new Thread(tt).start();

这里只有一个线程实例,所以ticket数据共享;

引用

TestThread tt1 = new TestThread().start(); 
TestThread tt2= new TestThread().start();                   
TestThread tt3 = new TestThread().start(); 
TestThread tt4 = new TestThread().start();

各有各自的ticket,各自属于各自的实例,不存在数据共享问题。
这就是说,上边那个是线程间数据共享的例子,有如火车售票。
我也是来总结下,沾沾楼主的光。
楼主万福!
2 楼 xiaoxiecomeon 2012-04-26  
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能会卖出0、-1、-2这张票。你可以在while输出的后面加一句sleep(1)试一下,会找到问题的。

    
[3] Bit地图,byte流,drawable之相互转换
    来源: 互联网  发布时间: 2014-02-18
Bitmap,byte流,drawable之相互转换

刚开始学习android,以前学习J2me的时候也碰到过类似的问题,现在看到有同学总结过了,地址为:http://www.iteye.com/topic/642128 
   这里全文摘抄,以备学习:) 
1、Drawable → Bitmap 
Java代码 
public static Bitmap drawableToBitmap(Drawable drawable) {  
          
        Bitmap bitmap = Bitmap  
                        .createBitmap(  
                                        drawable.getIntrinsicWidth(),  
                                        drawable.getIntrinsicHeight(),  
                                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
                                                        : Bitmap.Config.RGB_565);  
        Canvas canvas = new Canvas(bitmap);  
        //canvas.setBitmap(bitmap);  
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
        drawable.draw(canvas);  
        return bitmap;  
}  

2、从资源中获取Bitmap 

Java代码 
Resources res=getResources();  
  
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);  

3、Bitmap → byte[] 

Java代码 
private byte[] Bitmap2Bytes(Bitmap bm){  
    ByteArrayOutputStream baos = new ByteArrayOutputStream();    
    bm.compress(Bitmap.CompressFormat.PNG, 100, baos);    
    return baos.toByteArray();  
   }  

4、 byte[] → Bitmap 
Java代码 
private Bitmap Bytes2Bimap(byte[] b){  
            if(b.length!=0){  
                return BitmapFactory.decodeByteArray(b, 0, b.length);  
            }  
            else {  
                return null;  
            }  
      }  


    
最新技术文章:
▪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