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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用安卓开发技巧汇总

發布時間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用安卓开发技巧汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

經常用的一些小技巧都會記錄在這邊

?

?

API權限錯誤提示解決方法:

?

報這么一個錯誤:

?

  • Call?requires?API?level?11?(current?min?is?8):?android.animation.ObjectAnimator#ofFloat??
  • ?

    主要原因是 AndroidManifest.xml中的API權限等級不夠:

    ?

  • <uses-sdk??
  • ???????android:minSdkVersion="8"??
  • ???????android:targetSdkVersion="17"?/>??

  • 修改成:

    ?

    ?

  • <uses-sdk??
  • ????android:minSdkVersion="11"??
  • ????android:targetSdkVersion="17"?/>??


  • 獲取手機號碼:

    ?

  • //創建電話管理??
  • ??
  • TelephonyManager?tm?=?(TelephonyManager)??
  • ??
  • //與手機建立連接??
  • activity.getSystemService(Context.TELEPHONY_SERVICE);??
  • ??
  • //獲取手機號碼??
  • ??
  • String?phoneId?=?tm.getLine1Number();??
  • ??
  • //記得在manifest?file中添加??
  • ????<uses-permission??
  • android:name="android.permission.READ_PHONE_STATE"?/>??
  • ??
  • //程序在模擬器上無法實現,必須連接手機??

  • ?

    格式化string.xml 中的字符串

  • //?in?strings.xml..??
  • <string?name="my_text">Thanks?for?visiting?%s.?You?age?is?%d!</string>??
  • ???????
  • //?and?in?the?java?code:??
  • String.format(getString(R.string.my_text),?"oschina",?33);??

  • android設置全屏的方法

  • requestWindowFeature(Window.FEATURE_NO_TITLE);??
  • getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,??
  • WindowManager.LayoutParams.FLAG_FULLSCREEN);??

  • ?

    檢查當前網絡是否連上

    ?

    ?

  • ConnectivityManager?con=(ConnectivityManager)getSystemService(Activity.CONNECTIVITY_SERVICE);????
  • ???
  • boolean?wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();????
  • ??
  • boolean?internet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();???

  • 在AndroidManifest.xml 增加權限:

    ?

    ?

  • <uses-permission?android:name="android.permission.ACCESS_NETWORK_STATE"?/>??

  • ?

    ?

    檢測某個Intent是否有效

    ?

    ?

  • public?static?boolean?isIntentAvailable(Context?context,?String?action)?{??
  • ????final?PackageManager?packageManager?=?context.getPackageManager();??
  • ????final?Intent?intent?=?new?Intent(action);??
  • ????List<ResolveInfo>?list?=??
  • ????????????packageManager.queryIntentActivities(intent,??
  • ????????????????????PackageManager.MATCH_DEFAULT_ONLY);??
  • ????return?list.size()?>?0;??
  • }??

  • ?

    android 撥打電話

    ?

    ?

  • try?{??
  • ???Intent?intent?=?new?Intent(Intent.ACTION_CALL);??
  • ???intent.setData(Uri.parse("tel:+110"));??
  • ???startActivity(intent);??
  • }?catch?(Exception?e)?{??
  • ???Log.e("SampleApp",?"Failed?to?invoke?call",?e);??
  • }??

  • ?

    android中發送Email

  • Intent?i?=?new?Intent(Intent.ACTION_SEND);????
  • //i.setType("text/plain");?//模擬器請使用這行??
  • i.setType("message/rfc822")?;?//?真機上使用這行??
  • i.putExtra(Intent.EXTRA_EMAIL,?new?String[]{"test@gmail.com","test@163.com});????
  • i.putExtra(Intent.EXTRA_SUBJECT,"subject?goes?here");????
  • i.putExtra(Intent.EXTRA_TEXT,"body?goes?here");????
  • startActivity(Intent.createChooser(i,?"Select?email?application."));??

  • android中打開瀏覽器

  • Intent?viewIntent?=?new???
  • ????Intent("android.intent.action.VIEW",Uri.parse("http://vaiyanzi.cnblogs.com"));??
  • ??
  • startActivity(viewIntent);??

  • android 獲取設備唯一標識碼

  • String?android_id?=?Secure.getString(getContext().getContentResolver(),?Secure.ANDROID_ID);??

  • android中獲取IP地址

  • public?String?getLocalIpAddress()?{??
  • ????try?{??
  • ????????for?(Enumeration<NetworkInterface>?en?=?NetworkInterface.getNetworkInterfaces();???
  • ????????en.hasMoreElements();)?{??
  • ????????????NetworkInterface?intf?=?en.nextElement();??
  • ????????????for?(Enumeration<InetAddress>?enumIpAddr?=?intf.getInetAddresses();???
  • ????????enumIpAddr.hasMoreElements();)?{??
  • ????????????????InetAddress?inetAddress?=?enumIpAddr.nextElement();??
  • ????????????????if?(!inetAddress.isLoopbackAddress())?{??
  • ????????????????????return?inetAddress.getHostAddress().toString();??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????}?catch?(SocketException?ex)?{??
  • ????????Log.e(LOG_TAG,?ex.toString());??
  • ????}??
  • ????return?null;??
  • }??

  • android獲取存儲卡路徑以及使用情況

  • /**?獲取存儲卡路徑?*/???
  • File?sdcardDir=Environment.getExternalStorageDirectory();???
  • /**?StatFs?看文件系統空間使用情況?*/???
  • StatFs?statFs=new?StatFs(sdcardDir.getPath());???
  • /**?Block?的?size*/???
  • Long?blockSize=statFs.getBlockSize();???
  • /**?總?Block?數量?*/???
  • Long?totalBlocks=statFs.getBlockCount();???
  • /**?已使用的?Block?數量?*/???
  • Long?availableBlocks=statFs.getAvailableBlocks();???

  • android中添加新的聯系人

  • private?Uri?insertContact(Context?context,?String?name,?String?phone)?{??
  • ?????????
  • ???????ContentValues?values?=?new?ContentValues();??
  • ???????values.put(People.NAME,?name);??
  • ???????Uri?uri?=?getContentResolver().insert(People.CONTENT_URI,?values);??
  • ???????Uri?numberUri?=?Uri.withAppendedPath(uri,?People.Phones.CONTENT_DIRECTORY);??
  • ???????values.clear();??
  • ?????????
  • ???????values.put(Contacts.Phones.TYPE,?People.Phones.TYPE_MOBILE);??
  • ???????values.put(People.NUMBER,?phone);??
  • ???????getContentResolver().insert(numberUri,?values);??
  • ?????????
  • ???????return?uri;??
  • }??

  • 查看電池使用情況

  • Intent?intentBatteryUsage?=?new?Intent(Intent.ACTION_POWER_USAGE_SUMMARY);??????????
  • startActivity(intentBatteryUsage);??

  • 獲取進程號

  • ActivityManager?mActivityManager?=?(ActivityManager)?this.getSystemService(ACTIVITY_SERVICE);??
  • List<ActivityManager.RunningAppProcessInfo>?mRunningProcess?=?mActivityManager.getRunningAppProcesses();???
  • int?i?=?1;???
  • for?(ActivityManager.RunningAppProcessInfo?amProcess?:?mRunningProcess)???
  • {???
  • Log.e("homer?Application",?(i++)?+?"??PID?=?"?+?amProcess.pid?+?";??
  • ?processName?=?"?+?amProcess.processName);??
  • ?}???


  • android 之setOutsideTouchable?

    ?

    在使用彈出框希望點擊彈出框外的任意處讓彈出框消失,

    先把設置彈出框的setOutsideTouchable為true,然后重寫onTouch。

  • win?=?new?PopupWindow(contentView,?LayoutParams.FILL_PARENT,??
  • ????????????????LayoutParams.WRAP_CONTENT);??
  • win.setOutsideTouchable(true);??
  • win.setFocusable(true);??
  • ??
  • //?點擊彈出窗口區域之外的任意區域,則該窗口關閉??
  • win.setTouchInterceptor(new?OnTouchListener()?{??
  • ????@Override??
  • ????public?boolean?onTouch(View?v,?MotionEvent?event)?{??
  • ????????if?(event.getAction()?==?MotionEvent.ACTION_OUTSIDE)?{??
  • ????????????win.dismiss();??
  • ????????????return?true;??
  • ????????}??
  • ????????return?false;??
  • ????}??
  • });??


  • ?

    android 獲取資源文件

    ?

    ?

  • Resources?myResources?=?getResources();??
  • ??
  • String?str?=?myResources.getString(R.string.app_name);??
  • myResources.getDrawable(R.drawable.jhs_button1_h);??


  • 打開播放器

    ?

  • am?start?-a?android.intent.action.VIEW?-t?video/*?-d?'url地址'??

  • px轉pd

    ?

  • private?int?getPixels(int?dipValue)?{??
  • ????Resources?r?=?getResources();??
  • ????int?px?=?(int)?TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,?dipValue,?r.getDisplayMetrics());??
  • ????return?px;??
  • }??

  • 動態修改ImageView的長寬

    ?

  • ImageView?imageView?=?(ImageView)?findViewById(R.id.videoImage1);??
  • LayoutParams?para?=?imageView.getLayoutParams();??
  • para.height?=?getPixels(180);??
  • para.width?=?getPixels(120);??
  • imageView.setLayoutParams(para);??
  • 動態設置padding

    ?

  • ImageView?imageView?=?new?ImageView(this);????
  • imageView.setPadding(5,5,5,5)????

  • ?

    動態設置margin

    ?

  • //設置margin??
  • LinearLayout.LayoutParams?params?=?new?LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,??
  • ????????LinearLayout.LayoutParams.WRAP_CONTENT);??
  • params.setMargins(0,?getPixels(13),?0,?0);??

  • 顯示網絡圖片

    ?

  • public?Bitmap?returnBitMap(String?url){????
  • ????URL?myFileUrl?=?null;??????
  • ????Bitmap?bitmap?=?null;?????
  • ????try?{??????
  • ????????myFileUrl?=?new?URL(url);??????
  • ????}?catch?(MalformedURLException?e)?{??????
  • ????????e.printStackTrace();??????
  • ????}??????
  • ????try?{??????
  • ????????HttpURLConnection?conn?=?(HttpURLConnection)?myFileUrl??????
  • ??????????.openConnection();??????
  • ????????conn.setDoInput(true);??????
  • ????????conn.connect();??????
  • ????????InputStream?is?=?conn.getInputStream();??????
  • ????????bitmap?=?BitmapFactory.decodeStream(is);??????
  • ????????is.close();??????
  • ????}?catch?(IOException?e)?{??????
  • ??????????e.printStackTrace();??????
  • ????}??????
  • ??????????return?bitmap;??????
  • }??????
  • ??
  • :??
  • ????ImageView?imageView?=?(ImageView)?findViewById(R.id.imageView);???
  • ????String?url?=?"http://www.baidu.com/img/bdlogo.gif";??
  • ????imageView.setImageBitmap(returnBitMap(url));????

  • 刪除APK

    ?

  • Uri?uri?=Uri.fromParts("package",?strPackageName,?null);????
  • Intent?it?=?newIntent(Intent.ACTION_DELETE,?uri);?????
  • startActivity(it);??

  • ?

    安裝APK

    ?

  • Uri?installUri?=?Uri.fromParts("package","xxx",?null);?????
  • returnIt?=?newIntent(Intent.ACTION_PACKAGE_ADDED,?installUri);??


  • px和dp互轉

    ?

  • public?static?int?dip2px(Context?context,?float?dipValue){??
  • ????????????????final?float?scale?=?context.getResources().getDisplayMetrics().density;??
  • ????????????????return?(int)(dipValue?*?scale?+?0.5f);??
  • ????????}??
  • ?????????
  • ????public?static?int?px2dip(Context?context,?float?pxValue){??
  • ????????????????final?float?scale?=?context.getResources().getDisplayMetrics().density;??
  • ????????????????return?(int)(pxValue?/?scale?+?0.5f);??
  • ????????}???

  • 動態添加View

    ?

  • ViewGroup?viewGroup?=?(ViewGroup)?getLayoutInflater().inflate(R.layout.main,?null);??
  • setContentView(viewGroup);??
  • Button?button?=?new?Button(this);??
  • button.setText("Heklki");??
  • viewGroup.addView(button);??
  • ??
  • Button?button2?=?new?Button(this);??
  • button.setText("Heklki2");??
  • button.setPadding(100,?100,?100,?100);??
  • viewGroup.addView(button2);??
  • 自定義View中,布局資源使用方法

    ?

  • LayoutInflater?i?=?(LayoutInflater)?getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);??

  • include方法導入公用xml

    ?

  • <include?layout="@layout/test_f"/>??
  • ?

    也可以帶上ID

    ?

  • <include??
  • ??????android:id="@+id/test2"??
  • ??????android:layout_height="match_parent"??
  • ??????android:layout_width="wrap_content"??
  • ??????layout="@layout/test"?/>??

  • 如果被導入的xml中,有merge標簽,則是合并進來,效率會更加高

    ?

    ?

  • <merge?xmlns:android="http://schemas.android.com/apk/res/android"?>??
  • ??
  • ????<LinearLayout??
  • ????????android:id="@+id/test"??
  • ????????android:layout_width="wrap_content"??
  • ????????android:layout_height="wrap_content"??
  • ????????android:orientation="horizontal"?>??
  • ??
  • ????????<ImageView??
  • ????????????android:id="@+id/imageView1"??
  • ????????????android:layout_width="40dp"??
  • ????????????android:layout_height="40dp"??
  • ????????????android:layout_alignParentLeft="true"??
  • ????????????android:layout_alignParentTop="true"??
  • ????????????android:src="@drawable/ic_launcher"?/>??
  • ??
  • ????????<Button??
  • ????????????android:id="@+id/button1"??
  • ????????????android:layout_width="wrap_content"??
  • ????????????android:layout_height="wrap_content"??
  • ????????????android:text="Button"?/>??
  • ????</LinearLayout>??
  • ??
  • </merge>??


  • ?

    解決TableRow中無法顯示ImageView的圖片問題

    ?

  • LinearLayout?layout?=?(LinearLayout)findViewById(R.id.a);??
  • ??????????????????TableLayout?tableLayout?=?new?TableLayout(this);??
  • ??????????????????LinearLayout?layout1?=?new?LinearLayout(this);??
  • ??????????????????TableRow?row?=?new?TableRow(this);??
  • ??????????????????ImageView?img?=?new?ImageView(this);??
  • ??????????????????Bitmap?bitmap?=?BitmapFactory.decodeFile("/sdcard/a.png");//從本地取圖片??
  • ??????????????????img.setLayoutParams(new?LayoutParams(100,100));??
  • ??????????????????Drawable?drawable?=?new?BitmapDrawable(bitmap);??
  • ??????????????????img.setImageDrawable(drawable);??
  • ??????????????????img.setAlpha(255);??
  • ??????????????????System.out.println(drawable);??
  • ??????????????????System.out.println(img.getDrawable());??
  • ??????????????????layout1.addView(img);??
  • ??????????????????row.addView(layout1);??
  • ??????????????????tableLayout.addView(row);???????????????????
  • ??????????????????layout.addView(tableLayout);??
  • row和imageView之間加上 linearLayout

    ?

    ScrollView完全禁止焦點點擊上去,需要在代碼中設置false

    ?

  • //禁止焦點??
  • ?sc.setFocusable(false);??
  • ?sc.setFocusableInTouchMode(false);??

  • 跨應用調用

    ?

  • Intent?intent?=?new?Intent();??
  • ?????????intent.setClassName("com.xxx.xxx",?"com.xxx.xxx.xxxIndex");??
  • ?????????startActivity(intent);??

  • ?

    XML中自定義焦點移動方向

    ?

  • ?<Button??
  • style="@style/clockFaceNum"??
  • android:text="11"??
  • android:id="@+id/button11"??
  • android:layout_below="@+id/button12"??
  • android:layout_toLeftOf="@+id/button12"??
  • android:nextFocusUp="@+id/button10"??
  • android:nextFocusLeft="@+id/button10"??
  • android:nextFocusRight="@+id/button12"??
  • android:nextFocusDown="@+id/button12">??
  • </Button>???
  • ?

    ?

  • View.setNextFocusDownId?//設置向下焦點??
  • View.setNextFocusLeftId?//向左??
  • View.setNextFocusUpId?//設置向上??
  • View.setNextFocusRightId?//向右??


  • ?

    判斷EditView值為空

    ?

  • TextUtils.isEmpty(edit.getText())?//為空的判斷??
  • TextUtils.isEmpty(edit.getText().toString().trim())?//去掉空格??

  • 接收短信代碼

    ?

  • public?class?SMSReceiver?extends?BroadcastReceiver??
  • {??
  • ???????/*當收到短信時,就會觸發此方法*/??
  • ???????public?void?onReceive(Context?context,?Intent?intent)??
  • ??????{??
  • ????????????Bundle?bundle?=?intent.getExtras();??
  • ????????????Object?messages[]?=?(Object[])?bundle.get(?"pdus");??
  • ????????????SmsMessage?smsMessage[]?=?new?SmsMessage[messages.length];??
  • ?????????????for?(int?n?=?0;?n?<?messages.length;?n++)??
  • ????????????{??
  • ??????????????????smsMessage[n]?=?SmsMessage.createFromPdu((?byte[])?messages[n]);??
  • ????????????}??
  • ?????????????//產生一個Toast??
  • ????????????Toast?toast?=?Toast.makeText(context,?"短信內容:?"?+?smsMessage[0].getMessageBody(),?Toast.LENGTH_LONG);??
  • ?????????????//設置toast顯示的位置??
  • ?????????????//toast.setGravity(Gravity.TOP|Gravity.LEFT,?0,?200);??
  • ?????????????//顯示該Toast??
  • ????????????toast.show();??
  • ??????}??
  • }??

  • XML中需要添加:

    ?

    ?

  • <receiver?android:name=".SMSReceiver"?android:enabled="true">???
  • ??????<intent-filter>???
  • ???????????<action?android:name="android.provider.Telephony.SMS_RECEIVED"/>???
  • ??????</intent-filter>???
  • ?</receiver>??

  • 命令行常用命令

    ?

    1. 啟動模擬器 android源碼目錄下 . build/envsetup.sh lunch 1 之后? emulator 即可啟動模擬器?
    ? 2. 命令行下看log ?emulator起來后,用 adb logcat 即可看輸出了,還可以加其他過濾選項 ? 3. 命令行下安裝應用 adb install ....apk ? 4. 命令行下進shell adb shell
    ? 5. 模擬事件,發短信,打電話等 telnet localhos 5554 之后help看幫助 ? 6. adb shell中看服務 service list ? 7. 新增一個系統應用 eclipse下的工程文件夾copy到packages/apps/目錄下,增加Android.mk ? LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE_TAGS := optional
    LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_SRC_FILES += \ ??????? src/com/example/hellodroid/FullscreenActivity.java \ ??????? src/com/example/hellodroid/util/SystemUiHiderBase.java \ ??????? src/com/example/hellodroid/util/SystemUiHiderHoneycomb.java \ ??????? src/com/example/hellodroid/util/SystemUiHider.java
    LOCAL_PACKAGE_NAME := HelloDroid LOCAL_CERTIFICATE := platform
    include $(BUILD_PACKAGE)
    # Build the test package include $(call all-makefiles-under,$(LOCAL_PATH)) ?? 如果不想被打包安裝到system/app下,
    ? LOCAL_MODULE_TAGS := optional ----- LOCAL_MODULE_TAGS := tests 即可. 快速編譯的方法是 HelloDroid目錄下? mm 命令即可?
    ? 8. 安裝apk錯誤類型 ? Failure [INSTALL_FAILED_DEXOPT] 表示沒找到DEX,這個一般是系統應用編譯后,直接裝apk造成的,解決辦法是:安裝未優化的包? ? adb install out\target\product\generic\obj\APPS\HelloDroid_intermediates> package.apk.unaligned Failure [INSTALL_FALIED_EXITS]
    實際就是應用沒變,刪除 userdata.img即可 rm out/target/product/generic/userdata* -rf?
    ? Failure [INSTALL_FAILED_UID_CHANGED]
    你以前安裝過這個應用程序,到/data/data下刪除完這個程序的包名對應的文件夾, 新安裝的會另外生成uid。 裝不上是因為檢查到原來/data/data下的文件對應uid還是舊的 ?
    9. 編譯目標可執行程序 Android.mk如下 ? #? # Copyright 2006 The Android Open Source Project # # Android Asset Packaging Tool #
    LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
    LOCAL_SRC_FILES := \ ??? nsurface.cpp
    LOCAL_C_INCLUDES := \ ??? $(LOCAL_PATH)/http://www.cnblogs.com/include/ui \ ??? ${LOCAL_PATH}/http://www.cnblogs.com/include/utils \ ??? ${LOCAL_PATH}/http://www.cnblogs.com/include/gui \ ??? external/skia/include/core \ ??? external/skia/include/utils
    LOCAL_SHARED_LIBRARIES := \ ??? libcutils \ ??? libutils \ ??? libui \ ??? libgui \ ??? libskia
    LOCAL_MODULE := nsurface LOCAL_MODULE_TAGS := optional
    include $(BUILD_EXECUTABLE) ? ? ?9. 快速編譯一個模塊 ? 模塊目錄下 mm?
    ? ?10. 模擬器運行系統起不來
    排除是修改錯誤之外,一般是userdata用戶數據不一致了 刪除userdata,重啟模擬器即可 rm out/target/product/generic/userdata* -rf?

    常用字符串操作歸納

    ?

  • //打印加入變量名的字符串??
  • int?count?=?5;??
  • String?text?=?String.?format(getResources().getString(R.string.flip_view_apk_title),count);?//這里的count就是替換里面的$d的值??
  • ??
  • //找到count字符的位置并顯示跟整個字符串不同的顏色??
  • String?str?=?count?+?"";??
  • int?index?=?text.indexOf(str);??
  • int?charCount?=?str.length();??
  • SpannableStringBuilder?style=?new?SpannableStringBuilder(text);??
  • int?color?=?0xffff00ff;??
  • style.setSpan(?new?ForegroundColorSpan(color),index,index+charCount,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);????????
  • TestView.setText(style);???
  • ??
  • //不同大小的字體??
  • SpannableStringBuilder?style?=?new?SpannableStringBuilder(version);??
  • style.setSpan(?new?AbsoluteSizeSpan(bigSize),?0,?1,?Spannable.SPAN_EXCLUSIVE_INCLUSIVE?);??
  • style.setSpan(?new?AbsoluteSizeSpan(normalSize),?1,?version.length(),?Spannable.SPAN_EXCLUSIVE_INCLUSIVE);??
  • verionNameView.setText(style);??
  • ??
  • strings.xml設置??
  • <string?name="test_string">測試(%1$d個)?</string>??
  • ??
  • %1為第一次設置引用的設置??
  • $d為顯示的變量格式,為整型??
  • $s為字符串型??
  • $c等等??
  • ??
  • ??
  • //打印兩位數00??
  • s?=?String.format("%02d",?1);??????????????
  • 格式化后s就是01??
  • ??
  • //刪除線,中劃線??
  • priceTextView.setText(Double.toString((6800?/?100.0)));??
  • priceTextView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);//刪除線??
  • priceTextView.getPaint().setAntiAlias(true);//解決畫到Bitmap上刪除線的字符矩齒的問題??
  • ??
  • //打印小數點后兩位??
  • DecimalFormat?mDecimalFormat;??
  • mDecimalFormat?=?new?DecimalFormat("#####.00");??
  • mDecimalFormat.format((Double)(2000/?1000.0);??
  • 獲取屏幕分辨率

  • 1.?String?str?=?"";???
  • 2.?????????DisplayMetrics?dm?=?new?DisplayMetrics();???
  • 3.?//??????getWindowManager().getDefaultDisplay().getMetrics(dm);???
  • 4.?????????dm?=?this.getApplicationContext().getResources().getDisplayMetrics();???
  • 5.?????????int?screenWidth?=?dm.widthPixels;???
  • 6.?????????int?screenHeight?=?dm.heightPixels;???
  • 7.?????????float?density?=?dm.density;???
  • 8.?????????float?xdpi?=?dm.xdpi;???
  • 9.?????????float?ydpi?=?dm.ydpi;???
  • 10.?????????str?+=?"屏幕分辨率為:"?+?dm.widthPixels?+?"?*?"?+?dm.heightPixels?+?"\n";???
  • 11.?????????str?+=?"絕對寬度:"?+?String.valueOf(screenWidth)?+?"pixels\n";???
  • 12.?????????str?+=?"絕對高度:"?+?String.valueOf(screenHeight)???
  • 13.?????????????????+?"pixels\n";???
  • 14.?????????str?+=?"邏輯密度:"?+?String.valueOf(density)???
  • 15.?????????????????+?"\n";???
  • 16.?????????str?+=?"X?維?:"?+?String.valueOf(xdpi)?+?"像素每英尺\n";???
  • 17.?????????str?+=?"Y?維?:"?+?String.valueOf(ydpi)?+?"像素每英尺\n";???
  • 18.?????????Log.i("1",?str);???
  • 使用代碼畫.9圖

    ?

  • NinePatchDrawable?bg?=?(NinePatchDrawable)mContext.getResources().getDrawable(R.drawable.item_bg);??
  • bg.setBoundsint?left,?int?top,?int?right,?int?bottom;??
  • bg.draw(canvas);??
  • ?

    防止應用掛后臺后會再次啟動新的應用

    ?

  • 在應用的第一個activity的oncreate里面加入:??
  • //當前activity為首頁,?如果他前面還有其他的activity,說明用戶按過home鍵??
  • ????????//則無需跑初始化的界面邏輯??
  • ????????ActivityManager?am?=?(ActivityManager)?getSystemService(?ACTIVITY_SERVICE);??
  • ????????List<ActivityManager.RunningTaskInfo>?tasklist?=?am.getRunningTasks(1);??
  • ????????ActivityManager.RunningTaskInfo?runTask?=?tasklist.get(0);??
  • ????????int??n?=?runTask.numActivities?;??
  • ????????if?(n?!=?1)?{??
  • ???????????finish();??
  • ???????????return?;??
  • ????????}??
  • 使用自定義字體

    ?

  • //?得到TextView控件對象??
  • TextView?textView?=?(TextView)?findViewById(R.id.custom);??
  • //?將字體文件保存在assets/fonts/目錄下,www.linuxidc.com創建Typeface對象??
  • Typeface?typeFace?=?Typeface.createFromAsset(getAssets(),"fonts/DroidSansThai.ttf");??
  • //?應用字體??
  • textView.setTypeface(typeFace);??
  • Intent幾種用法總結

    顯示網頁:

  • Uri uri = Uri.parse("http://www.google.com");
  • Intent it??= new Intent(Intent.ACTION_VIEW,uri);
  • startActivity(it);
  • 顯示地圖:
  • Uri uri = Uri.parse("geo:38.899533,-77.036476");
  • Intent it = new Intent(Intent.Action_VIEW,uri);
  • startActivity(it);
  • 路徑規劃:
  • Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
  • Intent it = new Intent(Intent.ACTION_VIEW,URI);
  • startActivity(it);
  • 撥打電話: 調用撥號程序
  • Uri uri = Uri.parse("tel:xxxxxx");
  • Intent it = new Intent(Intent.ACTION_DIAL, uri);??
  • startActivity(it);??
  • Uri uri = Uri.parse("tel.xxxxxx");
  • Intent it =new Intent(Intent.ACTION_CALL,uri);
  • 要使用這個必須在配置文件中加入<uses-permission id="android.permission.CALL_PHONE" />
  • 發送SMS/MMS 調用發送短信的程序
  • Intent it = new Intent(Intent.ACTION_VIEW);? ?
  • it.putExtra("sms_body", "The SMS text");? ?
  • it.setType("vnd.android-dir/mms-sms");? ?
  • startActivity(it);??
  • 發送短信
  • Uri uri = Uri.parse("smsto:0800000123");? ?
  • Intent it = new Intent(Intent.ACTION_SENDTO, uri);? ?
  • it.putExtra("sms_body", "The SMS text");? ?
  • startActivity(it);??
  • 發送彩信
  • Uri uri = Uri.parse("content://media/external/images/media/23");? ?
  • Intent it = new Intent(Intent.ACTION_SEND);? ?
  • it.putExtra("sms_body", "some text");? ?
  • it.putExtra(Intent.EXTRA_STREAM, uri);? ?
  • it.setType("image/png");? ?
  • startActivity(it);
  • 發送Email
  • Uri uri = Uri.parse("mailto:xxx@abc.com");
  • Intent it = new Intent(Intent.ACTION_SENDTO, uri);
  • startActivity(it);
  • Intent it = new Intent(Intent.ACTION_SEND);? ?
  • it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");? ?
  • it.putExtra(Intent.EXTRA_TEXT, "The email body text");? ?
  • it.setType("text/plain");? ?
  • startActivity(Intent.createChooser(it, "Choose Email Client"));??
  • Intent it=new Intent(Intent.ACTION_SEND);? ???
  • String[] tos={"me@abc.com"};? ???
  • String[] ccs={"you@abc.com"};? ???
  • it.putExtra(Intent.EXTRA_EMAIL, tos);? ???
  • it.putExtra(Intent.EXTRA_CC, ccs);? ???
  • it.putExtra(Intent.EXTRA_TEXT, "The email body text");? ???
  • it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");? ???
  • it.setType("message/rfc822");? ???
  • startActivity(Intent.createChooser(it, "Choose Email Client"));? ?
  • 添加附件
  • Intent it = new Intent(Intent.ACTION_SEND);? ?
  • it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");? ?
  • it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");? ?
  • sendIntent.setType("audio/mp3");? ?
  • startActivity(Intent.createChooser(it, "Choose Email Client"));
  • 播放多媒體
  • ??
  • Intent it = new Intent(Intent.ACTION_VIEW);
  • Uri uri = Uri.parse("file:///sdcard/song.mp3");
  • it.setDataAndType(uri, "audio/mp3");
  • startActivity(it);
  • Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");? ?
  • Intent it = new Intent(Intent.ACTION_VIEW, uri);? ?
  • startActivity(it);??
  • Uninstall 程序
  • Uri uri = Uri.fromParts("package", strPackageName, null);? ?
  • Intent it = new Intent(Intent.ACTION_DELETE, uri);? ?
  • startActivity(it);
  • ?

    ?

    跨應用調用

    ?

  • @Override??
  • ??public?void?onClick(View?v)?{??
  • ??????Intent?intent?=?new?Intent();??
  • ??????intent.setAction(Intent.ACTION_VIEW);??
  • ??????intent.setData(Uri.parse("xxx://list"));??
  • ??????intent.putExtra("isShowShoppingCart",?"true");??
  • ??????startActivity(intent);??
  • ??}??
  • 被調用的應用中,xml配置
  • <activity?android:name=".activity.StartActivity"?>??
  • ???????????<intent-filter>????
  • ??????????????<action?android:name="android.intent.action.VIEW"></action>????
  • ??????????????<category?android:name="android.intent.category.DEFAULT"/>??
  • ??????????????<data?android:scheme="xxx"?android:host="list"/>??
  • ??????????</intent-filter>???
  • ??????</activity>??
  • Activity配置獨立進程

    這樣配置之后,這個Activity就會形成一個單獨的進程,進程名稱例如:xxx.xx.xxx:DetailActivity

    一般將邏輯上一起運行的組件配置在一個進程中。如果邏輯上有一定分離的,可以新開一個進程。這樣可以降低主進程的空間和時間開銷

  • <activity?android:name=".activity.detail.DetailActivity"???
  • ????????????android:process=":DetailActivity">??
  • ????????</activity>??
  • ADB命令

    ?安裝軟件   adb install apk文件名稱.apk    ?? ??? 重新安裝該軟件   adb install -r apk文件名稱.apk

      卸載apk軟件   adb uninstall apk包名.apk

      查看手機上的運行日志,此項可以用來查錯   adb logcat

      查看手機是否連接,以及連接了幾臺手機   adb devices

      A為手機路徑,B為電腦路徑,意思為:把文件從手機中復制到電腦上   adb pull <A> <B>    ???? ? A為手機路徑,B為電腦路徑,意思為:把文件從電腦復制到手機上   adb push <B> <A>

      進入手機的超級終端Terminal   adb shell

      重新掛載文件系統   adb remount

      重啟手機   adb reboot    ????? ?重啟到Recovery界面   adb reboot recovery    ????? ?重啟到bootloader界面   adb reboot bootloader

      例子:刷官方高版本后重新獲取ROOT和降級方法(部份操作)

      進行adb運行環境   adb shell

      設置超級用戶模式   su

      映射出目錄   mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

      退出su   exit

      退出shell準備接受下一個adb命令   exit

      增加flash_image文件到手機上   adb push flash_image.zip /system/bin/flash_image

      recovery先復制到卡上   adb push recovery-RA-heroc-v1.6.2.img /sdcard

      再次進入adb環境   adb shell

      修改文件屬性   chmod 0755 /system/bin/flash_image

      重啟系統   reboot


    ?

    ?

    am啟動一個應用

    ?

  • am?start?-n?com.xx.xx/com.xx.xx.activity.WelcomeActivity??

  • 畫一個View對象

  • CategoryTitleView?goodTitleView?=?new?CategoryTitleView(mContext,?null);??
  • Bitmap?bitmap?=?Bitmap.createBitmap(getWidth(),?getHeight(),?Bitmap.Config.ARGB_8888);??
  • Canvas?canvas2?=?new?Canvas(bitmap);??
  • goodTitleView.setView(mItemData);??
  • goodTitleView.measure(MeasureSpec.makeMeasureSpec(getWidth(),?MeasureSpec.EXACTLY),?MeasureSpec.makeMeasureSpec(getHeight(),?MeasureSpec.EXACTLY));??
  • goodTitleView.layout(0,?0,?getWidth(),?getHeight());??
  • goodTitleView.draw(canvas2);??
  • canvas.drawBitmap(bitmap,?0,?0,?null);??

  • drawBitmap 使用

    ?

  • //????GameView.drawImage(canvas,?mBitDestTop,?miDTX,?mBitQQ.getHeight(),?mBitDestTop.getWidth(),?mBitDestTop.getHeight()/2,?0,?0);??
  • ????public?static?void?drawImage(Canvas?canvas,?Bitmap?blt,?int?x,?int?y,?int?w,?int?h,?int?bx,?int?by)??
  • ????{????????????????????????????????????????????????????????//x,y表示繪畫的起點,??
  • ????????Rect?src?=?new?Rect();//?圖片??
  • ????????Rect?dst?=?new?Rect();//?屏幕位置及尺寸??
  • ????????//src?這個是表示繪畫圖片的大小??
  • ????????src.left?=?bx;???//0,0????
  • ????????src.top?=?by;??
  • ????????src.right?=?bx?+?w;//?mBitDestTop.getWidth();,這個是桌面圖的寬度,??
  • ????????src.bottom?=?by?+?h;//mBitDestTop.getHeight()/2;//?這個是桌面圖的高度的一半??
  • ????????//?下面的?dst?是表示?繪畫這個圖片的位置??
  • ????????dst.left?=?x;????//miDTX,//這個是可以改變的,也就是繪圖的起點X位置??
  • ????????dst.top?=?y;????//mBitQQ.getHeight();//這個是QQ圖片的高度。?也就相當于?桌面圖片繪畫起點的Y坐標??
  • ????????dst.right?=?x?+?w;????//miDTX?+?mBitDestTop.getWidth();//?表示需繪畫的圖片的右上角??
  • ????????dst.bottom?=?y?+?h;????//?mBitQQ.getHeight()?+?mBitDestTop.getHeight();//表示需繪畫的圖片的右下角??
  • ????????canvas.drawBitmap(blt,?src,?dst,?null);//這個方法??第一個參數是圖片原來的大小,第二個參數是?繪畫該圖片需顯示多少。也就是說你想繪畫該圖片的某一些地方,而不是全部圖片,第三個參數表示該圖片繪畫的位置??
  • ??????????
  • ????????src?=?null;??
  • ????????dst?=?null;??
  • ????}??

  • ?

    ?

    ?

    動態設置左右圖標

    ?

    ?

  • Drawable?img_on,?img_off;??
  • Resources?res?=?getResources();??
  • img_off?=?res.getDrawable(R.drawable.btn_strip_mark_off);??
  • //調用setCompoundDrawables時,必須調用Drawable.setBounds()方法,否則圖片不顯示??
  • img_off.setBounds(0,?0,?img_off.getMinimumWidth(),?img_off.getMinimumHeight());??
  • btn.setCompoundDrawables(img_off,?null,?null,?null);?//設置左圖標??

  • ?


    總結

    以上是生活随笔為你收集整理的常用安卓开发技巧汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

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