您的位置:首页 > 移动开发 > Android开发

android开发下的一些技术要点

2012-07-16 11:34 302 查看
1,对于去title方法。在oncreate方法中设置

Java代码


this.requestWindowFeature(Window.FEATURE_NO_TITLE);

但是必须记住,此方法必须在setContentView方法之前,否则报错。

2,获取显示屏幕大小的方法。

Java代码


this.getWindow().getWindowManager().getDefaultDisplay().getWidth()

Java代码


this.getWindow().getWindowManager().getDefaultDisplay().getHeight()

3,对于RadioButton来说,必须在RadioGroup之中,而且对于哪个RadioButton被选中可以使用自定义的(选中方法==buttnID),不过更推荐采用getCheckedRadioButtonId()方法来进行。

4,对于全屏的方法。

Java代码


this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

5,对于URL。引用IBM技术文章:http://www.ibm.com/developerworks/cn/opensource/os-android-networking/?1321493252

类似自己也做一个,这上面应该在manifest文件中加入访问权限。如:

Java代码


<uses-permission android:name="android.permission.INTERNET"/>

其次对于URL来说,www.google.com.hk并非是一个URL,应该为http://www.google.com.hk,必须加入协议。否则直接跳转到MalformedURLException,用户得不到任何信息提示。

6,对于竖屏锁定,android机器有方向感应器,所以屏幕会进行自动横屏/竖屏切换。解决的方法。在manifest中的action节点内加入

Java代码


android:screenOrientation="portrait" // 竖屏 , 值为 landscape 时为横屏

来锁定屏幕。

7,对于wifi的管理。

a,权限:

Java代码


<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

b,获得wifi管理:

Java代码


WifiManager wifi = (WifiManager) this.getSystemService(Service.WIFI_SERVICE);

c,wifi管理:

Java代码


wifi.setWifiEnabled(true);//打开
wifi.setWifiEnabled(false);//关闭

d,获得状态:

Java代码


wifi.getWifiState()

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

8,已知res/drawable下有pic.jpg。如何不使用R.drawable.pic来设置图片?

Java代码


int srcID = getResources().getIdentifier("fog", "drawable", "com.duduli.li");
iv.setImageResource(srcID);

9,屏幕长按事件

对于控件的长按事件有专用的方法,setOnLongClickListener一般这个方法够用了。

但是对于屏幕来说却没有,所以我们需要一些手势动作GestureDetector就是一个常用手势动作。一下是代码:

Java代码


gd = new GestureDetector(new OnGestureListener() {

@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
System.out.println("single tap");
return false;
}

@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
System.out.println("long press");

}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
);

自定义实现上面,然后在重写onTouchEvent的方法。

Java代码


@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
gd.onTouchEvent(event);
return super.onTouchEvent(event);
}

10,关于手机应用程序的问题,

小米终于到手里了,迫不及待的安装了自己做的软件。却突然发现一个问题。

因为自己的软件都存放在一个同名包里面“com.duduli.li”结果发现我将自己的card安装好了,再安装自己的ibook,card没有了。真这样的么?

11,关于基站定位:

Java代码


TelephonyManager tm = (TelephonyManager) LACandCELLIDActivity.this.getSystemService(Context.TELEPHONY_SERVICE);
CellLocation cl = tm.getCellLocation();
GsmCellLocation gcl = (GsmCellLocation) cl;

int cellID = gcl.getCid();
int lac = gcl.getLac();
String u = "http://gisapi.sinaapp.com/jizhan.php?cellid="+cellID+"&loc="+lac;
try {
URL url = new URL(u);
URLConnection conn = url.openConnection();
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line = "";
while((line=br.readLine()) != null){
System.out.println(line);

}

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

这里需要加入三个权限:

Java代码


<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>

11,通过已知的两个Google map经纬度,测量两点之间的距离:

Java代码


GeoPoint aGeoPoint = new GeoPoint((int) (22.550734 * 1000000), (int) (114.102295 * 1000000));
GeoPoint bGeoPoint = new GeoPoint((int) (22.550430 * 1000000), (int) (114.100861 * 1000000));

public double getDistance(double lat1, double lon1, double lat2, double lon2) {
float[] results = new float[3];
Location.distanceBetween(lat1 / 1E6, lon1 / 1E6, lat2 / 1E6, lon2 / 1E6, results);
return results[0];
}

System.out.println(getDistance(bGeoPoint.getLatitudeE6(), bGeoPoint.getLongitudeE6()
,aGeoPoint.getLatitudeE6(), aGeoPoint.getLongitudeE6()));

参数两点顺序无所谓。

12,今天忙活了一天的基站定位程序。出现了2个问题。

第一个,问题是自己很白痴。把url的参数写错了。所以导致程序总是出错。

现在总结下第二给问题吧。

之前自己的程序打包都是使用的debugkey进行的。之前都还没有出现问题,知道开发这个Google map的定位。

要申请那个开发key才能进行。

具体的为

Java代码


C:\Program Files\Java\jdk1.6.0_24\bin>keytool -genkey -alias duduli.keystore -ke
yalg RSA -validity 20000 -keystore C:\Users\Administrator\.android\duduli.keysto
re

和debugkey的一样,询问姓名什么的。

然后通过这个keystore在进行一次密钥获得

Java代码


C:\Program Files\Java\jdk1.6.0_24\bin>keytool -list -alias duduli.keystore -keys
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代码


android:launchmode="singleTask"

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

14,总会出现这样的问题。

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

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

16,对于输入框,默认让其输入数字的方法:

Java代码


et.setKeyListener(new DigitsKeyListener(false, true));

1,获得当天的0时0分0秒的Calender

Java代码


Calendar c = Calendar.getInstance();
c.set(c.get(Calendar.YEAR),
c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH),0,0,0);

转载地址:http://duduli.iteye.com/blog/1258357
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: