UI設計と実装は、Androidの開発の重要な部分である、UIは、爆発に醜い、APPの性能がどんなに良い、それは多くの人がそれを使用するがありません悪いと推定されていないか、そして真ん中に対処していなかったUIとビジネスロジックコードの場合それは、APPのパフォーマンスに影響します。少しを総括するには、いくつかのUI関連の問題は、開発中に遭遇だけでなく、必要とする人々に利用できるソリューションです。
1、Androidの全画面表示
方法:requestWindowFeature(Window.FEATURE_NO_TITLE)。
GetWindow()。でsetFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN、
WindowManager.LayoutParams.FLAG_FULLSCREEN);
図2に示すように、視認性の差はGONE不可視可視属性
設定方法:
XML文件:アンドロイド:可視= "見えます"
Javaの代码:view.setVisibility(View.VISIBLE)。
違い:
VISIBLE:目に見えるコントロールを設定します。
INVISIBLE:セットのコントロールは表示されません。レイアウト空間制御所有権を保持します。
GONE:非表示にするには、コントロールを設定します。コントロールレイアウトスペース占有を保持しません。
図3に示すように、ドロップダウンで作成されたアイコンの右上隅(マイクロチャネルメニュー項目を掃引と同様)
/ ** *メニューを作成します* /
@オーバーライド
パブリックブールonCreateOptionsMenu(メニューメニュー){
menu.add(Menu.NONE、Menu.FIRST + 1、0、getResources()のgetString(R.string.scan_menu_text)。)setIcon(R.drawable.scan_icon_24)。
trueを返します。
}
/ **
*反射setOptionalIconsVisible mOptionalIconsVisibleがtrueに設定メソッドを呼び出すためのMenuBuilder使用は、メニュー設定のアイコンがのみに表示されます
*メニュー表示アイコンとテキストを同時にしてみましょう
* @param FEATUREID
* @paramメニュー
* @return
* /
@オーバーライド
パブリックブールonMenuOpened(int型FEATUREID、メニューメニュー){
もし(メニュー!= NULL){
IF(menu.getClass()。getSimpleName()。equalsIgnoreCase( "のMenuBuilder")){
{試します
方法メソッド= menu.getClass()getDeclaredMethod( "setOptionalIconsVisible"、Boolean.TYPE)。
method.setAccessible(真の);
method.invoke(メニュー、真の);
}キャッチ(例外e){
e.printStackTrace();
}
}
}
super.onMenuOpened(FEATUREID、メニュー)を返します。
}
/ **
*イベントのメニューをクリックします
* /
@オーバーライド
パブリックブール(MenuItemのアイテム){super.onOptionsItemSelected(項目)onOptionsItemSelected。
スイッチ(item.getItemId()){
ケースMenu.FIRST + 1:
テントの意図=新しいテント(RIWarehouseActivity.this、CaptureActivity.class)。startActivityForResult(意図、Constant.REQ_QR_CODE)。
ブレーク;
デフォルト:休憩;
}
trueを返します。
}
4、コントロールに境界線スタイルを追加します
追加border_style.xmlは描画可能ファイルディレクトリ
<?xml version = "1.0" エンコード= "UTF-8"?>
<形状のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android">
<ストロークアンドロイド:幅= "1DP" アンドロイド:色= "#999999" />
<固体アンドロイド:色= "アンドロイド@:カラー/透明" />
<コーナーアンドロイド:半径= "2DP"> </コーナー>
</形状>
コントロールのプラスアンドロイドレイアウトプロパティ:背景=「/描画可能border_style @は」友達になることができます。
5、デフォルトのスタイルスピナーを変更
ファイルcustom_spinner_item_layout.xmlを作成します。
<?xml version = "1.0" エンコード= "UTF-8"?>
<! - スピナー拡大アイテムのレイアウト後に - >
<のTextViewのアンドロイド:ID = "@ + ID / spinner_textView" のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" アンドロイド:layout_width = "match_parent" アンドロイド:layout_height = "wrap_content" アンドロイド。重力= "センター" アンドロイド:パディング= "3DP" アンドロイド:TEXTSIZE = "8PT" アンドロイド:layout_margin = "5DP" アンドロイド:の、textColor = "@色/ colorSimpleBlack"> </のTextView>
使用中のアクティビティ:
arrAdapter =新しいArrayAdapterの<string>(ScanFirstActivity.this、R.layout.custom_spinner_item_layout、storageDeptsList); storageDeptSpinner.setAdapter(arrAdapter)。
6、TextViewには効果を強調しました
リソースファイル:
<資源>
<文字列名= "こんにちは"> <U>電話:0123456 </ U> </文字列>
</リソース>
コード:
TextViewのTextView =(のTextView)findViewById(R.id.tv_test)。textView.setText(Html.fromHtml( "<U>" + "0123456" + "</ U>"));
若しくは
。TextView.getPaint()でsetFlags(UNDERLINE_TEXT_FLAGペイント。); //下線のTextView .getPaint()setAntiAlias(真);. //アンチエイリアス
7、英語に切り替えた後、ページホワイトボードの問題
理由:テキストがページ全体を洗い流すことができない原因と、ページを超え、長すぎます。あなたは、テキストの長さを変更することができます。
8、ページのスクロール、および全体的な問題
方法:外ScrollViewにレイアウトを追加します。画面を埋める親コントロールにそれらを適合させます。ローリングないせいぜい一つの画面内の内容は、ときに、複数の画面の内容は、彼らがスクロールできるとき。
問題が発生する可能性あり:ScrollViewは、唯一の直接の子をホストすることができます。
理由:ScrollViewは唯一の直接の子のレイアウトを持つことができます。
ソリューション:内部のレイアウトに包まれた複数のサブレイアウト、ScrollViewレイアウトの子として、このレイアウトを話します。
9、ダイアログウィンドウを追加することができません - トークンnullはアプリケーション間違った解決のためではありません
AlertDialogダイアログ=新AlertDialog.Builder(文脈、R.style.Dialog).create();
パラメータを使用すると、現在のコンテキストのアクティビティを使用する必要があり、アプリケーションのグローバルコンテキストを使用することはできません。
10、PopupLayoutのAndroidのカスタムビュー
使用中に、上記のレイアウトでは、ポップアップボックスにするとベース:
コードを使用します。
View view=View.inflate(LoginActivity.this,R.layout.popup_fill_host_layout,null);
popupLayout=PopupLayout.init(LoginActivity.this,view);
popupLayout.setUseRadius(true);popupLayout.setWidth(350,true);
popupLayout.setHeight(300,true);
popupLayout.show(PopupLayout.POSITION_CENTER);
//绑定控件
hostPortEdit = view.findViewById(R.id.hostPortEdit);
hostPortEdit.setText(PreferenceUtil.getPreference(getApplication(),"Host"));
hostFillConfirmBtn = view.findViewById(R.id.hostFillConfirmBtn);
hostFillGiveUpBtn = view.findViewById(R.id.hostFillGiveUpBtn);
hostFillConfirmBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newHost = hostPortEdit.getText().toString();
if(!StringUtil.isBlank(newHost)){ PreferenceUtil.setPreference(getApplication(),"Host",newHost);}
Toast.makeText(getApplicationContext(), getResources().getString(R.string.save_success), Toast.LENGTH_SHORT).show(); popupLayout.dismiss();
}});
hostFillGiveUpBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupLayout.dismiss();
}});
11,获取自定义view中的控件
View view=View.inflate(LoginActivity.this,R.layout.popup_fill_host_layout,null);
popupLayout=PopupLayout.init(LoginActivity.this,view);
popupLayout.setUseRadius(true);
popupLayout.setWidth(350,true);
popupLayout.setHeight(300,true);
popupLayout.show(PopupLayout.POSITION_CENTER);
//绑定控件
hostPortEdit = view.findViewById(R.id.hostPortEdit);
或者
PopUpDialog newDialog = new PopUpDialog(MsgReView.this, R.style.MyDialog);newDialog.setCanceledOnTouchOutside(true); View view = newDialog.getCustomView(); TextView text1 = (TextView)view.findViewById(R.id.textViewTotal);
12,集成二维码扫描功能
欢迎使用:封装与接入ZXing扫码库
码字不易,如果觉得有帮助,一定要给我点赞哟~~
不然信不信我砸了你家灯,半夜偷亲你 ( ̄ε  ̄) !!!