android开发下的一些技术要点

1,对于去title方法。在oncreate方法中设置
Java代码   收藏代码
  1. this.requestWindowFeature(Window.FEATURE_NO_TITLE);  

但是必须记住,此方法必须在 setContentView方法之前,否则报错。
2,获取显示屏幕大小的方法。
Java代码   收藏代码
  1. this.getWindow().getWindowManager().getDefaultDisplay().getWidth()  

Java代码   收藏代码
  1. this.getWindow().getWindowManager().getDefaultDisplay().getHeight()  

3,对于RadioButton来说,必须在RadioGroup之中,而且对于哪个RadioButton被选中可以使用自定义的(选中方法==buttnID),不过更推荐采用getCheckedRadioButtonId()方法来进行。
4,对于全屏的方法。
Java代码   收藏代码
  1. this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  2. setContentView(R.layout.main);  
  3. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
  4.                             WindowManager.LayoutParams.FLAG_FULLSCREEN);  

5,对于URL。引用IBM技术文章: http://www.ibm.com/developerworks/cn/opensource/os-android-networking/?1321493252
类似自己也做一个,这上面应该在manifest文件中加入访问权限。如:
Java代码   收藏代码
  1. <uses-permission android:name="android.permission.INTERNET"/>  

其次对于URL来说,www.google.com.hk并非是一个URL,应该为http://www.google.com.hk,必须加入协议。否则直接跳转到MalformedURLException,用户得不到任何信息提示。
6,对于竖屏锁定,android机器有方向感应器,所以屏幕会进行自动横屏/竖屏切换。解决的方法。在manifest中的action节点内加入
Java代码   收藏代码
  1. android:screenOrientation="portrait"   // 竖屏 , 值为 landscape 时为横屏  

来锁定屏幕。
7,对于wifi的管理。
     a,权限:
        
Java代码   收藏代码
  1. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>  
  2.     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>  
  3.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
  4.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  

     b,获得wifi管理:
        
Java代码   收藏代码
  1. WifiManager wifi = (WifiManager) this.getSystemService(Service.WIFI_SERVICE);  

     c,wifi管理:
        
Java代码   收藏代码
  1. wifi.setWifiEnabled(true);//打开  
  2. wifi.setWifiEnabled(false);//关闭  

     d,获得状态:
        
Java代码   收藏代码
  1. wifi.getWifiState()  

         状态信息为0,1,2,3,4分别代表不同状态。具体查SDK。

8,已知res/drawable下有pic.jpg。如何不使用R.drawable.pic来设置图片?
Java代码   收藏代码
  1. int srcID = getResources().getIdentifier("fog""drawable""com.duduli.li");  
  2. iv.setImageResource(srcID);  

9,屏幕长按事件
对于控件的长按事件有专用的方法,setOnLongClickListener一般这个方法够用了。
但是对于屏幕来说却没有,所以我们需要一些手势动作GestureDetector就是一个常用手势动作。一下是代码:
Java代码   收藏代码
  1.     gd = new GestureDetector(new OnGestureListener() {  
  2.   
  3. @Override  
  4. public boolean onSingleTapUp(MotionEvent e) {  
  5.     // TODO Auto-generated method stub  
  6.     System.out.println("single tap");  
  7.     return false;  
  8. }  
  9.   
  10. @Override  
  11. public void onShowPress(MotionEvent e) {  
  12.     // TODO Auto-generated method stub  
  13.       
  14. }  
  15.   
  16. @Override  
  17. public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,  
  18.         float distanceY) {  
  19.     // TODO Auto-generated method stub  
  20.     return false;  
  21. }  
  22.   
  23. @Override  
  24. public void onLongPress(MotionEvent e) {  
  25.     // TODO Auto-generated method stub  
  26.     System.out.println("long press");  
  27.       
  28. }  
  29.   
  30. @Override  
  31. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  
  32.         float velocityY) {  
  33.     // TODO Auto-generated method stub  
  34.     return false;  
  35. }  
  36.   
  37. @Override  
  38. public boolean onDown(MotionEvent e) {  
  39.     // TODO Auto-generated method stub  
  40.     return false;  
  41. }  
  42. );  

自定义实现上面,然后在重写onTouchEvent的方法。
Java代码   收藏代码
  1. @Override  
  2. public boolean onTouchEvent(MotionEvent event) {  
  3.     // TODO Auto-generated method stub  
  4.     gd.onTouchEvent(event);  
  5.     return super.onTouchEvent(event);  
  6. }  

10,关于手机应用程序的问题,
小米终于到手里了,迫不及待的安装了自己做的软件。却突然发现一个问题。
因为自己的软件都存放在一个同名包里面“com.duduli.li”结果发现我将自己的card安装好了,再安装自己的ibook,card没有了。真这样的么?
11,关于基站定位:
Java代码   收藏代码
  1. TelephonyManager tm = (TelephonyManager) LACandCELLIDActivity.this.getSystemService(Context.TELEPHONY_SERVICE);  
  2. CellLocation cl = tm.getCellLocation();  
  3.                 GsmCellLocation gcl = (GsmCellLocation) cl;  
  4.                   
  5.                 int cellID = gcl.getCid();  
  6.                 int lac = gcl.getLac();  
  7.                         String u = "http://gisapi.sinaapp.com/jizhan.php?cellid="+cellID+"&loc="+lac;  
  8.                         try {  
  9.                     URL url = new URL(u);  
  10.                     URLConnection conn = url.openConnection();  
  11.                     BufferedReader br = new BufferedReader(  
  12.                             new InputStreamReader(conn.getInputStream()));  
  13.                     String line = "";  
  14.                     while((line=br.readLine()) != null){  
  15.                         System.out.println(line);  
  16.                           
  17.                     }  
  18.                       
  19.                       
  20.                 } catch (MalformedURLException e) {  
  21.                     // TODO Auto-generated catch block  
  22.                     e.printStackTrace();  
  23.                 } catch (IOException e) {  
  24.                     // TODO Auto-generated catch block  
  25.                     e.printStackTrace();  
  26.                 }  


这里需要加入三个权限:
Java代码   收藏代码
  1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  
  2. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  
  3. <uses-permission android:name="android.permission.INTERNET"/>  


11,通过已知的两个Google map经纬度,测量两点之间的距离:
Java代码   收藏代码
  1. GeoPoint aGeoPoint = new GeoPoint((int) (22.550734 * 1000000), (int) (114.102295 * 1000000));  
  2. GeoPoint bGeoPoint = new GeoPoint((int) (22.550430 * 1000000), (int) (114.100861 * 1000000));  
  3.   
  4. public double getDistance(double lat1, double lon1, double lat2, double lon2) {  
  5.         float[] results = new float[3];  
  6.         Location.distanceBetween(lat1 / 1E6, lon1 / 1E6, lat2 / 1E6, lon2 / 1E6, results);  
  7.         return results[0];  
  8.     }  
  9.   
  10. System.out.println(getDistance(bGeoPoint.getLatitudeE6(), bGeoPoint.getLongitudeE6()  
  11.                 ,aGeoPoint.getLatitudeE6(), aGeoPoint.getLongitudeE6()));  

参数两点顺序无所谓。

12,今天忙活了一天的基站定位程序。出现了2个问题。
第一个,问题是自己很白痴。把url的参数写错了。所以导致程序总是出错。
现在总结下第二给问题吧。
之前自己的程序打包都是使用的debugkey进行的。之前都还没有出现问题,知道开发这个Google map的定位。
要申请那个开发key才能进行。
具体的为
Java代码   收藏代码
  1. C:\Program Files\Java\jdk1.6.0_24\bin>keytool -genkey -alias duduli.keystore -ke  
  2. yalg RSA -validity 20000 -keystore C:\Users\Administrator\.android\duduli.keysto  
  3. re  

和debugkey的一样,询问姓名什么的。
然后通过这个keystore在进行一次密钥获得
Java代码   收藏代码
  1. C:\Program Files\Java\jdk1.6.0_24\bin>keytool -list -alias duduli.keystore -keys  
  2. tore C:\Users\Administrator\.android\duduli.keystore  

http://code.google.com/intl/zh-CN/android/maps-api-signup.html
通过得到这个的密钥,替换之前debug版的密钥,然后打包采用duduli.keystroe进行打包就可以了。
具体可以参看《Google Android开发入门与实战》第4章和第13章。网上有pdf版本下载 http://ishare.iask.sina.com.cn/f/7617452.html

13,对于某个应用程序或activity你只想他一个实例在运行。那么可以在menifest.xm中的activity中设置
Java代码   收藏代码
  1. android:launchmode="singleTask"  

如果设置了singleTask的activity已经在运行了,而你用intent启动这个activity那么,系统将不会调用onCreate方法,而是调用onNewIntent。

14,总会出现这样的问题。
比如一个外部类执行的时候,你需要修改主线程UI的状态,那么你可以采用handler+message的方法。或者通过建立内部类的方法进行解决。

15,此问题未能解答。 http://duduli.iteye.com/admin/blogs/1447684

16,对于输入框,默认让其输入数字的方法:
Java代码   收藏代码
  1. et.setKeyListener(new DigitsKeyListener(falsetrue));  


1,获得当天的0时0分0秒的Calender
Java代码   收藏代码
  1. Calendar c = Calendar.getInstance();  
  2.         c.set(c.get(Calendar.YEAR),  
  3.                 c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH),0,0,0); 
转载地址:http://duduli.iteye.com/blog/1258357
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目录 第一篇 Android开发初步 第1章 Android初识 1.1 Android简介 1.1.1 认识Android 1.1.2 Android系统框架 1.1.3 应用程序框架 1.2 Eclipse开发环境 1.2.1 安装ADT插件 1.2.2 安装SDK 1.2.3 配置源代码 1.2.4 创建AVD 1.3 Android模拟器 1.3.1 ADB工具 1.3.2 其它常用工具 1.4 本章小结 第2章 应用程序构建 2.1 创建Android工程 2.2 HelloAndroid详解 2.2.1 程序结构 2.2.2 代码分析 2.3 权限permission 2.4 LogCat日志调试 2.5 示例练习 2.5.1 登录界面 2.5.2 事件处理 2.6 本章小结 第二篇 Android开发关键组件 第3章 Activity(活动) 3.1 什么是任务 3.2 Activity的生命周期 3.3 基本用法 3.3.1 创建Activity 3.3.2 启动Activity 3.3.3 窗口Activity 3.3.4 Activity生命周期验证 3.4 Activity之间通信 3.4.1 Activity传递一般类型 3.4.2 Activity传递对象类型 3.4.2 Activity回传数据 3.5 Activity加载模式 3.6 本章小结 第4章 Intent (意图) 4.1 显式Intent 4.2 隐式Intent 4.2.1 IntentFilter 4.2.2 调用系统组件 4.3 本章小结 第5章 BroadcastReceiver (广播) 5.1 生命周期 5.2 广播类型 5.2.1 普通广播 5.2.2 有序广播 5.2.3 异步广播 5.3 系统广播应用 5.3.1 系统广播 5.3.2 开机启动程序 5.3.3 电量监测 5.4 本章小结 第6章 Service(服务) 6.1 生命周期 6.2 Binder机制 6.3 AIDL基础 6.3.1 定义AIDL接口 6.3.2 使用AIDL开发程序的一般步骤 6.3.3 实现远程控制计数器示例 6.4 AIDL深入练习 6.4.1 服务端实现 6.4.2 客户端实现 6.5 系统服务 6.5.1 获得系统服务 6.5.2 获取屏幕分辨率 6.5.3 剪贴板服务 6.5.4 电话服务 6.5.5 定时提醒服务 6.5.6 音频服务 6.5.7 传感器服务 6.5.8 位置服务 6.6 本章小结 第三篇 Android开发基础详解 第7章 常用控件 7.1 Button(按钮) 7.2 ImageButton(图片按钮) 7.3 ToggleButton(开关按钮) 7.4 TextView(文本视图) 7.5 ImageView(图片视图) 7.6 EditText(编辑框) 7.7 RadioButton(单选按钮) 7.8 CheckBox(多选框) 7.9 Spinner(下拉列表) 7.10 AutoCompleteTextview(自动完成) 7.11 DataPicker&TimePicker;(日期&时间) 7.12 ProgressBar (进度条) 7.12.1 横向进度条 7.12.2 旋转型进度条 7.13 SeekBar (拖动条) 7.14 RatingBar(评分条) 7.15 本章小结 第8章 界面布局 8.1 基本布局 8.1.1 线性布局 8.1.2 相对布局 8.1.3 绝对布局 8.1.4 Frame布局 8.1.5 表格布局 8.2 Tab布局 8.3 ScrollView 8.4 ListView(列表) 8.4.1 继承自ListActivity 8.4.2 ListView灵活运用 8.5 GirdView(网格) 8.6 WebView(网页) 8.6.1 WebView加载web页面 8.6.2 WebView中对JavaScript的支持 8.7 Gallery (画廊) 8.8 SlidingDrawer(滑动抽屉) 8.9 Dialog(对话框) 8.9.1 AlertDialog警告框 8.9.2 ProgressDialog进度框 8.9.3 DatePickerDialog & TimePickerDialog(日期时间选择框) 8.10 Menu(菜单) 8.10.1 options menu 8.10.2 contex

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值