1. textview中的gettextsize返回值是以像素(px)为单位的,
而settextsize()是以sp为单位的.
所以如果直接用返回的值来设置会出错,解决办法是用settextsize()的另外一种形式,可以指定单位:
settextsize(int unit, int size) typedvalue.complex_unit_px : pixels typedvalue.complex_unit_sp : scaled pixels typedvalue.complex_unit_dip : device independent pixels
2. 在继承自view时,绘制bitmap时,需要将图片放到新建的drawable-xdpi中,否则容易出现绘制大小发生改变
3. 在文字中加下划线: textview.getpaint().setflags(paint.strike_thru_text_flag);
4. scrollview是继承自framelayout,所以在使用layoutparams时需要用framelayout的
5.在android中几种网络编程的方式:
(1)针对tcp/ip的socket、serversocket
(2)针对udp的datagramsocket、datagrampackage。这里需要注意的是,考虑到android设备通常是手持终端,ip都是随着上网进行分配的。不是固定的。因此开发也是有 一点与普通互联网应用有所差异的。
(3)针对直接url的httpurlconnection
(4)google集成了apache http客户端,可使用http进行网络编程。针对http,google集成了appache http core和httpclient 4版本,因此特别注意android不支持 httpclient 3.x系列,而且目前并不支持multipart(mime),需要自行添加httpmime.jar
(5)使用web service。android可以通过开源包如jackson去支持xmlrpc和jsonrpc,另外也可以用ksoap2去实现webservice
(6) 直接使用webview视图组件显示网页。基于webview 进行开发,google已经提供了一个基于chrome-lite的web浏览器,直接就可以进行上网浏览网页。
6. translateanimation(float fromxdelta, float toxdelta, float fromydelta, float toydelta)
这个是我们最常用的一个构造方法,
float fromxdelta:这个参数表示动画开始的点离当前view x坐标上的差值;
float toxdelta, 这个参数表示动画结束的点离当前view x坐标上的差值;
float fromydelta, 这个参数表示动画开始的点离当前view y坐标上的差值;
float toydelta)这个参数表示动画开始的点离当前view y坐标上的差值;
如果view在a(x,y)点 那么动画就是从b点(x+fromxdelta, y+fromydelta)点移动到c 点 (x+toxdelta,y+toydelta)点.
7.android提供了几种在其他线程中访问ui线程的方法。
activity.runonuithread( runnable ) view.post( runnable ) view.postdelayed( runnable, long )
从网上获取一个网页,在一个textview中将其源代码显示出来
package org.unique.async; import java.io.bytearrayoutputstream; import java.io.inputstream; import java.util.arraylist; import org.apache.http.httpentity; import org.apache.http.httpresponse; import org.apache.http.client.httpclient; import org.apache.http.client.methods.httpget; import org.apache.http.impl.client.defaulthttpclient; import android.app.activity; import android.app.progressdialog; import android.content.context; import android.content.dialoginterface; import android.os.asynctask; import android.os.bundle; import android.os.handler; import android.os.message; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; public class networkactivity extends activity{ private textview message; private button open; private edittext url; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.network); message= (textview) findviewbyid(r.id.message); url= (edittext) findviewbyid(r.id.url); open= (button) findviewbyid(r.id.open); open.setonclicklistener(new view.onclicklistener() { public void onclick(view arg0) { connect(); } }); } private void connect() { pagetask task = new pagetask(this); task.execute(url.gettext().tostring()); } class pagetask extends asynctask<string, integer, string> { // 可变长的输入参数,与asynctask.exucute()对应 progressdialog pdialog; public pagetask(context context){ pdialog = new progressdialog(context, 0); pdialog.setbutton("cancel", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int i) { dialog.cancel(); } }); pdialog.setoncancellistener(new dialoginterface.oncancellistener() { public void oncancel(dialoginterface dialog) { finish(); } }); pdialog.setcancelable(true); pdialog.setmax(100); pdialog.setprogressstyle(progressdialog.style_horizontal); pdialog.show(); } @override protected string doinbackground(string... params) { try{ httpclient client = new defaulthttpclient(); // params[0]代表连接的url httpget get = new httpget(params[0]); httpresponse response = client.execute(get); httpentity entity = response.getentity(); long length = entity.getcontentlength(); inputstream is = entity.getcontent(); string s = null; if(is != null) { bytearrayoutputstream baos = new bytearrayoutputstream(); byte[] buf = new byte[128]; int ch = -1; int count = 0; while((ch = is.read(buf)) != -1) { baos.write(buf, 0, ch); count += ch; if(length > 0) { // 如果知道响应的长度,调用publishprogress()更新进度 publishprogress((int) ((count / (float) length) * 100)); } // 让线程休眠100ms thread.sleep(100); } s = new string(baos.tobytearray()); } // 返回结果 return s; } catch(exception e) { e.printstacktrace(); } return null; } @override protected void oncancelled() { super.oncancelled(); } @override protected void onpostexecute(string result) { // 返回html页面的内容 message.settext(result); pdialog.dismiss(); } @override protected void onpreexecute() { // 任务启动,可以在这里显示一个对话框,这里简单处理 message.settext(r.string.task_started); } @override protected void onprogressupdate(integer... values) { // 更新进度 system.out.println(""+values[0]); message.settext(""+values[0]); pdialog.setprogress(values[0]); } } }
8.spinner不能用在dialog和tabhost中的解决办法
9. eclipse关联jdk源码
(1).点 “window”-> “preferences” -> “java” -> “installed jres”
(2).此时”installed jres”右边是列表窗格,列出了系统中的 jre 环境,选择你的jre,然后点边上的 “edit…”, 会出现一个窗口(edit jre)
(3).选中rt.jar文件的这一项:“c:\program files\java\jre_1.5.0_06\lib\rt.jar”点 左边的“+” 号展开它,
(4).展开后,可以看到“source attachment:(none)”,点这一项,点右边的按钮“source attachment…”, 选择你的jdk目录下的 “src.zip”文件
10.unable to open sync connection!
把设置里的usb调试重启
11.edittext设置光标位置问题
edittext中有一些预置文本的时候,想把光标调到最前面,一开始是使用的setselection(0),结果发现在三星p1000上面有问题。经过研究发现需要先调用edittext.requestfocus(),再调用setselection(0)。否则的话,在2.x的机器上有问题,但3.x上面是好着的。
12.android中home键被系统保留,无法象监听回退键一样用onkeydown,但是可以根据按下home键时会触发的activity和view的一些事件来添加自己的处理代码.网上有人说可以用onattachwindow来拦截home键,没试过
13.在用surfaceview渲染时,如果要想在需要时其中出现其他view,可以将surfaceview和其他view放在layout中,平常时可以将其他view隐藏
14.使用android:imeoptinos可对android自带的软键盘进行一些界面上的设置:
android:imeoptions="flagnoextractui" //使软键盘不全屏显示,只占用一部分屏幕
同时,这个属性还能控件软键盘右下角按键的显示内容,默认情况下为回车键
android:imeoptions="actionnone" //输入框右侧不带任何提示 android:imeoptions="actiongo" //右下角按键内容为'开始' android:imeoptions="actionsearch" //右下角按键为放大镜图片,搜索 android:imeoptions="actionsend" //右下角按键内容为'发送' android:imeoptions="actionnext" //右下角按键内容为'下一步' android:imeoptions="actiondone" //右下角按键内容为'完成'
15.为textview添加阴影
<style name="overlay"> <item name="android:paddingleft">2dip</item> <item name="android:paddingbottom">2dip</item> <item name="android:textcolor">#ffffff</item> <item name="android:textsize">12sp</item> <item name="android:shadowcolor">#00ff00</item> <item name="android:shadowdx">5</item> <item name="android:shadowdy">3</item> <item name="android:shadowradius">6</item> </style> <textview android:id="@+id/test" android:layout_width="fill_parent" android:layout_height="wrap_content" style="@style/<span style="background-color: rgb(250, 250, 250); font-family: helvetica, tahoma, arial, sans-serif; ">overlay</span>" android:text="test" android:gravity="center" />
16.如何将textview中的中文设置成粗体?
在xml文件中使用android:textstyle=”bold” 可以将英文设置成粗体,但是不能将中文设置成粗体,将中文设置成粗体的方法是:
textview tv = (textview)findviewbyid(r.id.textview01); textpaint tp = tv.getpaint(); tp.setfakeboldtext(true);
