日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android小技巧

發(fā)布時(shí)間:2023/12/20 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android小技巧 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總結(jié)一些平時(shí)項(xiàng)目小技巧:

1、context.getResources().getDisplayMetrics()報(bào)空指針異常

Resources res; if (context == null)res = Resources.getSystem(); elseres = context.getResources(); DisplayMetrics dm = res.getDisplayMetrics();

2、關(guān)于ScrollView:

(1)設(shè)置顯示置頂

? ? ? ??布局中添加ScrollView以后當(dāng)ScrollView中的控件太多時(shí),頁(yè)面會(huì)顯示到ScrollView的最低端。想要從頂端開(kāi)始顯示,則要在ScrollView上面一個(gè)控件設(shè)置

android:focusableInTouchMode="true"?

<Viewandroid:layout_width="0dp"android:layout_height="0dp"android:focusableInTouchMode="true" /><ScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content" />


(2)ScrollView設(shè)置視圖的滾動(dòng)位置

? ? 很多人在設(shè)置scrollTo方法時(shí)候發(fā)現(xiàn)都無(wú)效

? ? mScrollView.scrollTo(offsetx,offsety);? ? ? ??在onCreate和onResume 里調(diào)用的這個(gè)方法,在方法沒(méi)有結(jié)束的時(shí)候,activity的數(shù)據(jù)并沒(méi)有完全加載好,所以這個(gè)時(shí)候調(diào)用該方法不會(huì)有什么實(shí)際的效果的。

解決方法:

mScrollView.post(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubmScrollView.scrollTo(offsetx, offsety);}});


3、listView設(shè)置點(diǎn)擊無(wú)背景顏色:

android:listSelector="@android:color/transparent"

4、一些關(guān)于SeekBar的問(wèn)題:

(1)下面這句是設(shè)置Thumb在兩端的時(shí)候,可以完全顯示。

android:thumbOffset="0dp"

? ? ? ??不設(shè)置效果圖:

? ? ? ??


? ? ? ??設(shè)置后效果圖:

? ? ? ??

(2)下面這兩句是設(shè)置Seekbar的高度(progressBar同理)

android:maxHeight="10dp" android:minHeight="10dp"

? ? ? ??不添加這兩句效果圖:

? ? ? ??


? ? ? ??增加后效果圖:


? ? ? ??

(3) SeekBar設(shè)置不可點(diǎn)擊、滑動(dòng)

? ? ? ??自定義類extends SeekBar,重寫onTouchEvent() return FALSE 即可:

/*** onTouchEvent 是在 SeekBar 繼承的抽象類 AbsSeekBar*/@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stub// 原來(lái)是要將TouchEvent傳遞下去的,我們不讓它傳遞下去就行了// return super.onTouchEvent(event);return false;}

5、EditText輸入為密碼的時(shí)候,顯示密碼明文或者“···”

// 顯示密碼明文 mEtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); // 隱藏密碼明文 mEtPassword.setInputType(InputType.TYPE_CLASS_TEXT| InputType.TYPE_TEXT_VARIATION_PASSWORD);

6、Android用xml畫(huà)虛線

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line" > <!--顯示一條虛線,破折線的寬度為dashWith,破折線之間的空隙的寬度為dashGap,當(dāng)dashGap=0dp時(shí),為實(shí)線 --> <stroke android:dashGap="3dp" android:dashWidth="3dp" android:color="@color/black_light_10" /> <!-- 虛線的高度 --> <size android:height="1dp" /> </shape>
? ? ? ??很多人會(huì)發(fā)現(xiàn)運(yùn)行后顯示還是為實(shí)線。

解決方法:

? ? ? ??關(guān)閉硬件加速:1、在AndroidManifest.xml的Application標(biāo)簽中加入android:hardwareAccelerated="false"。這種方法會(huì)令整個(gè)app顯得卡頓(不推薦)。

? ?? ? ? ??? ? ? ??? ? ? ??? ? ? ? ?2、在使用的地方如View標(biāo)簽中加上?android:layerType="software" ,即可對(duì)單獨(dú)的View標(biāo)簽進(jìn)行關(guān)閉。

6.1下滑線:

textView.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);

7、為listView顯示設(shè)置縮放動(dòng)畫(huà)

LayoutAnimationController lac; ScaleAnimation sa;sa = new ScaleAnimation(0, 1, 0, 1); sa.setDuration(1000); lac = new LayoutAnimationController(sa, 0.5f);mLvBets.setLayoutAnimation(lac);

8、自定義Toast

View view = LayoutInflater.from(this).inflate(R.layout.custom_toast,null); TextView tvToastCcontent = (TextView) view.findViewById(R.id.tv_toast_content);tvToastCcontent.setText(content);Toast toast = new Toast(this);toast.setView(view);toast.setDuration(Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();


9、刪除sharedPreference文件

/** File中儲(chǔ)存數(shù)據(jù)的路徑 **/public final String DATA_URL = "/data/data/";/** sharedPreferences文件名稱 **/public final String LAST_SHARED_PREF = "HAS_PERFORM_PROLOGUE.xml"; <span style="white-space:pre"> </span>File file = new File(DATA_URL + getPackageName().toString()+ "/shared_prefs", LAST_SHARED_PREF);if (file.exists()){file.delete();}

10、布局文件多個(gè)控件使用相同的屬性

? ? ? ??定義一個(gè)style,避免重復(fù)輸入相同的屬性。

? ? ? ??普通布局文件中的控件:

<RadioButtonandroid:id="@+id/rb_function"style="@style/main_tab_bottom"android:drawableTop="@drawable/icon_function"android:text="@string/tab_function" />

styles.xml文件

<style name="main_tab_bottom"><item name="android:textSize">@dimen/bottom_tab_font_size</item><item name="android:textColor">@color/bottom_text_color</item><item name="android:ellipsize">marquee</item><item name="android:gravity">center</item><item name="android:background">@drawable/transparent</item><item name="android:paddingTop">@dimen/bottom_tab_padding_up</item><item name="android:layout_width">0dp</item><item name="android:layout_height">match_parent</item><item name="android:button">@null</item><item name="android:singleLine">true</item><item name="android:drawablePadding">@dimen/bottom_tab_padding_drawable</item><item name="android:layout_weight">1.0</item></style>
順便說(shuō)下,style之間可以有繼承關(guān)系

11、項(xiàng)目使用SlidingMenu導(dǎo)航切換頁(yè)面

? ? ? ??自己在公司做項(xiàng)目的時(shí)候,是在前人搭建的框架,進(jìn)行增加功能的。其中大量的使用了Activity(夸張的地方有好幾層的Activity),在SlidingMenu,切換的時(shí)候也是重新start一個(gè)Activity出來(lái),效率極其低效。

? ? ? ? 這里介紹一種回調(diào)的方法,實(shí)現(xiàn)頁(yè)面的切換。

? ? ? ??首先,是菜單Fragment中定義調(diào)用主頁(yè)面MainActivity的方法:

private void switchFragment(Fragment f) {if(f != null){if(getActivity() instanceof MainActivity){((MainActivity)getActivity()).switchFragment(f);}} } ? ? ? ?? 參數(shù)Fragment為要切換到的頁(yè)面,在new完后調(diào)用該方法。

? ? ? ??((MainActivity)getActivity()).switchFragment(f);這句話就是使用MainActivity的實(shí)例調(diào)用MainActivity中的方法,對(duì)應(yīng)的方法:

public void switchFragment(Fragment f){getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, f).commit();//slidingMenu打開(kāi)時(shí)它會(huì)將它關(guān)閉,反之一樣。sm.toggle(); }

? ? ? ??這里的sm為SlidingMenu的實(shí)例。


12、獲取手機(jī)設(shè)置語(yǔ)言

? ? 下面兩句代碼判斷系統(tǒng)語(yǔ)言是否為中文:

private boolean mChinease;mChinease = TextUtils.equals(Locale.getDefault().getLanguage(), "zh");


13、關(guān)于窗體的設(shè)置

//設(shè)置窗體的全屏顯示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
//設(shè)置窗體始終點(diǎn)亮 getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

14、點(diǎn)擊空白處Dialog不自動(dòng)消失

當(dāng)我們使用Dialog來(lái)代替進(jìn)度條的時(shí)候我們就不希望,用戶點(diǎn)擊空白的地方令Dialog消失。此時(shí),可以通過(guò)下面這句話取消點(diǎn)擊空白令Dialog消失: mLoadingDialog.setCanceledOnTouchOutside(false);// 設(shè)置點(diǎn)擊屏幕Dialog不消失

15、獲取圖片資源的寬高

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher); int bmpWidth = bitmap.getWidth(); int bmpHeight = bitmap.getHeight();

16、SDK Manager只顯示已經(jīng)裝過(guò)的API,不顯示其他API:

這個(gè)時(shí)候通常 Tools下的 Add-on Sites里面沒(méi)有URL。


需要修改hosts文件。找到C:\Windows\System32\drivers\etc下面的hosts文件。

添加:74.125.237.1 dl-ssl.google.com, ?重啟SDK Manager即可。

其中的IP地址是在DOS下輸入:ping dl-ssl.google.com得到的。

17、應(yīng)用中下載過(guò)資源,如圖片,進(jìn)入圖庫(kù)不顯示已經(jīng)下載過(guò)的圖片,需要重新掃描SD-card。

17.1首先配置權(quán)限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
17.2發(fā)送廣播通知

Intent intent = new Intent();intent.setAction(Intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));sendBroadcast(intent);

但在Android4.4中,則會(huì)拋出以下異常:

W/ActivityManager( ?498): Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=2269, uid=20016
那是因?yàn)锳ndroid4.4中限制了系統(tǒng)應(yīng)用才有權(quán)限使用廣播通知系統(tǒng)掃描SD卡。

解決方式:
使用MediaScannerConnection執(zhí)行具體文件或文件夾進(jìn)行掃描。

MediaScannerConnection.scanFile(this, new String[]{Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/" + fileName}, null, null);
參考: http://www.2cto.com/kf/201404/293667.html

18、RadioButton 內(nèi)容不居中。

android:gravity="center"
在三星手機(jī)中設(shè)置了上面一句話后,發(fā)現(xiàn)RadioButton的內(nèi)容還是不居中,一般表現(xiàn)為偏右,這個(gè)時(shí)候需要再加上一句話:

android:paddingLeft="0dp"
內(nèi)容就顯示為居中了。


19、設(shè)置->輔助功能->大號(hào)字體 令字體不變大

重寫getResource()方法 @Overridepublic Resources getResources() {Resources res = super.getResources();Configuration config = new Configuration();config.setToDefaults();res.updateConfiguration(config, res.getDisplayMetrics());return res;}






總結(jié)

以上是生活随笔為你收集整理的Android小技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。