java
文章平均质量分 76
我说HelloWorld
奋斗在前线的程序员
展开
-
Android 中资源文件夹RES/RAW和ASSETS的使用区别
/ 读取res/raw/example.txt文件内容try {= null) {*res/raw:适用于简单的资源文件,文件名有严格要求,通过资源ID访问。1、优点:直接通过资源ID访问,性能较好。2、缺点:不支持复杂的文件夹结构,文件名有严格要求。3、适用场景:简单资源文件,如音频、视频、文本等*assets:适用于复杂的资源文件,支持文件夹层次结构,通过文件路径动态访问。通过合理选择和使用这两个文件夹,可以实现更高效的资源管理和访问,提升应用的组织性和性能。原创 2024-05-22 09:56:05 · 307 阅读 · 1 评论 -
Android Service应用详解
startService:服务由 startService 启动后会一直运行,直到调用 stopSelf() 或 stopService()。它不依赖于启动它的组件的生命周期。bindService:服务由 bindService 启动后会在所有绑定的组件解除绑定时停止。它的生命周期依赖于绑定的组件。原创 2024-05-20 09:35:11 · 736 阅读 · 18 评论 -
Android Don‘t Press With Parent Button按钮效果代码实现
可以在setPressed方法中进行事件拦截,通过覆盖setPressed方法来实现。当按钮被按下时,我们可以在setPressed方法中进行自定义处理,并控制事件是否向上传递。不过,setPressed方法主要用于更新视图的状态,而不是直接处理触摸事件,因此这种方法通常不是直接用于事件拦截,但可以结合其他方法来实现目的。解释setPressed方法:覆盖setPressed方法,我们可以在按钮状态改变时执行自定义逻辑,但不直接用于事件拦截。原创 2024-05-15 09:30:10 · 901 阅读 · 1 评论 -
Android 控件自定义属性三部曲
首先,你需要在res/values目录下创建一个XML文件,通常命名为attrs.xml,用于定义自定义属性。假设我们要为一个自定义的TextView控件添加自定义属性,比如customTextColor和customTextSize。原创 2024-05-14 16:35:49 · 454 阅读 · 3 评论 -
Android XML的使用详解
其实android中定义如此多的XML配置文件,在我看来就是为了达到显示层和数据层的分离,提高了可维护性,也是我们的程序代码变得简洁!!原创 2024-05-14 11:18:30 · 377 阅读 · 7 评论 -
Android Saving Activity State使用说明和注意事项
当这些变化发生时,Android重新创建这个运行着的Activity(系统调用onDestroy(),然后立即调用onCreate()),这种行为可以帮助应用程序采用新的配置,通过自动加载应用程序利用你提供的可选资源(不同的屏幕和大小采用不同的布局)。处理这种重启事件最好的方法就是存储和恢复你的activity的状态,通过调用onSaveInstanceState()和onRestoreInstanceState()(或onCreate())。原创 2024-05-14 09:29:02 · 920 阅读 · 3 评论 -
Android PreferenceActivity可以自动设置的Activity
PreferenceActivity 是一个抽象类,继承自ListActivity ,该类封装了SharedPreferences.PreferenceActivity 提供了一些常用的设置项如,与普通组件一样,这些配置项既可以从XML文件创建,也可以从代码创建.每一个设置项标签有一个android:key属性,该属性的值就是保存在XML文件中的key-value对中的key.原创 2024-05-14 09:03:53 · 543 阅读 · 0 评论 -
领略Java内部类的“内部”
编译器又出来帮我们解决了这个问题,他在Inner类中创建了一个beep的备份 ,也就是说即使Ouuter中的beep被回收了,Inner中还有一个备份存在,自然就不怕找不到了。静态内部类和私有内部类最大的区别在于,静态内部类中无法引用到其外围类的非静态成员。(1) 在外部类的作用范围内可以任意创建内部类对象,即使内部类是私有的(私有内部类)。(2) 方法内部类只能够访问该方法中的局部变量,所以也叫局部内部类。(1) 方法中的内部类没有访问修饰符, 即方法内部类对包围它的方法之外的任何东西 都不可见。原创 2024-05-13 16:50:48 · 543 阅读 · 3 评论 -
Android AVTIVITY ONCREATE, ONSAVEINSTANCESTATE和ONRESTOREINSTANCESTATE的用法探讨
为什么要有两个来调用?如果orientation发生了变化,同时没有规定Activity在orientation变化的时候不重启,那么Activity会调用onDestory销毁当前的Activity,但是同时onSaveInstanceState也会被调用,这样在变化之后,原有的画面信息仍然被保留了下来。如果使用中点击了Home键,onSaveInstanceState不会被调用,因为Activity没有被销魂,只是放到了stack中去了,跟startActivity的情况一样。原创 2024-05-13 16:35:34 · 812 阅读 · 1 评论 -
Android Cursor与Adapter结合使用
而Cursor本身是一个接口类,提供了对结果集访问的一些抽象方法,根据功能的不同在其子类有着不同的实现。首先通过id分别获得TextView和Spinner对象的引用,然后使用之前查询返回的Cursor和Android 自带的Spinner子控件的布局构造一个SimpleCursorAdapter,再调用setDrop-DownViewResource()方法来设置点开Spinner后显示子控件的布局,最后设置Spinner的适配器为adapter并对其子控件被选取的事件设置一个监听器。原创 2024-05-13 16:22:16 · 560 阅读 · 1 评论 -
Android AsyncTask深入浅出
AsyncTask的特点是任务在主线程之外运行,而回调方法是在主线程中执行,这就有效地避免了使用Handler带来的麻烦。阅读AsyncTask的源码可知,AsyncTask是使用java.util.concurrent 框架来管理线程以及任务的执行的,concurrent框架是一个非常成熟,高效的框架,经过了严格的测试。AsyncTask的执行分为四个步骤,每一步都对应一个回调方法,需要注意的是这些方法不应该由应用程序调用,开发者需要做的就是实现这些方法。) 此方法在主线程执行,用于显示任务执行的进度。原创 2024-05-13 16:13:21 · 868 阅读 · 0 评论 -
Android 自定义Dialog及代码分析
自定义Dialog//关键在下面的两行,使用window.setContentView,替换整个对话框窗口的布局 Window window = alertDialog . getWindow();} /*** 设置按钮} /*** 设置按钮} else {} } /*** 关闭对话框} }/**原创 2024-05-11 17:58:51 · 1356 阅读 · 40 评论 -
Andorid系统根据包名启动APK
如果apk桌面有图标的情况下:代码:配置:如果apk桌面没有图标的情况下:代码:配置:效果图:当然还有更多的实现方式,我就个举个例子,如果更好的麻烦告诉我…原创 2014-09-24 22:27:05 · 604 阅读 · 0 评论 -
Android 系统字体
0、对Android字库的认识:Android系统对字体的载入和Linux桌面很像,有一个Priority Order(优先级顺序)的,当然先是西方字符,然后是一些符号字体(包括emoji字体),再就是中日韩字符(DroidSansFallback.ttf包含了全部CJK的字符,但是日文字符有专门的MTLmr3m.ttf来显示,不过Android默认为仅在语言区域为日本(”ja”)的时侯才把MTLm原创 2015-09-18 13:26:24 · 20623 阅读 · 1 评论 -
Android Widget开发代码示例详细说明
因为AppWidgetProvider扩展自BroadcastReceiver, 所以你不能保证回调函数完成调用后,AppWidgetProvider还在继续运行原创 2024-04-28 15:30:41 · 603 阅读 · 0 评论 -
Android如何使用XML自定义属性
在res/values文件下定义一个attrs.xml文件,代码如下:在布局中使用,示例代码如下:原创 2024-04-28 15:10:15 · 730 阅读 · 0 评论 -
Android Dialog自定义
如果要设置dialog的位置,需要使用Window,同样,如果设置全屏也是需要window来处理的,因为View是在window里展示的,更改位置和设置全屏都是在默认的window里做的,显然这个默认的window不能满足需求。4、cancel和dismiss视觉上是一样的使dialog消失,但是触发的事件不一样,前者触发OnCancel事件,后者触发了onDismiss事件,如果设置了相应的监听器或调用了相关函数的话,需注意区分。//theme可能为透明效果,如上1。原创 2024-04-28 14:53:58 · 499 阅读 · 0 评论 -
Android SoundPool使用案例及源码分析
注意传入的参数,要不然停止不了…看下面源代码注释说明就明白了。原创 2024-04-28 10:02:42 · 165 阅读 · 0 评论 -
Fragment - Unknow animation name objectAnimator 问题解决及源码分析
从上面Log日志可以看出:是V4包里面有个类:FragmentManager的一个内部类FragmentManagerImpl里面调用了loadAnimation函数,这个函数再次调用了动画工具类AnimationUtils的createAnimationFromXml,具体源代码如下。所以:在使用V4包中Fragment时,使用的切换动画效果,其动画文件中不能包含objectAnimator,Animator这类标签。1、在动画XML里面我们用了objectAnimator这个动画标签。原创 2024-04-28 09:31:40 · 171 阅读 · 0 评论 -
Android动画自定义源码分析
既然setAnimation()了,那么它要用的时候,肯定要getAnimation(),找到这个方法在哪里调用就好了。首先说Animation(android.view.animation.Animation)对象,无论是用纯java代码构建Animation对象,还是通过xml文件定义Animation,其实最终的结果都是。1.首先证明了一点,Animation.applyTransformation()方法,是动画具体的调用方法,我们可以覆写这个方法,快速的制作自己的动画。原创 2024-04-28 09:08:32 · 702 阅读 · 1 评论