Android有用代码片段(二)

合集下载

Android开发人员不得不收集的代码(不断更新)

Android开发人员不得不收集的代码(不断更新)

Android开发人员不得不收集的代码(不断更新)为方便查找,已进行大致归类,其目录如下所示:•尺寸相关o dp与px转换dp2px、px2dpo sp与px转换sp2px、px2spo各种单位转换applyDimensiono在onCreate()即可强行获取View的尺寸forceGetViewSizeo ListView中提前测量View尺寸measureView•设备相关o获取设备MAC地址getMacAddresso获取设备厂商,如Xiaomi getManufacturero获取设备型号,如MI2SC getModelo获取设备SD卡是否可用isSDCardEnableo获取设备SD卡路径getSDCardPath•手机相关o判断设备是否是手机isPhoneo获取手机的IMIE getDeviceIMEIo获取手机状态信息getPhoneStatuso拨打电话callDialo发送短信sendSmso获取手机联系人getAllContactInfoo打开手机联系人界面点击联系人后便获取该号码getContantNumo获取手机短信并保存到xml中getAllSMS•网络相关o打开网络设置界面openWirelessSettingso判断是否网络连接isConnectedo判断wifi是否连接状态isWifiConnectedo获取移动网络运营商名称getNetworkOperatorNameo获取移动终端类型getPhoneTypeo获取连接的网络类型(2G,3G,4G) getCurNetworkTypeo获取当前手机的网络类型(WIFI,2G,3G,4G) getNetWorkStatus•App相关o安装指定路径下的Apk installApko卸载指定包名的App uninstallAppo获取App名称getAppNameo获取当前App版本号getVersonNameo获取当前App版本Code getVersionCodeo打开指定包名的App openOtherAppo打开指定包名的App应用信息界面showAppInfoo分享Apk信息shareApkInfoo获取App信息的一个封装类(包名、版本号、应用信息、图标、名称等)getAppInfoso判断当前App处于前台还是后台isApplicationBackground•屏幕相关o获取手机分辨率getDeviceWidth、getDeviceHeighto获取状态栏高度getStatusBarHeighto获取状态栏高度+标题栏(ActionBar)高度getTopBarHeighto获取屏幕截图snapShotWithStatusBar、snapShotWithoutStatusBaro设置透明状态栏,需在setContentView之前调用•键盘相关o避免输入法面板遮挡o动态隐藏软键盘hideSoftInputo点击屏幕空白区域隐藏软键盘o动态显示软键盘showSoftInputo切换键盘显示与否状态toggleSoftInput•正则相关o正则工具类•加解密相关o MD5加密encryptMD5o SHA加密encryptSHA•未归类o获取服务是否开启isRunningService•更新Log做这份整理只是想把它作为Android的一本小字典,当遇到一些琐碎问题时,不用再面向百度或者谷歌查询API的使用,费时费力,这里有的话,大家尽管撸走。

Android Fragment使用详解

Android   Fragment使用详解

Fragment(一)1. 继承关系ng.Object|__android.app.Fragment实现接口:ComponentCallbacks2 View.OnCreateContextMenuListener引入版本:API Level 11已知的子类:DialogFragment、ListFragment、PreferenceFragment、WebViewFragment2. 类概要一个Fragment是应用程序的用户界面或行为的一个片段,它能够被放置在一个Activity中。

通过FragmentManager对象来实现与Fragment对象的交互,能够通过Activity.getFragmentManager()方法和Fragment.getFragmentManager()方法来获取FragmentManager对象。

Fragment类有着广泛的应用,它的核心是代表了一个正在较大的Activity中运行的特俗的操作或界面。

Fragment对象跟它所依附的Activity对象是紧密相关的,并且不能被分开使用。

尽管Fragment对象定义了它们自己的生命周期,但是这个生命周期要依赖与它所在的Activity:如果该Activity被终止,那么它内部的Fragment是不能被启动的;当Activity被销毁时,它内部的所有Fragment对象都会被销毁。

所有的Fragment子类都必须包含一个公共的空的构造器。

在需要的时候,Framework 会经常重新实例化Fragment类,在特殊的状态恢复期间,需要能够找到这个构造器来实例化Fragment类。

如果空的构造器无效,那么在状态恢复期间会导致运行时异常发生。

较旧的平台尽管Fragment API是在HONEYCOMB版本中被引入的,但是通过FragmentActivity也能够在较旧的平台上使用该API。

声明周期尽管Fragment对象的生命周期要依附于它所在的Activity对象,但是它也有自己标准的活动周期,它包含了基本的活动周期方法,如onResume(),但是同时也包含了与Activity 和UI交互相关的重要方法。

fragement详解

fragement详解

fragement详解Fragment(片段)是编程中的一个概念,指的是在Android开发中可以独立存在的模块化组件。

相较于Activity(活动),Fragment有更好的灵活性、可重用性和扩展性。

本文将详细解释Fragment的定义、使用方法、生命周期、与Activity的关系等内容,以帮助读者深入了解Fragment的优点和实践。

第一部分:Fragment定义和使用方法一、Fragment定义Fragment是Android提供的一种用户界面组件,可以嵌入到Activity中进行布局和交互。

每个Fragment都有自己的生命周期,可以独立接收用户输入、响应事件、更新UI等。

Fragment可以看作是一种轻量级的Activity,但与Activity不同的是,Fragment必须依附于一个Activity才能使用。

二、Fragment使用方法要在项目中使用Fragment,首先需要确保你的项目使用了适当的版本和依赖库。

在Android Studio中,可以在build.gradle 文件中添加以下代码来引入Fragment支持:```implementation 'androidx.fragment:fragment:1.3.0'```然后,在XML布局文件中定义Fragment的容器。

在Activity 中可以添加一个`<FrameLayout>`元素作为容器,如下所示:```<FrameLayoutandroid:id="@+id/fragment_container"android:layout_width="match_parent"android:layout_height="match_parent" />```接着,在Activity中实例化一个Fragment对象,并将其添加到容器中。

android_accessibilitynodeinfo打印结构_概述说明

android_accessibilitynodeinfo打印结构_概述说明

android accessibilitynodeinfo打印结构概述说明1. 引言1.1 概述本文旨在介绍Android中的辅助功能特性,重点关注AccessibilityNodeInfo 类及其打印结构的相关内容。

随着移动应用开发的快速发展,越来越多的用户开始关注移动设备上的可访问性问题。

而AccessibilityNodeInfo作为Android 中的一个重要类,为用户提供了一种获取和操作界面元素信息的能力,从而实现更好地辅助功能支持。

1.2 文章结构本文将按照以下顺序展开对AccessibilityNodeInfo打印结构的概述说明:首先,我们将简要介绍AccessibilityNodeInfo类,并解释其在Android中扮演的角色。

接着,我们将侧重探讨打印AccessibilityNodeInfo结构的重要性,以及它对于应用程序开发和用户体验方面带来的价值。

然后,我们将详细讲解如何实现打印AccessibilityNodeInfo结构的方法。

通过代码示例和具体步骤说明,读者将能够理解如何使用Android提供的API来获取并输出节点信息。

在示例与应用场景部分,我们将给出两个具体案例:一个是打印整个屏幕上AccessibilityNodeInfo结构的示例;另一个是打印某个特定View的AccessibilityNodeInfo结构。

此外,还会探讨这些应用场景的实际应用和优化建议,以帮助读者更好地理解如何将打印结构功能应用到实际开发中。

在注意事项与常见问题解答部分,我们会提供一些使用AccessibilityNodeInfo 打印结构时需要注意的事项和限制。

同时,还会针对一些常见问题进行解答,帮助读者顺利运用这一功能并解决可能遇到的困惑。

最后,在结论与总结部分,将对本文的内容进行总结,并强调文章对于读者和开发者在辅助功能方面的贡献和实际应用价值。

1.3 目的通过本文的阐述,旨在帮助读者深入了解Android中AccessibilityNodeInfo 类及其打印结构相关知识。

android studio的fragment用法

android studio的fragment用法

android studio的fragment用法Android Studio中的Fragment是一种可以嵌入在Activity中的UI片段,它可以用来构建动态和灵活的UI布局。

Fragment可以被重复使用,也可以被多个Activity共享,这使得它在构建大型应用程序时非常有用。

在Android Studio中使用Fragment的基本步骤如下:创建一个Fragment类:首先,你需要创建一个继承自Fragment的类。

在这个类中,你可以定义Fragment的布局和行为。

定义Fragment布局:在Fragment类中,你需要使用XML布局文件来定义Fragment的用户界面。

你可以使用Android的布局控件来创建复杂的用户界面。

在Activity中使用Fragment:要在Activity中使用Fragment,你需要在Activity 的布局文件中添加一个<fragment>标签,或者在Activity的代码中动态地添加Fragment。

与Fragment交互:你可以通过Fragment的公共方法来与Fragment进行交互。

例如,你可以调用Fragment中的方法来更新UI或执行其他操作。

Fragment有两种类型:静态Fragment和动态Fragment。

静态Fragment在Activity 的布局文件中定义,并在Activity启动时创建。

动态Fragment则在运行时动态添加到Activity中,可以根据需要添加、删除或替换。

使用Fragment的好处之一是它可以提高应用程序的性能。

由于Fragment可以被缓存和重用,因此在切换不同的UI部分时,不需要重新加载整个Activity,只需要加载需要显示的Fragment即可。

此外,Fragment还可以帮助实现屏幕适配。

由于不同的设备可能有不同的屏幕尺寸和分辨率,因此使用Fragment可以更容易地适应不同的屏幕大小和方向。

安卓 fragmentstateadapter 的用法

安卓 fragmentstateadapter 的用法

安卓fragmentstateadapter 的用法安卓FragmentStateAdapter 的用法在安卓开发中,FragmentStateAdapter 是一个非常常用的类,它用于在ViewPager2 中显示多个片段(Fragments)。

本文将一步一步回答关于FragmentStateAdapter 的用法,并详细介绍各个步骤和相关概念。

第一步:导入依赖首先,我们需要在项目的build.gradle 文件中导入ViewPager2 的依赖。

请确保您的项目已经适配了AndroidX,如未适配,可使用Android Studio 提供的工具进行一键迁移。

implementation "androidx.viewpager2:viewpager2:1.0.0"第二步:创建布局文件接下来,我们需要创建一个布局文件来放置ViewPager2。

在布局文件中添加以下代码:xml<androidx.viewpager2.widget.ViewPager2android:id="@+id/viewPager2"android:layout_width="match_parent"android:layout_height="match_parent" />第三步:创建Fragment 类在项目中创建需要展示的Fragment 类。

例如,我们创建一个名为"MyFragment" 的Fragment 类。

在该类中,您可以自定义Fragment 的布局和逻辑。

javapublic class MyFragment extends Fragment {在这里实现您的Fragment 逻辑@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable BundlesavedInstanceState) {View rootView = inflater.inflate(yout.fragment_my, container, false);初始化布局中的控件设置事件监听器等等return rootView;}}第四步:创建FragmentStateAdapter现在,我们需要创建一个继承自FragmentStateAdapter 的适配器类。

android常用代码大全

android常用代码大全

Android常用代码大全Notepad++编写可以负责粘贴到其中去看得更清楚。

(内容包括了Android中的大部分常用控件及其事件的监听)第一章1.1 Android中src文件夹包含项目的所有包及其资源文件,res文件夹包含了项目中所有的资源。

比如:程序图标(drawable),布局文件(layout),常量(value),音频文件(raw)R.java是在创建项目是自动生成的只读文件,不可更改此文件。

R文件其作用:是定义项目中所有资源的索引文件。

1.2 AndroidManfest.xml 如下:<?xml version="1.0" encoding="utf-8"?><manifest //根节点,描述了packege包中所有的内容xmlns:android="/apk/res/android" //包命名空间的声明,使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据package="Android.Summary" //引用程序包名android:versionCode="1"android:versionName="1.0"><uses-sdk android:minSdkVersion="7" /> //使用SDK版本号<application //包含package中application级别组件声明的根节点,可包含application的一些全局和默认的属性,如标签label,icon,主题,必要的全限。

注意:一个manifest中只能包含一个或0个application android:icon="@drawable/icon" //应用程序图标android:label="@string/app_name"> //应用程序名字<activity android:name=".SummaryActivity" //Activity用来与用户交互的主要工具,是用户打开程序的初始界面.此处为引用程序默认启动的Activityandroid:label="@string/app_name"><intent-filter>/ //描述了Activity的启动时间和位置,另外为了支持查找Activity可以包含一个或多个<intent-filter><actionandroid:name="android.intent.action.MAIN" /> //acton 为组件支持的Intent action<categoryandroid:name="UNCHER" />//categor 为组件支持的Intent category 这里指定了引用程序的默认启动的Activity</intent-filter></activity><activity android:name = "Activity02"></activity> //在此对新增的Activity进行注册。

android常用代码

android常用代码

Intent用法1. Intent it = new Intent(Activity.Main.this, Activity2.class);2. startActivity(it);2. 向下一个Activity传递数据(使用Bundle和Intent.putExtras)1. Intent it = new Intent(Activity.Main.this, Activity2.class);2. Bundle bundle=new Bundle();3. bundle.putString("name", "This is from MainActivity!");4. it.putExtras(bundle); // it.putExtra(“test”, "shuju”);5. startActivity(it); // startActivityForResult(it,REQUEST_CODE);对于数据的获取可以采用:1. Bundle bundle=getIntent().getExtras();2. String name=bundle.getString("name");3. 向上一个Activity返回结果(使用setResult,针对startActivityForResult(it,REQUEST_CODE)启动的Activity)1. Intent intent=getIntent();2. Bundle bundle2=new Bundle();3. bundle2.putString("name", "This is from ShowMsg!");4. intent.putExtras(bundle2);5. setResult(RESULT_OK, intent);4. 回调上一个Activity的结果处理函数(onActivityResult)1. @Override2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {3. // TODO Auto-generated method stub4. super.onActivityResult(requestCode, resultCode, data);5. if (requestCode==REQUEST_CODE){6. if(resultCode==RESULT_CANCELED)7. setTitle("cancle");8. else if (resultCode==RESULT_OK) {9. String temp=null;10. Bundle bundle=data.getExtras();11. if(bundle!=null) temp=bundle.getString("name");12. setTitle(temp);13. }14. }15. }显示网页1. 1. Uri uri = Uri.parse("");2. 2. Intent it = new Intent(Intent.ACTION_VIEW, uri);3. 3. startActivity(it);显示地图1. 1. Uri uri = Uri.parse("geo:38.899533,-77.036476");2. 2. Intent it = new Intent(Intent.ACTION_VIEW, uri);3. 3. startActivity(it);4. 4. //其他geo URI 範例5. 5. //geo:latitude,longitude6. 6. //geo:latitude,longitude?z=zoom7. 7. //geo:0,0?q=my+street+address8. 8. //geo:0,0?q=business+near+city9. 9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom路径规划1. 1. Uri uri =Uri.parse("/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");2. 2. Intent it = new Intent(Intent.ACTION_VIEW, uri);3. 3. startActivity(it);4. 4. //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456打电话1. 1. //叫出拨号程序2. 2. Uri uri = Uri.parse("tel:0800000123");3. 3. Intent it = new Intent(Intent.ACTION_DIAL, uri);4. 4. startActivity(it);5. 1. //直接打电话出去6. 2. Uri uri = Uri.parse("tel:0800000123");7. 3. Intent it = new Intent(Intent.ACTION_CALL, uri);8. 4. startActivity(it);9. 5. //用這個,要在AndroidManifest.xml 中,加上10. 6. //<uses-permission id="android.permission.CALL_PHONE" />传送SMS/MMS1. 1. //调用短信程序2. 2. Intent it = new Intent(Intent.ACTION_VIEW, uri);3. 3. it.putExtra("sms_body", "The SMS text");4. 4. it.setType("vnd.android-dir/mms-sms");5. 5. startActivity(it);1. 1. //传送消息2. 2. Uri uri = Uri.parse("smsto://0800000123");3. 3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);4. 4. it.putExtra("sms_body", "The SMS text");5. 5. startActivity(it);1. 1. //传送MMS2. 2. Uri uri = Uri.parse("content://media/external/images/media/23");3. 3. Intent it = new Intent(Intent.ACTION_SEND);4. 4. it.putExtra("sms_body", "some text");5. 5. it.putExtra(Intent.EXTRA_STREAM, uri);6. 6. it.setType("image/png");7. 7. startActivity(it);传送Email1. 1. Uri uri = Uri.parse("mailto:xxx@");2. 2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);3. 3. startActivity(it);1. 1. Intent it = new Intent(Intent.ACTION_SEND);2. 2. it.putExtra(Intent.EXTRA_EMAIL, "me@");3. 3. it.putExtra(Intent.EXTRA_TEXT, "The email body text");4. 4. it.setType("text/plain");5. 5. startActivity(Intent.createChooser(it, "Choose Email Client"));1. 1. Intent it=new Intent(Intent.ACTION_SEND);2. 2. String[] tos={"me@"};3. 3.. String[] ccs={"you@"};4. 4.. it.putExtra(Intent.EXTRA_EMAIL, tos);5. 5. it.putExtra(Intent.EXTRA_CC, ccs);6. 6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");7. 7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");8. 8. it.setType("message/rfc822");9. 9. startActivity(Intent.createChooser(it, "Choose Email Client"));1. 1. //传送附件2. 2. Intent it = new Intent(Intent.ACTION_SEND);3. 3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");4. 4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");5. 5. sendIntent.setType("audio/mp3");6. 6. startActivity(Intent.createChooser(it, "Choose Email Client"));播放多媒体1. Uri uri = Uri.parse("file:///sdcard/song.mp3");2. Intent it = new Intent(Intent.ACTION_VIEW, uri);3. it.setType("audio/mp3");4. startActivity(it);5. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");6. Intent it = new Intent(Intent.ACTION_VIEW, uri);7. startActivity(it);Market 相关1. 1. //寻找某个应用2. 2. Uri uri = Uri.parse("market://search?q=pname:pkg_name");3. 3. Intent it = new Intent(Intent..ACTION_VIEW, uri);4. 4. startActivity(it);5. 5. //where pkg_name is the full package path for an application1. 1. //显示某个应用的相关信息2. 2. Uri uri = Uri.parse("market://details?id=app_id");3. 3. Intent it = new Intent(Intent.ACTION_VIEW, uri);4. 4. startActivity(it);5. 5. //where app_id is the application ID, find the ID6. 6. //by clicking on your application on Market home7. 7. //page, and notice the ID from the address barUninstall 应用程序1. 1. Uri uri = Uri.fromParts("package", strPackageName, null);2. 2. Intent it = new Intent(Intent.ACTION_DELETE, uri);3. 3. startActivity(it);。

Android常用代码集合

Android常用代码集合

Android常用代码集合这篇文章主要记录一些常用的一些代码段,方便以后查阅,不断更新中。

1.调用浏览器,载入某网址Uri uri = Uri.parse("");Intent it = new Intent(Intent.ACTION_VIEW, uri);startActivity(it);2.Broadcast接收系统广播的intent监控应用程序包的安装、删除public class getBroadcast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) {Toast.makeText(context, "有应用被添加", Toast.LENGTH_LONG).show();} else if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {Toast.makeText(context, "有应用被删除", Toast.LENGTH_LONG).show();}else if (Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())) {Toast.makeText(context, "有应用被替换", Toast.LENGTH_LONG).show();}else if (Intent.ACTION_CAMERA_BUTTON.equals(intent.getAction())) { Toast.makeText(context, "按键", Toast.LENGTH_LONG).show();}}}需要声明的权限如下AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="zy.Broadcast" android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon"android:label="@string/app_name"><activity android:name=".Broadcast"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /> </intent-filter></activity><receiver android:name="getBroadcast" android:enabled="true"><intent-filter><actionandroid:name="android.intent.action.PACKAGE_ADDED"></action><!-- <action android:name="android.intent.action.PACKAGE_CHANGED"></action> --><actionandroid:name="android.intent.action.PACKAGE_REMOVED"></action><actionandroid:name="android.intent.action.PACKAGE_REPLACED"></action><!-- <action android:name="android.intent.action.PACKAGE_RESTARTED"></action> --><!-- <action android:name="android.intent.action.PACKAGE_INSTALL"></action> --><actionandroid:name="android.intent.action.CAMERA_BUTTON"></action><data android:scheme="package"></data></intent-filter></receiver></application><uses-sdk android:minSdkVersion="3" /></manifest>3.使用Toast输出一个字符串public void DisplayToast(String str) {Toast.makeText(this,str,Toast.LENGTH_SHORT).show();}4.把一个字符串写进文件public void writefile(String str, String path) {File file;FileOutputStream out;try {// 创建文件file = new File(path);file.createNewFile();//打开文件file的OutputStreamout = new FileOutputStream(file);String infoToWrite = str;//将字符串转换成byte数组写入文件out.write(infoToWrite.getBytes());//关闭文件file的OutputStreamout.close();}catch (IOException e) {// 将出错信息打印到LogcatDisplayToast(e.toString());}}5.把文件内容读出到一个字符串public String getinfo(String path) {File file;String str="";FileInputStream in;try {//打开文件file的InputStreamfile = new File(path);in = new FileInputStream(file);//将文件内容全部读入到byte数组int length = (int)file.length();byte[] temp = new byte[length];in.read(temp, 0, length);//将byte数组用UTF-8编码并存入display字符串中str = EncodingUtils.getString(temp,TEXT_ENCODING);//关闭文件file的InputStreamin.close();}catch (IOException e) {DisplayToast(e.toString());}return str;}6.调用Android installer安装和卸载程序Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(new File("/sdcard/WorldCupTimer.apk")), "application/vnd.android.package-archive");startActivity(intent); //安装程序Uri packageURI = Uri.parse("package:zy.dnh");Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);startActivity(uninstallIntent);//正常卸载程序7.结束某个进程activityManager.restartPackage(packageName);8.设置默认来电铃声public void setMyRingtone() {File k = new File("/sdcard/Shall We Talk.mp3"); // 设置歌曲路径ContentValues values = new ContentValues();values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());values.put(MediaStore.MediaColumns.TITLE, "Shall We Talk");values.put(MediaStore.MediaColumns.SIZE, 8474325);values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");values.put(MediaStore.Audio.Media.ARTIST, "Madonna");values.put(MediaStore.Audio.Media.DURATION, 230);values.put(MediaStore.Audio.Media.IS_RINGTONE, true);values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);values.put(MediaStore.Audio.Media.IS_ALARM, false);values.put(MediaStore.Audio.Media.IS_MUSIC, false);// Insert it into the databaseUri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());Uri newUri = this.getContentResolver().insert(uri, values);RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_RINGTONE, newUri);}需要的权限<uses-permissionandroid:name="android.permission.WRITE_SETTINGS"></uses-permission>模拟HOME按键Intent i=new Intent(Intent.ACTION_MAIN);i.addCategory(Intent.CATEGORY_HOME);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);9.打开某一个联系人Intent intent=new Intent();String data = "content://contacts/people/1";Uri uri = Uri.parse(data);intent.setAction(Intent.ACTION_VIEW);intent.setData(uri);startActivity(intent);10.发送文件void sendFile(String path) {File mZipFile=new File(path);Intent intent = new Intent(Intent.ACTION_SEND);// intent.setClassName("com.android.bluetooth", "com.broadcom.bt.app.opp.OppLauncherActivity");// intent.setClassName("com.android.bluetooth", "com.android.bluetooth.opp.BluetoothOppLauncherActivity");intent.putExtra("subject", mZipFile.getName()); //intent.putExtra("body", "content by chopsticks"); // 正文intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(mZipFile)); // 添加附件,附件为file对象if (mZipFile.getName().endsWith(".gz")) {intent.setType("application/x-gzip"); // 如果是gz使用gzip的mime } else if (mZipFile.getName().endsWith(".txt")) {intent.setType("text/plain"); // 纯文本则用text/plain的mime} else if (mZipFile.getName().endsWith(".zip")) {intent.setType("application/zip"); // 纯文本则用text/plain的mime } else {intent.setType("application/octet-stream"); // 其他的均使用流当做二进制数据来发送}// startActivity(intent);startActivity(Intent.createChooser(intent, "选择蓝牙客户端")); }。

Android代码规范大全

Android代码规范大全

Android代码规范⼤全前⾔虽然我们项⽬的代码时间并不长,也没经过太多⼈⼿,但代码的规范性依然堪忧,⽬前存在较多的⽐较⾃由的「代码规范」,这⾮常不利于项⽬的维护,代码可读性也不够⾼,此外,客户端和后端的研发模式也完全不同,后端研发基本都是基于 SOA 思想的,通常⼀个⼦系统 3 个⼈⼀起维护就已经是很充分的⼈⼒了,更多时候就是 1 个主⼒ + 1 个backup 的⼈⼒配置。

⽽客户端却完全不同,⼤家的代码都是相互交叉的,⼀个模块的代码可能要经历数⼗⼈的蹂躏,所以形成⼀个⼀致的开发规范迫在眉睫。

为什么需要⼀致的代码规范?核⼼还是减少沟通成本,提升我们的 Code Review 效率,让我们的代码更加易于维护。

此外,⼀个⼀致的代码规范可以造成更少的 bug,也就意味着更节省时间和⾦钱。

当然,规范是约定的,本系列⽂字全是笔者多年来博采众长,积累⽽成,所以有任何不同意见,欢迎评论拍砖。

1. Android 的⼯具规范⼯欲善其事,必先利其器。

由于 Android 基本都基于 Android Studio 进⾏开发,所以⼯具规范全部以 Android Studio 为前提。

1. 必须使⽤最新的稳定版本的 Android Studio 进⾏开发;2. 编码格式必须统⼀为 UTF-8;3. 删除多余的 import,减少警告出现,可利⽤ AS 的 Optimize Imports(Settings -> Keymap -> Optimize Imports)快捷键,设置⾃⼰的喜好。

4. 编辑完 .java、.kt、.xml 等⽂件后必须格式化(需要在设置好以下⼏点的前提下)Reformat Code 的必要性,⼀定需要保证 IDE 配置⼀致为前提,尽可能贴切于 Android Studio 默认。

强烈建议对于⽐较长的⽼代码局部格式化,不全局格式化每⾏字符数不得超过 160 字符,设置 Editor -> Code Style全部设置为单路径引⽤,kotlinx.android.synthetic.main除外。

fragmenttransaction的replace和add方法

fragmenttransaction的replace和add方法

fragmenttransaction的replace和add方法(实用版3篇)目录(篇1)I.引言A.介绍fragmenttransaction和fragmentB.说明本文将探讨fragmenttransaction的replace和add方法II.replace方法的使用A.介绍replace方法的作用和原理B.举例说明replace方法的使用C.讨论replace方法的限制和注意事项III.add方法的使用A.介绍add方法的作用和原理B.举例说明add方法的使用C.讨论add方法的限制和注意事项IV.总结A.总结两种方法的异同点B.强调使用fragmenttransaction的优点C.提出建议,使读者能够更好地理解和应用fragmenttransaction的replace和add方法。

正文(篇1)一、引言在Android应用程序开发中,fragmenttransaction是一种用于管理和管理fragment的强大工具。

本文将探讨fragmenttransaction的replace和add方法,以便更好地理解和应用这些方法。

二、replace方法的使用replace方法是fragmenttransaction中最常用的方法之一。

它的作用是替换当前的fragment为指定的fragment。

具体而言,replace方法将当前的fragment从界面中移除,并将指定的fragment添加到界面中。

这个方法适用于替换当前可见的fragment。

下面是一个使用replace方法的例子:```javaFragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();fragmentTransaction.replace(R.id.container_layout, new MyFragment());mit();```在这个例子中,replace方法将当前可见的fragment替换为MyFragment。

Android---常用代码片段整理

Android---常用代码片段整理

Android---常用代码片段整理作者:slu128更新于 05月02日访问(100)评论(0)Android---常用代码片段整理1 最近有时间,整理了一下项目中常用到的代码1、图片旋转:1 2 3 4 5 6 Bitmap bitmapOrg = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.moon);Matrix matrix = new Matrix();matrix.postRotate(-90);//旋转的角度Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,bitmapOrg.getWidth(), bitmapOrg.getHeight(), matrix, true);BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);2、获取手机号码://创建电话管理TelephonyManager tm = (TelephonyManager)//与手机建立连接activity.getSystemService(Context.TELEPHONY_SERVICE); //获取手机号码String phoneId = tm.getLine1Number();//记得在manifest file 中添加//程序在模拟器上无法实现,必须连接手机3.格式化string.xml 中的字符串:// in strings.xml..Thanks for visiting %s. You age is %d!// and in the java code:String.format(getString(R.string.my_text), "oschina", 33);4、Android 设置全屏的方法:A.在java 代码中设置/** 全屏设置,隐藏窗口所有装饰 */1 2 3 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(youtParams.FLAG_FULLSCREEN, youtParams.FLAG_FULLSCREEN);B 、在AndroidManifest.xml 中配置1 2 3 4 5 6 7 <activity android:name="Edit" android:label="@string/label_net_Edit" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="_Edit" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>5、设置Activity 为Dialog 的形式:在AndroidManifest.xml 中配置Activity 节点是配置theme 如下:1 Android:theme="@android:style/Theme.Dialog"6、检查当前网络是否连上:1 2 3 4 5 ConnectivityManagercon=(ConnectivityManager)getSystemService(Activity.CONNECTIVITY_SER VICE);boolean wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedO rConnecting(); booleaninternet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConn ectedOrConnecting();在AndroidManifest.xml 增加权限:1 <uses-permissionAndroid:name="android.permission.ACCESS_NETWORK_STATE" />7、检测某个Intent 是否有效:1 2 3 4 5 6 7 8 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; }8、android 拨打电话:1 2 3 4 5 6 7 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); }9、android 中发送Email :1 2 3 4 5 6 7 Intent i = new Intent(Intent.ACTION_SEND);//i.setType("text/plain"); //模拟器请使用这行 i.setType("message/rfc822") ; // 真机上使用这行 i.putExtra(Intent.EXTRA_EMAIL, new String[]{"**************","************});i.putExtra(Intent.EXTRA_SUBJECT,"subject goes here"); i.putExtra(Intent.EXTRA_TEXT,"body goes here"); startActivity(Intent.createChooser(i, "Select emailapplication."));10、Android 中打开浏览器:**1 2 3 Intent viewIntent = newIntent("android.intent.action.VIEW",Uri.parse("bl ")); startActivity(viewIntent);11、Android 获取设备唯一标识码:String android_id =Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);12、Android 中获取IP 地址:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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;}13、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();14 android 中添加新的联系人:1 2 3 4 5 6 7 8 9 10 11 12 13 14 private Uri insertContact(Context context, String name, String phone) {ContentValues values = new ContentValues(); values.put(, 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;}15、查看电池使用情况:1 2 Intent intentBatteryUsage =newIntent(Intent.ACTION_POWER_USAGE_SUMMARY);startActivity(intentBatteryUsage);16、从res/raw 打开文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static String openFileFromRaw(Context context) throws IOException {String content = "";InputStream inputStream = context.getResources().openRawResource(R.raw.provinces);if (inputStream != null) {BufferedReader buffreader = new BufferedReader(new InputStreamReader(inputStream));String line;//分行读取try {while ((line = buffreader.readLine()) != null) { content += line + "n";}} catch (IOException e) {17 18 19 20 21 e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.}inputStream.close();}return content ;}17 得到屏幕尺寸1 2 3 Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); //宽 int height = display.getHeight(); //高18 关闭软键盘1 2 3 4 5 private void hideSoftInput() {InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); }19 回退按钮1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {new AlertDialog.Builder(activity_login.this) .setTitle("退出系统").setMessage("确定要退出系统吗").setPositiveButton("退出",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) { finish();}})// Leave.setNegativeButton("取消",new DialogInterface.OnClickListener()19 20 21 22 23 {public void onClick(DialogInterface dialog,int which) { dialog.cancel();}}).show();}return false;}20 btn_selector1 2 3 4 5 6 7 8 9 <?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"> <!-- pressed --> <item android:state_pressed="true" android:drawable="@drawable/btn_press"/> <!-- focused --> <item android:state_focused="true" android:drawable="@drawable/btn"/> <!-- default --> <item android:drawable="@drawable/btn"/> </selector>21 关闭游标和数据库1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 private void close(Cursor cursor, SQLiteDatabase database) {try{if (cursor != null && !cursor.isClosed()) {cursor.close();}}catch (Exception e){}try{dbHelper.closeDb(database);}catch (Exception e){19 20 }}22 MD5加密1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static String md5(String string) {byte[] hash;try { hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8")); } catch (NoSuchAlgorithmException e) { throw new RuntimeException("Huh, MD5 should be supported?", e); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Huh, UTF-8 should be supported?", e); } StringBuilder hex = new StringBuilder(hash.length * 2); for (byte b : hash) { if ((b & 0xFF) < 0x10) hex.append("0"); hex.append(Integer.toHexString(b & 0xFF)); } return hex.toString().toLowerCase();}23、系统的版本信息1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public String[] getVersion(){String[] version={"null","null","null","null"};String str1 = "/proc/version";String str2;String[] arrayOfString;try {FileReader localFileReader = new FileReader(str1);BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192);str2 = localBufferedReader.readLine();arrayOfString = str2.split("\s+");version[0]=arrayOfString[2];//KernelVersionlocalBufferedReader.close();} catch (IOException e) {}version[1] = Build.VERSION.RELEASE;// firmware version version[2]=Build.MODEL;//model18 19 20 version[3]=Build.DISPLAY;//system versionreturn version;}24、mac 地址和开机时间1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public String[] getOtherInfo(){String[] other={"null","null"}; WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if(wifiInfo.getMacAddress()!=null){ other[0]=wifiInfo.getMacAddress(); } else { other[0] = "Fail"; } other[1] = getTimes(); return other; } private String getTimes() { long ut = SystemClock.elapsedRealtime() / 1000; if (ut == 0) { ut = 1; } int m = (int) ((ut / 60) % 60); int h = (int) ((ut / 3600)); return h + " " + mContext.getString(_times_hour) + m + " " + mContext.getString(_times_minute); }25、CPU 频率,CPU 信息:/proc/cpuinfo 和/proc/stat通过读取文件/proc/cpuinfo 系统CPU 的类型等多种信息。

lifecycle viewmodelproviders的使用方式与原理-概述说明以及解释

lifecycle viewmodelproviders的使用方式与原理-概述说明以及解释

lifecycle viewmodelproviders的使用方式与原理-概述说明以及解释1.引言1.1 概述概述部分的内容:概述部分主要介绍lifecycle viewmodelproviders的使用方式与原理,该功能是Android Jetpack库中的一个重要组成部分,用于管理和提供应用程序的ViewModel实例。

文章将深入探讨ViewModelProviders类的使用方式以及其背后的实现原理,帮助开发者更好地理解和应用该功能。

在Android开发中,ViewModel这一概念是为了解决活动(Activity)和片段(Fragment)在配置变化(如设备旋转)时数据丢失的问题而提出的。

ViewModel帮助开发者将数据和界面逻辑分离,使数据在配置变化后仍然存在,并能够在新的界面实例中保持同步。

ViewModelProviders类是用于获取ViewModel实例的工具类,它提供了一种简单的方式来管理和获取与活动或片段关联的ViewModel。

通过ViewModelProviders类,开发者可以在活动或片段中轻松地获取ViewModel实例,并确保在活动或片段的生命周期过程中,ViewModel 的数据得到正确的保留和更新。

本文将首先介绍ViewModelProviders类的作用和作用范围,然后详细阐述获取ViewModel实例的步骤,以及ViewModel的生命周期对应用程序的影响。

紧接着,本文将深入解析ViewModelProviders的内部实现机制,帮助读者更好地理解其原理和工作方式。

最后,通过总结使用方式和原理,本文将提供一些建议和经验教训,以便开发者在实际应用中更好地使用ViewModelProviders类。

通过阅读本文,读者将能够全面了解lifecycle viewmodelproviders 的使用方式和原理,从而更好地应用该功能,并在开发过程中获得更好的用户体验。

fragment databinding使用

fragment databinding使用

fragment databinding使用什么是数据绑定?数据绑定是一种在应用程序中将数据模型与用户界面元素进行关联的技术。

这种技术可以减少开发人员的工作量,并提供更好的用户体验。

数据绑定使开发人员能够在更改数据时自动更新界面,反之亦然。

在过去的几年中,数据绑定已成为许多现代前端框架和库的核心功能。

其中一个著名的框架是AngularJS,它引入了强大的数据绑定功能。

另一个流行的框架是React.js,它也支持数据绑定,尽管它的实现方式略有不同。

Fragment DataBinding简介Fragment DataBinding是Android框架中的一个功能,它允许开发人员轻松地将数据绑定到Fragment的视图层次结构中的各个元素。

传统上,我们需要手动在Fragment中查找视图元素的引用并进行手动绑定。

但是,Fragment DataBinding通过自动生成的绑定类处理这些繁琐的任务,使开发更加高效。

如何使用Fragment DataBinding下面是一步一步的指南,将指导您如何在Android应用中使用Fragment DataBinding。

第1步:配置Gradle为了使用Fragment DataBinding,我们需要在项目的Gradle文件中进行一些配置。

我们需要确保我们的应用程序支持DataBinding功能。

打开您的项目的顶级build.gradle文件,并在android标签下添加以下代码片段:groovydataBinding {enabled = true}这将启用DataBinding功能。

保存并关闭文件。

第2步:创建Fragment的布局文件接下来,我们需要创建一个用于Fragment的布局文件。

这个布局文件将是数据绑定的目标。

创建一个新的XML文件,并为它指定一个适当的名称(例如fragment_my.xml)。

在这个文件中,您可以定义您想要在Fragment中显示的任何视图元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.mediaPlayer = MediaPlayer.create(this, R.raw.mu);
5.mediaPlayer.setLooping(true);
6.mediaPlayer.start();
7.8.}
二十三、让程序的界面不随机器的重力感应而翻转
第一种方法,在manifast文件里面
3.androidlayout_height=wrap_content
4.androidtext=text1
5.androidtextSize=30sp
6.androidtextStyle=bold
7.androidtextColor=#FFFFFF
8.androidshadowColor=#ff0000ff
二十八、创建快捷方式
[java] view plain copy
1.Intent intent=new Intent();
2.设置快捷方式的图标
3.intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.img));
8.style
9.resources
[html] view plaiቤተ መጻሕፍቲ ባይዱ copy
1.TextView
2.style=@styletextstyle
3.androidlayout_width=fill_parent
4.androidlayout_height=wrap_content
3.import android.os.Vibrator;
4.5.public class TipHelper {
6.public static void Vibrate(final Activity activity, long milliseconds) {
7.Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
2.context.getPackageName(), 0).sourceDir;
3.DexFile dexfile = new DexFile(path);
4.EnumerationString entries = dexfile.entries();
5.while (entries.hasMoreElements()) {
youtParams. FLAG_FULLSCREEN);
二十五、在RelativeLayout中使selector要注意点
关于selector的使用方法,可以参考aomandeshangxiaoarticledetails6759576这篇文章,今天,遇到在RelativeLayout中添加background为selector后没有反应的问题,寻摸了很长时间,一直没有找到原因,其实只要加上一句代码就完全可以解决:
2.传递Intent对象给系统
3.setResult(RESULT_OK, intent);
4.finish();
二十九、获取文件中的类名:
[java] view plain copy
1.String path = context.getPackageManager().getApplicationInfo(
6.String name = (String) entries.nextElement();
7.......
8.}
三十. TextView中的getTextSize返回值是以像素(px)为单位的,
而setTextSize()是以sp为单位的.
所以如果直接用返回的值来设置会出错,解决办法是:
三十一. 在继承自View时,绘制bitmap时,需要将图片放到新建的drawable-xdpi
中,否则容易出现绘制大小发生改变
三十二. 在文字中加下划线 textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
二十七、退出程序时清除通知中信息
[java] view plain copy
1.NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
2.nm.cancelAll();
二十一、获取手机屏幕分辨率
[java] view plain copy
1.DisplayMetrics dm = new DisplayMereics();
2.3.getWindowManager().getDefaultDisplay().getMetrics(dm);
4.5.float width = dm.widthPixels dm.density;
[java] view plain copy
1.span style=font-size16px;RelativeLayout 里面加上androidclickable=truespan
这样,RelativLayout就会出现在selector里面定义的效果。
二十六、显示或隐藏虚拟键盘
9.androidshadowDx=5
10.androidshadowDy=5
11.androidshadowRadius=10
androidshadowColor 阴影颜色
androidshadowDx 阴影的水平偏移量
androidshadowDy 阴影的垂直偏移量
三十三. scrollView是继承自frameLayout,所以在使用LayoutParams时需要用frameLayout的
三十四、android阴影字体设置
[html] view plain copy
1.TextView androidid=@+idtvText1
2.androidlayout_width=wrap_content
4.item name=androidshadowColor#ff0000ffitem
5.item name=androidshadowRadius10item
6.item name=androidshadowDx5item
7.item name=androidshadowDy5item
[java] view plain copy
1.public void onCreate(Bundle savedInstanceState) {
2.super.onCreate(savedInstanceState);
3.setContentView(yout.mainlay);
[java] view plain copy
1.显示:
2.InputMethodManager imm = (InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE));
3.imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Android有用代码片段(二)
1人收藏此文章, 我要收藏 发表于2个月前(2012-05-18 1109) , 已有84次阅读 共0个评论
记得2011年的时候,整理了android有用代码片段这篇文章,后来,越添加越多,很是不方便,决定,每20条为一篇,分开记载,很多内容是从别的博客上面转载而来,由于疏忽没有说明来处,敬请作者谅解!
5.androidtext=字体样式
6.androidtextSize=30sp
7.androidtextStyle=bold
三十五、android实现手机震动功能
[java] view plain copy
1.import android.app.Activity;
2.import android.app.Service;
12.vib.vibrate(pattern, isRepeat 1 -1);
4.设置快捷方法的名称
5.intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, 点击启动哥的程序); 设置点击快键图标的响应操作
[java] view plain copy
1.intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,MainActivity.class));
6.7.float height = dm.heightPixels dm.density
在这里问什么要乘以 dm.density 了,是因为通过dm.widthPixels的到的结果始终是320,不是真实的屏幕分辨率,所以要乘以dm.density得到真实的分辨率。
二十二、在Activity里面播放背景音乐
androidshadowRadius 阴影的范围
为了统一风格和代码的复用,通常可以把这个样式抽取放入到style.xml文件中
[html] view plain copy
1.xml version=1.0 encoding=utf-8
2.resources
3.style name=textstyle
二十四、使activity全屏显示
[java] view plain copy
1.requestWindowFeature(Window.FEATURE_NO_TITLE);
相关文档
最新文档