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 から継承する場合、ビットマップを描画するときに、新しく作成した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" //右下角按键内容为'开始' 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);

jvmmanagesgarbagecollectionacrossplatformseftivivivivitybyusagenerationalaphadadadaptingtosandhardwaredefferences.itemployscollectorslikeserial、parallel、cms、andg1、各sutitedfordifferentscenarios

Javaは、Javaの「Write and Averywherewhere」という哲学がJava Virtual Machine(JVM)によって実装されているため、変更なしで異なるオペレーティングシステムで実行できます。コンパイルされたJavaバイトコードとオペレーティングシステムの間の仲介者として、JVMはバイトコードを特定のマシン命令に変換し、JVMがインストールされた任意のプラットフォームでプログラムが独立して実行できることを確認します。

Javaプログラムの編集と実行は、BytecodeとJVMを通じてプラットフォームの独立性を達成します。 1)Javaソースコードを書き、それをbytecodeにコンパイルします。 2)JVMを使用して、任意のプラットフォームでByteCodeを実行して、コードがプラットフォーム間で実行されるようにします。

Javaのパフォーマンスはハードウェアアーキテクチャと密接に関連しており、この関係を理解することでプログラミング機能を大幅に改善できます。 1)JVMは、CPUアーキテクチャの影響を受けるJITコンピレーションを介して、Java Bytecodeを機械命令に変換します。 2)メモリ管理とゴミ収集は、RAMとメモリバスの速度の影響を受けます。 3)キャッシュとブランチ予測Javaコードの実行を最適化します。 4)マルチスレッドと並列処理がマルチコアシステムのパフォーマンスを改善します。

ネイティブライブラリを使用すると、これらのライブラリはオペレーティングシステムごとに個別にコンパイルする必要があるため、Javaのプラットフォームの独立性が破壊されます。 1)ネイティブライブラリはJNIを介してJavaと対話し、Javaが直接実装できない機能を提供します。 2)ネイティブライブラリを使用すると、プロジェクトの複雑さが増し、さまざまなプラットフォームのライブラリファイルの管理が必要です。 3)ネイティブライブラリはパフォーマンスを改善できますが、それらは注意して使用し、クロスプラットフォームテストを実施する必要があります。

JVMは、JavanativeInterface(JNI)およびJava Standard Libraryを介してオペレーティングシステムのAPIの違いを処理します。1。JNIでは、Javaコードがローカルコードを呼び出し、オペレーティングシステムAPIと直接対話できます。 2. Java Standard Libraryは統一されたAPIを提供します。これは、異なるオペレーティングシステムAPIに内部的にマッピングされ、コードがプラットフォーム間で実行されるようにします。

modularitydoesnotdirectlyectlyectjava'splatformindepensence.java'splatformendepenceismaindainededainededainededaindainedaindained bythejvm、butmodularityinfluencesApplucationStructure andmanagement、間接的なインパクチャプラット形成依存性.1)

bytecodeinjavaisthe intermediaterepresentationthateNablesplatformindepence.1)javacodeis compiledintobytecodestoredin.classfiles.2)thejvminterpretsorcompilesthisbytecodeintomachinecodeatime、


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









