Android开发的16条小技巧经验总结

Android开发的16条小技巧经验总结,第1张

概述  Android开发的16条小经验总结,希望对各位搞Android开发的朋友有所帮助。  1.TextView中的getTextSize返回值是以像素(px)为单位的,

  AndroID开发的16条小经验总结,希望对各位搞AndroID开发的朋友有所帮助。

  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).点 &ldquo;window&rdquo;-> &ldquo;Preferences&rdquo; -> &ldquo;Java&rdquo; -> &ldquo;Installed JRES&rdquo;

  (2).此时&rdquo;Installed JRES&rdquo;右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 &ldquo;Edit&hellip;&rdquo;, 会出现一个窗口(Edit JRE)

  (3).选中rt.jar文件的这一项:&ldquo;c:\program files\java\jre_1.5.0_06\lib\rt.jar&rdquo;点 左边的&ldquo;+&rdquo; 号展开它,

  (4).展开后,可以看到&ldquo;Source Attachment:(none)&rdquo;,点这一项,点右边的按钮&ldquo;Source Attachment&hellip;&rdquo;,选择你的JDK目录下的 &ldquo;src.zip&rdquo;文件

  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=&rdquo;bold&rdquo; 可以将英文设置成粗体,但是不能将中文设置成粗体,将中文设置成粗体的方法是:

TextVIEw tv = (TextVIEw)findVIEwByID(R.ID.TextVIEw01); TextPaint tp = tv.getPaint(); tp.setFakeBoldText(true);
总结

以上是内存溢出为你收集整理的Android开发的16条小技巧经验总结全部内容,希望文章能够帮你解决Android开发的16条小技巧经验总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1149097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存