文档章节

安卓开发的一些技术要点

小的们上呀
 小的们上呀
发布于 2015/12/14 16:56
字数 1380
阅读 6
收藏 0

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

上一篇: GridView
下一篇: 安卓的简单笔记
小的们上呀
粉丝 0
博文 8
码字总数 0
作品 0
海淀
私信 提问
开发者必知:提升Android应用开发性能的十大要点

随着任何一个移动平台不断发展、围绕它的应用程序不断改进,要想开发成功,质量变得至关重要。如今,用户们要求他们决定安装到自己设备上的Android应用程序反应迅即、性能合理。如果那些应用...

冯京宝
2012/07/05
0
0
[Android] 提升Android应用开发性能的十大要点

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的...

android技术开发
2013/07/26
258
1
提升Android应用开发性能的十大要点

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的...

带梦想一7飞
2012/08/24
0
0
北京GDG开源Linux开发经验及典型应用案例分享讲座报名

谷歌北京技术开发者社区(北京GDG)又要举办活动啦,将于2013年6月15日(周六)下午1:30-5:30在北京翠宫饭店二楼多功能厅 举办一场“开源Linux开发经验及典型应用案例分享”的技术讲座,讲座中...

红薯
2013/05/21
533
9
北京GDG开源Linux开发经验及典型应用案例分享讲座报名

谷歌北京技术开发者社区(北京GDG)又要举办活动啦,将于2013年6月15日(周六)下午1:30-5:30在北京翠宫饭店二楼多功能厅 举办一场“开源Linux开发经验及典型应用案例分享”的技术讲座,讲座中...

红薯
2013/05/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离。 在使用线程隔离的时候,有个问题是必须要解决的...

xiaomin0322
34分钟前
1
0
使用 Jenkins + Ansible 实现 Spring Boot 自动化部署101

本文首发于:Jenkins 中文社区 本文要点: 设计一条 Spring Boot 最基本的流水线:包括构建、制品上传、部署。 使用 Docker 容器运行构建逻辑。 自动化整个实验环境:包括 Jenkins 的配置,J...

Jenkins中文社区
39分钟前
1
0
springcloud配置中心和消息总线,学习,记录其中的问题

改造配置中心的客户端,接入消息总线 1.增加pom文件的引用 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20......

夜中孤影
51分钟前
3
0
gzip压缩

tar -zcvf gz包路径 被压缩的路径 tar -zcvf /home/xxx/test.tar.gz hello gz包的路径可以是 完整的也可以相对 , 被压缩的路径 不要全路径 不然压缩包里也会有全路径...

shzwork
58分钟前
3
0
rancher-1

部署rancher 官方快速部署 https://www.cnrancher.com/quick-start/ 部署命令 mkdir /data/rancher -p# 建立存放rancher数据的目录sudo docker run -d --restart=unless-stopped -v /dat......

以谁为师
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部