Heim  >  Artikel  >  Java  >  16 kleine Erfahrungszusammenfassungen zur Android-Entwicklung

16 kleine Erfahrungszusammenfassungen zur Android-Entwicklung

伊谢尔伦
伊谢尔伦Original
2016-11-26 13:42:171045Durchsuche

16 kleine Erfahrungszusammenfassungen zur Android-Entwicklung. Ich hoffe, dass sie Freunden, die sich mit Android-Entwicklung beschäftigen, hilfreich sein werden.

16 kleine Erfahrungszusammenfassungen zur Android-Entwicklung

1. Der Rückgabewert von getTextSize in TextView ist in Pixel (px),

und setTextSize() ist in

Wenn Sie daher den zurückgegebenen Wert direkt zum Festlegen verwenden, tritt ein Fehler auf. Die Lösung besteht darin, eine andere Form von setTextSize() zu verwenden, die die Einheit angeben kann:

setTextSize(int unit, int size)   
TypedValue.COMPLEX_UNIT_PX : Pixels   
TypedValue.COMPLEX_UNIT_SP : Scaled Pixels   
TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels

2. Geerbt von Ansicht Beim Zeichnen einer Bitmap müssen Sie das Bild in die neu erstellte zeichnungsfähige xdpi-Datei einfügen, sonst ändert sich die Zeichnungsgröße leicht

3. Unterstreichen Sie den Text: textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG ) ;

4. scrollView erbt von FrameLayout, daher müssen Sie bei Verwendung von LayoutParams FrameLayouts verwenden

5. Mehrere Netzwerkprogrammierungsmethoden in Android:

1) Socket und ServerSocket für TCP/IP

  (2) DatagramSocket und DatagramPackage für UDP. Hierbei ist zu beachten, dass IPs zusammen mit dem Internetzugang zugewiesen werden, da es sich bei Android-Geräten in der Regel um Handheld-Terminals handelt. Nicht behoben. Daher unterscheidet sich die Entwicklung ein wenig von gewöhnlichen Internetanwendungen.

 (3) HttpURLConnection für direkte URL

 (4) Google hat den Apache HTTP-Client integriert und kann HTTP für die Netzwerkprogrammierung verwenden. Für HTTP hat Google die Versionen Appache Http Core und httpclient 4 integriert. Bitte beachten Sie daher, dass Android die httpclient 3.x-Serie nicht unterstützt und Multipart (MIME) derzeit nicht unterstützt. jar

by yourself (5 ) nutzt Webdienste. Android kann Xmlrpc und Jsonrpc über Open-Source-Pakete wie Jackson unterstützen. Darüber hinaus kann es auch Ksoap2 zum Implementieren von Webservice verwenden

 (6) Verwenden Sie die WebView-Ansichtskomponente direkt zum Anzeigen von Webseiten. Basierend auf WebView hat Google einen auf Chrome-Lite basierenden Webbrowser bereitgestellt, der direkt im Internet surfen kann.

6. TranslateAnimation (float from Der Unterschied zwischen dem Startpunkt der Animation und der aktuellen X-Koordinate der Ansicht;

float toXDelta, dieser Parameter stellt den Unterschied zwischen dem Endpunkt der Animation und der aktuellen X-Koordinate der Ansicht dar Koordinate;

float fromYDelta, dieser Parameter stellt die Differenz zwischen dem Animationsstartpunkt und der aktuellen Y-Koordinate der Ansicht dar;

float toYDelta) Dieser Parameter stellt die Differenz zwischen dem Animationsstartpunkt und dem dar aktuelle Y-Koordinate der Ansicht;

Wenn die Ansicht an Punkt A (x, y) liegt, soll sich die Animation von Punkt B (x+vonXDelta, y+vonYDelta) zu Punkt C (x+zuXDelta, y+zuYDelta) bewegen ).

7. Android bietet mehrere Möglichkeiten, auf den UI-Thread in anderen Threads zuzugreifen.

Besorgen Sie sich eine Webseite aus dem Internet und zeigen Sie deren Quellcode in einer Textansicht an

Activity.runOnUiThread( Runnable ) 
View.post( Runnable ) 
View.postDelayed( Runnable, long )
8. Lösung für das Problem, dass Spinner nicht im Dialog und Tabhost verwendet werden kann

 9. Eclipse-zugehöriger JDK-Quellcode
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]);   
        }   
     }   
}

 (1) Klicken Sie auf „Fenster“-> „Java“-> (2) Zu diesem Zeitpunkt befindet sich rechts neben „Installierte JRES“ ein Listenbereich, der die JRE-Umgebungen im System auflistet. Klicken Sie dann auf „Bearbeiten…“ daneben Es erscheint das Fenster (JRE bearbeiten)

(3). Wählen Sie dieses Element der rt.jar-Datei aus: „c:program filesjavajre_1.5.0_06librt.jar“ und klicken Sie zum Erweitern auf das „+“-Zeichen auf der linken Seite it,

(4). Nach der Erweiterung sehen Sie „Quellanhang:(keine)“, klicken Sie auf dieses Element, klicken Sie rechts auf die Schaltfläche „Quellanhang…“ und wählen Sie „src. zip“-Datei in Ihrem JDK-Verzeichnis

 10. Synchronisierungsverbindung kann nicht geöffnet werden!

USB-Debugging in den Einstellungen neu starten

11. Problem beim Festlegen der Cursorposition in EditText

Wenn es in EditText einige voreingestellte Texte gibt, möchte ich den Cursor dorthin bewegen Zuerst habe ich setSelection(0) verwendet, aber festgestellt, dass es beim Samsung P1000 ein Problem gab. Nach Recherchen wurde festgestellt, dass zuerst EditText.requestFocus() und dann setSelection(0) aufgerufen werden muss. Andernfalls wird es auf 2.x-Maschinen Probleme geben, auf 3.x-Maschinen ist es jedoch in Ordnung.

12. Die Home-Schaltfläche in Android ist vom System reserviert. Sie können onKeyDown nicht so verwenden, wie Sie die Zurück-Schaltfläche überwachen können. Sie können jedoch Ihren eigenen Verarbeitungscode basierend auf einigen Aktivitätsereignissen hinzufügen und anzeigen ausgelöst werden, wenn die Home-Taste gedrückt wird. Jemand im Internet hat gesagt, dass man onAttachWindow verwenden kann, um die Home-Taste abzufangen, aber ich habe es noch nie versucht

13. Beim Rendern mit surfaceView, wenn Sie möchten, dass andere Ansichten angezeigt werden Wenn bei Bedarf angezeigt wird, können Sie die Oberflächenansicht und andere Ansichten in das Layout einfügen. Sie können andere Ansichten normalerweise ausblenden

14. Verwenden Sie android:imeOptinos, um einige Schnittstelleneinstellungen für die mit Android gelieferte Softtastatur vorzunehmen:

android:imeOptions="flagNoExtractUi" //Verwendung Die Softtastatur wird nicht im Vollbildmodus angezeigt, sondern nimmt nur einen Teil des Bildschirms ein.

Gleichzeitig kann diese Eigenschaft auch die Anzeige steuern Inhalt der Tasten in der unteren rechten Ecke der Softtastatur. Standardmäßig ist es die Eingabetaste

15. Schatten zur Textansicht hinzufügen



16. Wie stelle ich das Chinesisch in TextView so ein, dass es fett dargestellt wird?

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

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn