activity

android 探索首选项框架 ListPreference

别来无恙 提交于 2020-03-02 08:35:53
探索首选项框架 在深入探讨Android的首选项框架之前,首先构想一个需要使用首选项的场景,然后分析如何实现这一场景。假设你正在编写一个应用程序,它提供了一个搜 索飞机航班的工具。而且,假设该应用程序的默认设置是根据机票价格由低到高的顺序显示航班,但用户可以将首选项设置为始终根据最少停站数或特定航线来航 班。如果实现这一场景? ListPreference 显然,必须为用户提供UI 来查看排序选项列表。该列表将包含每个选项的单选按钮,而且默认(或当前)选项应该被预先选中。要使用Android首选项框架解决此问题,所做的工作非 常之少。首先,创建首选项XML文件来描述首选项,然后使用预先构建的活动类,该类知道如何显示和持久化首选项,下面是我们的首选项 XML 文件flightoptions.xml 。 Xml代码 <? xml version = "1.0" encoding = "utf-8" ?> < PreferenceScreen xmlns:android = "http://schemas.android.com/apk/res/android" android:key = "flight_option_preference" android:title = "@string/prefTitle" android:summary = "@string

Android的Fragment

不打扰是莪最后的温柔 提交于 2020-03-02 06:17:06
1、Fragment的产生与介绍 Android 运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布 局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是 Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添 加、替换和移除某个Fragment。 2、Fragment的生命周期 Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。官网这张图很好的说明了两者生命周期的关系: onAttach(Activity) 当Fragment与Activity发生关联时调用。 onCreateView(LayoutInflater, ViewGroup,Bundle) 创建该Fragment的视图 onActivityCreated(Bundle) 当Activity的onCreate方法返回时调用

Android四大组件之Service

房东的猫 提交于 2020-03-02 05:45:01
相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了。Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务。必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态。 不过,虽然Service几乎被每一个Android程序员所熟知,但并不是每个人都已经将Service的各个知识点都掌握得非常透彻。那么今天我就将带着大家对Service进行一次全面、深入的探究,希望每个人在读完本篇文章后都能对Service有更深一层的理解。 Service的基本用法 关于Service最基本的用法自然就是如何启动一个Service了,启动Service的方法和启动Activity很类似,都需要借助Intent来实现,下面我们就通过一个具体的例子来看一下。 新建一个Android项目,项目名就叫ServiceTest,这里我选择使用4.0的API。 然后新建一个MyService继承自Service,并重写父类的onCreate()、onStartCommand()和onDestroy()方法,如下所示: [java] view plain copy public class

android app內切换语言环境

≡放荡痞女 提交于 2020-03-02 04:49:36
功能: app用户根据自己的语言喜好,设置app语言。语言设置只针对本app,并在下次启动应用时保留前一次启动设置。 更新语言: <!-- lang: java --> public static void changeAppLanguage(Resources resources, String lanAtr) { Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); if (lanAtr.equals("ru_RU")) { config.locale = new Locale("ru", "RU"); } else if (lanAtr.equals("en_US")) { config.locale = Locale.ENGLISH; } else if (lanAtr.equals("pt")) { config.locale = new Locale("pt"); } else { config.locale = Locale.getDefault(); } resources.updateConfiguration(config, dm); } sharePreferences存入设置语言: <!-- lang:

隐式Intent出现问题报错

浪尽此生 提交于 2020-03-02 00:57:28
<activity android:name=".MyAty" > <intent-filter> <category android:name="android.intent.category.default" > </category> <action android:name="com.example.mjc.learnintentdemo.intent.action.myaty" /> </intent-filter> </activity> 这是主配置文件 然后在MianActivity调用StartActivity StartActivity(new Intent("com.example.mjc.learnintentdemo.intent.action.myaty")); 报错android.content.ActivityNotFoundException: No Activity found to handle Intent 解决方法: Android对待所有传递给Context.startActivity()的隐式intent好像它们至少包 含"android.intent.category.DEFAULT"(对应CATEGORY_DEFAULT常量)。因此,活动想要接收隐式 intent必须要在intent过滤器中包含"android.intent

xcode 关闭打印和打开打印详情

孤者浪人 提交于 2020-03-02 00:24:02
Edit Scheme ->Run->Arguments Environment Variables 关闭打新信息 添加键值对 OS_ACTIVITY_MODE disable 勾线对号 打开打印信息 取消 添加键值对 OS_ACTIVITY_MODE disable 的对勾 同时添加Name MallocStackLogging MallocStackLoggingNoCompact NSAutoreleaseFreedObjectCheckEnabled NSDebugEnabled NSZombieEnabled 添加对勾 来源: CSDN 作者: 抬头说再见 链接: https://blog.csdn.net/qq_33615974/article/details/104600309

《深入理解Android》学习-View体系

旧巷老猫 提交于 2020-03-01 20:09:29
《深入理解Android》学习-View体系(一) SurfaceFlinger和WMS支撑起了Android的GUI的底层,但是和终端用户直接交互的还是View系统,本节将对View系统进行介绍,主要描述view的管理以及绘制过程。 1.1 View框架 下图是View框架的核心类图。 先介绍下上面图中各个类的关系。 Activity和Window Activity支持UI显示,但是并不是直接进行View树的管理,Activity中定义了一个Window类型的对象mWindow。而Window是个基类,系统根据不同的产品来产生不同的子类。具体是在调用Activity.attach中调用PolicyManager.makeNewWindow来决定的,目前默认生成的都是PhoneWindow。 Window和WindowManagerImpl Window具有两层含义,一方面它面向Activity,承担着显示UI的作用;另一方面它还要同WindowManagerService通信。当然,这个也不是直接在Window中实现的,不然会造成功能混乱,这个功能由WindowManager来实现,而Window中包含了一个WindowManager的对象mWindowManager,WindowManager是一个接口,其真正的实现是在WindowManagerImpl当中。

app包中的fragment和v4包中的fragment的使用的区别

好久不见. 提交于 2020-03-01 16:23:54
1、尽量不要用app包中的fragment,因为这个是在3.0之后才有的,支持的版本太高,在低版本中是是用不了的,android.support.v4.app.Fragment:可以兼容到1.6的版本。 2.app.fragment和v4.fragment都是可以使用<fragment>标签的只是在在使用的时候如果是app.fragment则没有什么特殊的地方继承Activity即可。 当v4.fragment使用<fragment>标签的时候就要特别注意了: 当这个Activity的布局中有<fragment>标签的时候,这个Activity必须继承 FragmentActivity,否则就会报错 来源: oschina 链接: https://my.oschina.net/u/1402366/blog/551397

Android开发历程_3(Activity生命周期)

。_饼干妹妹 提交于 2020-03-01 15:16:56
Activity中有7个与生命周期有关的函数。其中onCreated()是activity第一次被启动时执行的,主要是初始化一些变量,onRestart()是当前activity重新被启动时调用的;绑定一些监听器等;onStart()是activity界面被显示出来的时候执行的;onResume()是当该activity与用户能进行交互时被执行;onPause()是另一个activity被启动,当前的activity就被暂停了,一般在该函数中执行保存当前的数据;onStop()表示另一个activity被启动完成时,当前activity对用户同时又完全不可见时才调用的;onDestroy()是退出当前activity时调用的,当然如果程序中调用finish()或者说android系统当前资源不够用时就会被调用。    当用多个activity在执行时,这时候android系统会自动将这些activity压入栈中并且总是显示最顶的那个activity,这个栈在android叫做task,但是这个栈只支持压入和弹出操作,不支持排序插入等操作。    Activity的7个生命周期函数中的onStop()函数被调用时是在其对应的activity被另外的activity完全遮挡的时候,如果只有部分遮挡,则不会被调用。部分遮挡一般是以消息activtiy的形式出现

the usage of activity_main.xml

房东的猫 提交于 2020-03-01 15:16:10
为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activity一样包含布局。Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个 Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题。Fragment 2包含了TextView和 ImageView,来显示书的详细内容和图片。 AD: 51CTO学院:IT精品课程在线看! 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。 但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,手机的界面放在平板上可能会有过分被拉长、控件间距过大等情况。这个时候更好的体验效果是在Activity中嵌入"小Activity",然后每个"小Activity"又可以拥有自己的布局。因此,我们今天的主角Fragment登场了。 Fragment初探 为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activity一样包含布局。Fragment通常是嵌套在Activity中使用的