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. 뷰를 계승할 때bitmap을 그릴 때 새로 만든drawable-xdpi에 그림을 넣어야 합니다
구문을 사용합니다.
3. 텍스트에 밑줄 넣기:textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); 
4. scrollView는 frame Layout에서 계승된 것이기 때문에 Layout Params를 사용할 때 frame Layout의
5. 안드로이드에서 몇 가지 네트워크 프로그래밍 방식: (1) TCP/IP에 대한 소켓, ServerSocket(2) UDP에 대한 DatagramSocket, DatagramPackage.여기서 주의해야 할 것은 안드로이드 장치가 통상적으로 휴대용 단말기라는 것을 감안하면 IP는 모두 인터넷에 따라 분배된다는 것이다.고정된 거 아니야.그래서 개발도 일반 인터넷 응용과 약간의 차이가 있다.(3) Google은 직접 URL을 위한 HttpURLconnection(4) Apache HTTP 클라이언트를 통합하여 HTTP를 사용하여 네트워크 프로그래밍을 할 수 있습니다.HTTP의 경우 Google은 Appache Http core 및 httpclient 4 버전을 통합하고 있으므로 특히 안드로이드는 httpclient 3을 지원하지 않습니다.x 시리즈는 현재 MIME(Multipart)가 지원되지 않으므로 httpmime을 직접 추가해야 합니다.jar(5)는 웹 서비스를 사용합니다.안드로이드는 잭슨과 같은 소스 패키지를 통해 Xmlrpc와 Jsonrpc를 지원할 수 있고, Ksoap2를 사용하여 웹 서비스(6)를 실현할 수 있으며, 웹뷰 구성 요소로 웹 페이지를 직접 표시할 수도 있다.WebView를 기반으로 개발되었고 Google은 크롬-lite 기반 웹 브라우저를 제공하여 웹 사이트를 직접 방문할 수 있습니다.
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 ) Hanlder 
AsyncTask(권장)
         ,   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..."를 누르십시오.창이 나타납니다.
(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를 호출해야 한다는 것을 발견했다.requestFocus (), setSelection (0) 을 호출합니다.그렇지 않으면x의 기계에 문제가 있다.x위는 괜찮아요.
12. 안드로이드에서 Home 키는 시스템에 보존되어 있으며, 리셋 키를 감청하는 것처럼 onKey Down을 사용할 수 없지만, 홈 키를 눌렀을 때 터치되는 activity와view의 이벤트에 따라 자신의 처리 코드를 추가할 수 있습니다.인터넷상에서 어떤 사람은 onAttach Window로 Home 키를 차단할 수 있다고 말했지만, 시도해 본 적이 없다
13.surfaceView로 렌더링할 때 필요할 때 다른 View가 나타나려면surfaceView와 다른 View를layout에 놓고 평상시에는 다른view를 숨길 수 있습니다
14. android:imeOptinos를 사용하면 안드로이드가 자체로 가지고 있는 소프트 키보드에 대해 몇 가지 인터페이스의 설정을 할 수 있다.
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/Overlay"   
       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);

좋은 웹페이지 즐겨찾기