ホームページ Java &#&チュートリアル Android 開発に関する 16 の小さな経験の要約

Android 開発に関する 16 の小さな経験の要約

Nov 26, 2016 pm 01:42 PM
android アンドロイド開発

Android 開発に関する 16 の小さな経験の要約。Android 開発に携わるすべての友人に役立つことを願っています。

Android 開発に関する 16 の小さな経験の要約

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 から継承する場合、ビットマップを描画するときに、新しく作成した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 コアと httpclient 4 バージョンを統合しているため、Android が httpclient 3 をサポートしていないことに特に注意してください。 Android は、Jackson などのオープンソース パッケージを通じて Xmlrpc と Jsonrpc をサポートできます。さらに、Ksoap2 を使用して Webservice を実装することもできます

(6) WebView ビュー コンポーネントを直接使用して Web ページを表示します。 GoogleはWebViewをベースに開発し、直接Webを閲覧できるchrome-liteベースのWebブラウザを提供しています。

6. TranslateAnimation(float from Value;

Float toXDelta、このパラメータはアニメーションの終了点と現在のビュー X 座標の差を表します。

float fromYDelta、このパラメータはアニメーションの開始点と現在のビュー X 座標の差を表しますビューの Y 座標;

float toYDelta ) このパラメーターは、アニメーションの開始点と現在のビューの Y 座標の差を表します

ビューが点 A (x, y) にある場合、アニメーションはそこから移動します。 point B (x+fromXDelta, y+fromYDelta) to point C (x+toXDelta,y+toYDelta) point.

7.android では、他のスレッドの UI スレッドにアクセスするためのメソッドがいくつか提供されています。

Activity.runOnUiThread( Runnable ) 
View.post( Runnable ) 
View.postDelayed( Runnable, long )
ログイン後にコピー

インターネットからWebページを取得し、そのソースコードを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がダイアログとタブホストで使えない原因の解決策

9. EclipseはJDKのソースコードを関連付けます

(1)をクリックします。 「ウィンドウ」->「設定」->「Java」->「インストールされたJRES」

(2) このとき、「インストールされたJRES」の右側にはJRE環境がリストされます。システム内で JRE を選択し、横にある「編集...」をクリックすると、ウィンドウ (JRE の編集) が表示されます (3) rt.jar ファイルの「c:program filesjavajre_1.5.0」を選択します。 _06librt.jar」を左側の「+」記号で展開します

(4)。展開後、「Source Attachment: (none)」が表示されるので、この項目をクリックし、「Source Attachment...」ボタンをクリックします。右側の「」をクリックし、

の下にあるJDKディレクトリ「src.zip」ファイルを選択します。10.同期接続を開けません!

設定でUSBデバッグを再開します

11. EditTextでのカーソル位置設定の問題

EditTextにいくつかのプリセットテキストがあるとき、カーソルを前に移動したいのですが、でsetSelection(0)を使いました。まず、Samsung P1000 に問題があることがわかりました。調査の結果、最初に EditText.requestFocus() を呼び出し、次に setSelection(0) を呼び出す必要があることがわかりました。そうしないと、2.x マシンでは問題が発生しますが、3.x マシンでは問題ありません。

12. Android のホーム ボタンはシステムによって予約されており、戻るボタンを監視するように onKeyDown を使用することはできませんが、ホーム ボタンがトリガーされたときにトリガーされるアクティビティやビューの一部のイベントに基づいて独自の処理コードを追加できます。インターネット上の一部の人は、onAttachWindow を使用してホームボタンをインターセプトできると言っていますが、試したことはありません

13. surfaceView でレンダリングするときに、必要に応じて他の View を表示したい場合は、surfaceView とレイアウト内の他のビューを表示し、通常は他のビューを非表示にすることができます

14. android:imeOptinos を使用して、Android に付属のソフト キーボードのインターフェイス設定をいくつか行います:

android:imeOptions="flagNoExtractUi" //So thatソフト キーボードは全画面表示されず、画面の一部のみを占めます

同時に、この属性は、ソフト キーボードの右下隅にあるキー、つまり Enter キーの表示内容も制御できます。デフォルト

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;
ログイン後にコピー

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);
ログイン後にコピー


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:23 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Sep 11, 2024 am 06:37 AM

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します Sep 07, 2024 am 06:35 AM

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:22 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Sep 12, 2024 pm 09:21 PM

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

Motorola Razr 50s は初期リークで新たな予算を折り畳める可能性があることを示す Motorola Razr 50s は初期リークで新たな予算を折り畳める可能性があることを示す Sep 07, 2024 am 09:35 AM

Motorola は今年数え切れないほどのデバイスをリリースしましたが、そのうち折りたたみ式デバイスは 2 つだけです。ちなみに、世界の大部分ではこのペアが Razr 50 および Razr 50 Ultra として受け入れられていますが、Motorola は北米では Razr 2024 および Razr 2 として提供しています。

See all articles