android开发部分经验总结

时间:2024.5.2

Android开发的16条小经验总结

2015-03-25 分类:Android开发、编程开发、首页精华1人评论 来源:博客园

分享到:更多3

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).点 “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);

更多相关推荐:
《Android应用开发》个人总结报告

Android应用开发个人总结报告刚开始接触Android感觉到它很有意思在界面开发上和web也可以形成了相通的架构更加方便视觉上也是非常的酷在前期我通过的大量的AndroidSDK开发范例大全中的例子以及An...

android开发总结

Android开发简介Android应用程序的五大基本组件Activity应用表示层基类Activity一个活动表示一个可视化的用户界面关注一个用户从事的事件例如一个活动可能表示一个用户可选择的菜单项列表或者可...

《Android项目开发实训》项目总结报告

实训报告姓名祝新学号1144131专业软件技术课程名称android实训项目名称闹铃指导教师王皓实训日期20xx年10月28日至20xx年1月2日20xx年1月2日Android项目开发实训总结报告目录第一章概...

android软件开发工程师转正个人总结

个人总结我于20xx年x月x日进入公司,根据公司的需要,目前担任Android软件工程师一职,负责综合代维,考务通手机客户端的开发工作。将近3个月的时候在这个新的工作环境我收获颇深。开始让我独立完成整个项目,…

Android开发总结

出来工作半年多了没啥好交代的就说说自己半年来的Android开发经历1IDE这半年来从Eclipse到AndroidStudio经历了两个IDE在这里做一下简单的评价如果真要说AndroidStudio是基本上...

android开发总结

Android图片平铺效果方法一XML方式平铺首先两个单词的中文意思分别是dither抖动和tileMode平铺1先来介绍tileMode平铺tileMode属性就是用于定义背景的显示模式disabled默认值...

Android开发知识点总结

如何获取标题栏和状态栏高度1获取状态栏高度decorView是window中的最顶层view可以从window中获取到decorView然后decorView有个getWindowVisibleDisplayF...

Android学习笔记总结

Android学习笔记总结第一步Android1在Windows下搭建Android开发环境以及HelloWorld程序搭建Android的开发环境以及写一个简单的示例程序在Windows下搭建Android开...

Android总结篇系列:Android广播机制===

Android总结篇系列Android广播机制1Android广播机制概述Android广播分为两个方面广播发送者和广播接收者通常情况下BroadcastReceiver指的就是广播接收者广播接收器广播作为An...

Android面试题总结强劲版(一)

自己总结的最强android应用面试题集1activity的生命周期onCreate在activity第一次被创建的时候调用这里是你做所有初始化设置的地方创建视图绑定数据至列表等如果曾经有状态记录参阅后述Sav...

Android面试题总结强劲版(一)

自己总结的最强android应用面试题集1activity的生命周期onCreate在activity第一次被创建的时候调用这里是你做所有初始化设置的地方创建视图绑定数据至列表等如果曾经有状态记录参阅后述Sav...

课题:Android源码编译整理总结

Android源码编译整理总结经过好几天的折腾终于在Ubuntu下成功编译源码sdk和adt并成功使用真实费来好大劲即便其中还是有很多不明白的地方下面总结以下自己遇到的问题留到以后查看以及给遇到和我一样问题的人...

android开发总结(30篇)