Rumah Java javaTutorial android开发的16条小经验总结

android开发的16条小经验总结

Nov 26, 2016 pm 01:42 PM
android pembangunan android

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

2204.jpg

 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
Salin selepas log masuk

  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 )
Salin selepas log masuk

  从网上获取一个网页,在一个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]);   
        }   
     }   
}
Salin selepas log masuk

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"    //右下角按键内容为&#39;开始&#39;     
android:imeOptions="actionSearch"  //右下角按键为放大镜图片,搜索     
android:imeOptions="actionSend"    //右下角按键内容为&#39;发送&#39;     
android:imeOptions="actionNext"   //右下角按键内容为&#39;下一步&#39;     
android:imeOptions="actionDone"  //右下角按键内容为&#39;完成&#39;
Salin selepas log masuk

  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" />
Salin selepas log masuk

  16.如何将TextView中的中文设置成粗体?

  在xml文件中使用android:textStyle=”bold” 可以将英文设置成粗体,但是不能将中文设置成粗体,将中文设置成粗体的方法是:

TextView tv = (TextView)findViewById(R.id.TextView01); 
TextPaint tp = tv.getPaint(); 
tp.setFakeBoldText(true);
Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Laporan baharu memberikan penilaian yang memberatkan terhadap khabar angin tentang peningkatan kamera Samsung Galaxy S25, Galaxy S25 Plus dan Galaxy S25 Ultra Laporan baharu memberikan penilaian yang memberatkan terhadap khabar angin tentang peningkatan kamera Samsung Galaxy S25, Galaxy S25 Plus dan Galaxy S25 Ultra Sep 12, 2024 pm 12:23 PM

Dalam beberapa hari kebelakangan ini, Ice Universe terus mendedahkan butiran mengenai Galaxy S25 Ultra, yang secara meluas dipercayai sebagai telefon pintar utama Samsung yang seterusnya. Antara lain, pembocor itu mendakwa bahawa Samsung hanya merancang untuk membawa satu peningkatan kamera

Samsung Galaxy S25 Ultra bocor dalam imej paparan pertama dengan perubahan reka bentuk khabar angin didedahkan Samsung Galaxy S25 Ultra bocor dalam imej paparan pertama dengan perubahan reka bentuk khabar angin didedahkan Sep 11, 2024 am 06:37 AM

OnLeaks kini telah bekerjasama dengan Android Headlines untuk memberikan pandangan pertama pada Galaxy S25 Ultra, beberapa hari selepas percubaan gagal untuk menjana lebih daripada $4,000 daripada pengikut X (dahulunya Twitter). Untuk konteks, imej pemaparan yang dibenamkan di bawah h

IFA 2024 | NXTPAPER 14 TCL tidak akan sepadan dengan prestasi Galaxy Tab S10 Ultra, tetapi ia hampir sepadan dengan saiznya IFA 2024 | NXTPAPER 14 TCL tidak akan sepadan dengan prestasi Galaxy Tab S10 Ultra, tetapi ia hampir sepadan dengan saiznya Sep 07, 2024 am 06:35 AM

Di samping mengumumkan dua telefon pintar baharu, TCL juga telah mengumumkan tablet Android baharu yang dipanggil NXTPAPER 14, dan saiz skrinnya yang besar adalah salah satu nilai jualannya. NXTPAPER 14 menampilkan versi 3.0 jenama tandatangan TCL panel LCD matte

Laporan baharu memberikan penilaian yang memberatkan terhadap khabar angin tentang peningkatan kamera Samsung Galaxy S25, Galaxy S25 Plus dan Galaxy S25 Ultra Laporan baharu memberikan penilaian yang memberatkan terhadap khabar angin tentang peningkatan kamera Samsung Galaxy S25, Galaxy S25 Plus dan Galaxy S25 Ultra Sep 12, 2024 pm 12:22 PM

Dalam beberapa hari kebelakangan ini, Ice Universe terus mendedahkan butiran mengenai Galaxy S25 Ultra, yang secara meluas dipercayai sebagai telefon pintar utama Samsung yang seterusnya. Antara lain, pembocor itu mendakwa bahawa Samsung hanya merancang untuk membawa satu peningkatan kamera

Vivo Y300 Pro mempunyai bateri 6,500 mAh dalam badan 7.69 mm yang tipis Vivo Y300 Pro mempunyai bateri 6,500 mAh dalam badan 7.69 mm yang tipis Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro baru sahaja didedahkan sepenuhnya, dan ia merupakan salah satu telefon Android jarak pertengahan paling tipis dengan bateri yang besar. Tepatnya, telefon pintar ini hanya tebal 7.69 mm tetapi mempunyai bateri 6,500 mAh. Ini adalah kapasiti yang sama seperti yang dilancarkan baru-baru ini

Samsung Galaxy S24 FE dibilkan untuk melancarkan kurang daripada yang dijangkakan dalam empat warna dan dua pilihan memori Samsung Galaxy S24 FE dibilkan untuk melancarkan kurang daripada yang dijangkakan dalam empat warna dan dua pilihan memori Sep 12, 2024 pm 09:21 PM

Samsung belum menawarkan sebarang petunjuk lagi tentang bila ia akan mengemas kini siri telefon pintar Edisi Peminat (FE). Seperti sedia ada, Galaxy S23 FE kekal sebagai edisi terbaharu syarikat, telah dibentangkan pada awal Oktober 2023. Walau bagaimanapun, banyak

Xiaomi Redmi Note 14 Pro Plus tiba sebagai telefon pintar Qualcomm Snapdragon 7s Gen 3 pertama dengan kamera Light Hunter 800 Xiaomi Redmi Note 14 Pro Plus tiba sebagai telefon pintar Qualcomm Snapdragon 7s Gen 3 pertama dengan kamera Light Hunter 800 Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plus kini rasmi sebagai pengganti langsung kepada Redmi Note 13 Pro Plus tahun lepas (sekira $375 di Amazon). Seperti yang dijangkakan, Redmi Note 14 Pro Plus mengetuai siri Redmi Note 14 bersama Redmi Note 14 dan Redmi Note 14 Pro. Li

Motorola Razr 50s menunjukkan dirinya sebagai bajet baharu yang boleh dilipat dalam kebocoran awal Motorola Razr 50s menunjukkan dirinya sebagai bajet baharu yang boleh dilipat dalam kebocoran awal Sep 07, 2024 am 09:35 AM

Motorola telah mengeluarkan banyak peranti tahun ini, walaupun hanya dua daripadanya boleh dilipat. Untuk konteks, sementara kebanyakan dunia telah menerima pasangan itu sebagai Razr 50 dan Razr 50 Ultra, Motorola menawarkannya di Amerika Utara sebagai Razr 2024 dan Razr 2

See all articles