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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android小技巧

發布時間:2023/12/20 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android小技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

總結一些平時項目小技巧:

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

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

2、關于ScrollView:

(1)設置顯示置頂

? ? ? ??布局中添加ScrollView以后當ScrollView中的控件太多時,頁面會顯示到ScrollView的最低端。想要從頂端開始顯示,則要在ScrollView上面一個控件設置

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設置視圖的滾動位置

? ? 很多人在設置scrollTo方法時候發現都無效

? ? mScrollView.scrollTo(offsetx,offsety);? ? ? ??在onCreate和onResume 里調用的這個方法,在方法沒有結束的時候,activity的數據并沒有完全加載好,所以這個時候調用該方法不會有什么實際的效果的。

解決方法:

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


3、listView設置點擊無背景顏色:

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

4、一些關于SeekBar的問題:

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

android:thumbOffset="0dp"

? ? ? ??不設置效果圖:

? ? ? ??


? ? ? ??設置后效果圖:

? ? ? ??

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

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

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

? ? ? ??


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


? ? ? ??

(3) SeekBar設置不可點擊、滑動

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

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

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

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

6、Android用xml畫虛線

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

解決方法:

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

? ?? ? ? ??? ? ? ??? ? ? ??? ? ? ? ?2、在使用的地方如View標簽中加上?android:layerType="software" ,即可對單獨的View標簽進行關閉。

6.1下滑線:

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

7、為listView顯示設置縮放動畫

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中儲存數據的路徑 **/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、布局文件多個控件使用相同的屬性

? ? ? ??定義一個style,避免重復輸入相同的屬性。

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

<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>
順便說下,style之間可以有繼承關系

11、項目使用SlidingMenu導航切換頁面

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

? ? ? ? 這里介紹一種回調的方法,實現頁面的切換。

? ? ? ??首先,是菜單Fragment中定義調用主頁面MainActivity的方法:

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

? ? ? ??((MainActivity)getActivity()).switchFragment(f);這句話就是使用MainActivity的實例調用MainActivity中的方法,對應的方法:

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

? ? ? ??這里的sm為SlidingMenu的實例。


12、獲取手機設置語言

? ? 下面兩句代碼判斷系統語言是否為中文:

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


13、關于窗體的設置

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

14、點擊空白處Dialog不自動消失

當我們使用Dialog來代替進度條的時候我們就不希望,用戶點擊空白的地方令Dialog消失。此時,可以通過下面這句話取消點擊空白令Dialog消失: mLoadingDialog.setCanceledOnTouchOutside(false);// 設置點擊屏幕Dialog不消失

15、獲取圖片資源的寬高

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

16、SDK Manager只顯示已經裝過的API,不顯示其他API:

這個時候通常 Tools下的 Add-on Sites里面沒有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、應用中下載過資源,如圖片,進入圖庫不顯示已經下載過的圖片,需要重新掃描SD-card。

17.1首先配置權限

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

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

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

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

解決方式:
使用MediaScannerConnection執行具體文件或文件夾進行掃描。

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

18、RadioButton 內容不居中。

android:gravity="center"
在三星手機中設置了上面一句話后,發現RadioButton的內容還是不居中,一般表現為偏右,這個時候需要再加上一句話:

android:paddingLeft="0dp"
內容就顯示為居中了。


19、設置->輔助功能->大號字體 令字體不變大

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






總結

以上是生活随笔為你收集整理的Android小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。