安卓 - 技术教程文章

android之PackageManager简单介绍

PackageManager相关 本类API是对全部基于载入信息的数据结构的封装,包含下面功能:安装,卸载应用查询permission相关信息查询Application相关信息(application,activity,receiver,service,provider及对应属性等)查询已安装应用添加,删除permission清除用户数据、缓存,代码段等/*** PackageManager介绍:* 本类API是对全部基于载入信息的数据结构的封装,包含下面功能: * 安装,卸载应用 查询permission相关信息 查询...

Android绘制优化(二)布局优化【代码】【图】

相关文章 Android绘制优化(一)绘制性能分析前言我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升。当然这只是布局优化的一方面,那么如何来进行布局的分析和优化呢?本篇文章会给你一个满意的答案。1.布局优化工具在讲到如何去布局优化前,我们先来学习两种布局优化的工具。Hierarchy ViewerHierarchy Viewer是Android SDK自带的可视化的调试工具,用来检查布局...

如何将Eclipse中的项目迁移到Android Studio 中

如何将Eclipse中的项目迁移到Android Studio 中如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件。因为Android Studio 是用Gradle来管理项目的,具体操作步骤如下: 从Eclipse中导出 1.将你的ADT插件版本升级到22.0以上。 2.在Eclipse中,选择File-->Export。 3.在弹出的导出窗口中,打开Android的文件夹,选择“Generat...

Android开发命名规范和编码规范【代码】

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51346027无规矩不成方圆,是吧。。哈哈~~很庆幸,本人刚学java编程的时候,就被老师灌输了编程规范的相关知识,并且一直在遵守。有过团队开发经验的人都知道,如果没有一定的规范可行,那么代码看起来将是苦不堪言,甚至是乱七八糟。下面就介绍一下,我个人编码过程中使用到的规范,供大家参考~~命名规范命名规范要望文知义,简单明了。 命名规范定制太多,就会让...

Android解决使用findViewById时需要对返回值进行类型转换问题的辅助类【代码】

在我们的开发工作时,findViewById可能是用得最多的函数之一,但它特别讨厌的地方就是我们经常需要对返回的view进行类型转换,输入麻烦、代码丑陋,例如以前我们在Activity中找一些子控件一般是这样 :@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 查找子控件TextViewtextView=(TextView)findViewById(R.id.my_textview);ImageViewim...

Android基础教程(四)之-----取得手机屏幕大小DisplayMetrics的应用【代码】【图】

2009-11-0820:15:25 标签:Android 屏幕 手机 基础 教程 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://weizhulin.blog.51cto.com/1556324/311481 大家好,我们这一节要讲的内容是Android如何取得手机屏幕大小的例子.本节主要用了三个对象TextView ,Button ,以及DisplayMetrics ,其中Displaymetrics 是取得手机屏幕大小的关键类,这个例子非常的简单,当我们点击...

android 圆形ListView实现,并附带圆角ImageView【代码】【图】

转载请注明出处:王亟亟的大牛之路平时 垂直向下的ListView已经司空见惯,换一种带一定角度的圆角ListView应该会给用户不同的体验项目目录: 2个自定义View一个主Activity MainActivitypublicclassMainActivityextendsActivity {private ListView lv;//本地图片模拟数据源privateint[] images = newint[] { R.drawable.p1, R.drawable.p2, R.drawable.p3 };@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {super.onCr...

Android Api 27 在 Android 8.0 上出现 Only fullscreen opaque activities can request orientation 的解决情况【代码】

刚上班,没有业务开发,对 App 的 Api 由 26 升级到了 27, 结果在 Android 8.0 的设备上会出现 crash 。Log 如下:java java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation经过搜索发现该问题是在 App 适配了 Api 27 ,然后运行设备是 26 的时候出现的。查看源码(Api 27的源码),总共有两个地方会抛出来这个异常: Activity 的 onCreate 方法: protected void onCreate(@Nulla...

Android 系统稳定性 - ANR(一)

文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任。很久之前写的了,留着有点浪费,共享之。编写者:李文栋 如果你是一个Android应用程序开发人员,你的人生中不可避免的三件事情是:死亡、缴税和ANR。这么说是夸张了,但是由于Android本身的设计,以及应用程序和系统在开发过程中的缺陷,经常会在测试过程中遇到各种各样的ANR问题。在功能性的测试中还少一些,主要是在压力测试中(例如Monkey测试)会遇到非常...

Android animation【代码】【图】

转自:http://www.cnblogs.com/feisky/archive/2010/01/11/1644482.html关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式:1. Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;2. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画。动画类型下面先来看看Android提供的动画类型。Android的animation由四种类型组成在XML文件中:al...

Android的ProgressBar【代码】

注意点:必须在setContentView 前面设置,否则会报错。重要的方法: progress.incrementProgressBy(int diff);//参数为进度数,进度满了为100.不能够超过100. progress.incrementSecondaryProgressBy(-10);package com.wyl.progressbartest;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Bu...

Android新手引导库推荐

本文同步至http://javaexception.com/archives/31介绍一波新手引导层的库。都是star数挺高的一些库。1.NewbieGuide(国内开发者开发)Android 快速实现新手引导层的库,通过简洁链式调用,一行代码实现引导层的显示。github地址 https://github.com/huburt-Hu/NewbieGuide 当前star数20482.Highlight(国内开发者开发)一个用于app指向性功能高亮的库github地址 https://github.com/hongyangAndroid/Highlight 当前star数27823.GuideVi...

Android利用资源名称获取其ID(一)--->getIdentifier()

MainActivity如下:package cc.wy;import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.widget.ImageView; import android.widget.TextView; /*** Demo描述:* 利用getIdentifier()方法获取资源ID* * 方法描述:* getIdentifier(String name, String defType, String defPackage)* 第一个参数:资源的名称* 第二个参数:资源的类型(drawable,string等)* 第三个参数:包名*/ public ...

【转】android JNI

原文网址:http://jinguo.iteye.com/blog/696185Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。 1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Java类编译为Dex型式的Bytecode之后,必须靠Dalvik虚拟...

Android 动画【图】

android中动画分为3种:1.Tween Animation:补间动画(tweened animation)通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;缺点 :补间动画是只能够作用在View上;它只能够实现移动、缩放、旋转和淡入淡出这四种动画操作;它只是改变了View的显示效果而已,而不会真正去改变View的属性。它并不能改变事件响应的位置,它只是单纯地修改了显示。比如说实现一个按钮的移动,那么按钮的实际点击有效...

转:美团Android资源混淆保护实践【代码】

转自:http://tech.meituan.com/mt-android-resource-obfuscation.html前言Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译、破解、汉化等等,这样就可以修改原有代码的逻辑、添加新代码、添加或修改资源、或者更有甚者植入病毒等等,从而破坏原有APK的安全和用户体验,最终伤害到用户和原有的开发者。而事物都是有两方面的,有矛就有盾,...

Android异步处理系列文章四篇之一使用Thread+Handler实现非UI线程更新UI界面【代码】【图】

目录:Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理 Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主...

Android摇一摇振动效果Demo【图】

前言 在微信刚流行的时候,在摇一摇还能用来那啥的时候,我也曾深更半夜的拿着手机晃一晃。当时想的最多的就是。我靠,为神马摇一下须要用这么大的力度,当时我想可能腾讯认为那是个人性的设计。后来才发觉尼马重力加速度设得太高了吧。扯多了。近期项目里须要解决一个振动的问题,因此在学习振动实现的过程中,写了个demo实现了摇一摇振动的效果,这里记录一下。原理 摇一摇功能的基本原理就是:利用手机的加速度传感器,当...

Android与H5互调【代码】

前言 微信,微博,微商,QQ空间,大量的软件使用内嵌了H5,这个时候就需要了解Android如何更H5交互的了;有些外包公司,为了节约成本,采用Android内嵌H5模式开发,便于在IOS上直接复用页面,最终解决成本。 为什么学android也要学h5? Android很多软件都有内嵌H5的,有什么用处、优势?节约成本,提高开发效率。实现的原理是什么? 本质是:Java代码和JavaScript调用 案例一:Java与Js简单互调 首先...

android下关闭软键盘【代码】【图】

在viewpager下,有时在某个pager调用了软键盘,当切到其他pager时软键盘不会收起来。。。甚至于将应用最小化之后再还原也依然有软键盘在~百度了一下有很多方法,最后找到一个最简单而有效的。InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);if (imm.isActive()&&getCurrentFocus()!=null) imm.hideSoftInputFromWindow(getCurrentFocus().getApplicationWindowToken(), InputMethodManager...

Android环境下使用SocketClient【代码】【图】

最近对原来写的SocketClient代码进行优化,从整体架构到具体细节,修改的地方比较多。今天有时间把SocketClient的相关知识整理一下。如果有错误的地方,还望指正!!!一、整体流程:650) this.width=650;" src="/upload/getfiles/default/2022/11/9/20221109064816350.jpg" title="图片1.png" /> 描述如下: 1. 在Android环境下,SocketClient长连接,需要使用service。 2. SocketManagerService是...

在ViewPager中切换Fragment 不重新创建 - Android【代码】

在使用Viewpager滑动Fragment时,ViewPager只会保存当前页两边的Fragment状态.这样就会出现这样的情况: 一打开会初始化page1和page2,当手动切换到page3时page4就会初始化,但是page1就会销毁,当再切换到page1时page1就会重新初始化. 其实这是Viewpager提供的一种性能优化,叫做懒加载.  但是这种情况会导致切换时page中的布局老是重新创建,状态保存不了,体验不流畅,解决办法就是设置Viewpage的缓存页数;android.support.v4.view.Vie...

安卓android WebView Memory Leak WebView内存泄漏

Android WebView Memory Leak WebView内存泄漏在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用webview.destroy();webview=null;对内存占回收用还是没有任何效果。有人说,一旦在你的xml布局中引用了webview甚至没有使用过,都会阻碍重新进入Application之后对内存的gc。包括使用MapView有时一会引发...

RxJava在Android中内存泄漏解决以及RxJava的封装。【代码】

RxJava在现在是一个非常前卫的异步框架,也是由于他非常新,所以比较难以驾驭。 像okhttp直接在onStop或者onDestroy 调用它的cancel方法就行了,但是Rxjava并没有那么简单。因为假如每次请求都得到Observable对象,然后再onStop中unsubscribe取消,这样很不利于封装。而且会造成代码量很多,所以我找到了用rxlifecycle的解决方案。 先导包 compile ‘com.trello:rxlifecycle:0.5.0‘compile ‘com.trello:rxlifecycle-compone...

Android学习之listview的下拉刷新、上拉载入【代码】【图】

本例是在上例的基础上完成的。本例实现的listview上拉载入、下拉刷新功能,是在开源网站上别人写好的listview,主要是对listview的控件进行重写,添加了footer和header。1.listview_footerlistview_footer是listview的底部。 1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="wrap_cont...

android:launchMode概述【代码】

android:launchMode An instruction on how the activity should be launched. There are four modes that work in conjunction with activity flags (FLAG_ACTIVITY_* constants) in Intent objects to determine what should happen when the activity is called upon to handle an intent. They are: "standard" "singleTop" "singleTask" "singleInstance"The default mode is "standard".Activity有四种启动模式,默认为标...

android的通知栏的实现

package com.example.mynotification;import android.os.Bundle; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.support.v4.app.NotificationCompat; import android.view.Menu;public class MainActivity extends Activity {public PendingIntent getDefalutIntent(int flags){Pend...

【Android个人理解(二)】从实现方法深入了解自定义适配器的工作过程【图】

自定义适配器时,需要重写BaseAdapter的getCount(),getItem(int position),getItemId(int position),getView()方法。 但是由于不了解每个方法在工作时发挥的作用,而不知道如何重写四个方法。 1、由Adapter的工作原理了解getCount()和getView()的作用。 getCount()用来告诉系统Item的个数,也就是我们将要绘制的个数。因此我们如此重写这个方法: public int getCount() { return dataList.length; } 但当我们在Gallery如此...

Android:ListView(一)【代码】【图】

ListView四种适配器: 1、ArrayAdapte 2、SimpleAdapter 3、SimpleCursorAdapter 4、BaseAdapter 下面是基于后面3中适配器实现的,还有一个就是SimpleAdapter的加强版,也就是plus,哈哈。主要是实现带图片功能,第一种适配器比较简单,准备用它实现显示分组。下面是实现功能截图以及代码。上图实现的核心代码:publicclassListView1extendsActivity {private ListView listView;@OverrideprotectedvoidonCreate(Bundle savedI...

Android Handler消息传递机制详解【代码】

1.为什么要用Handler  出于性能优化的考虑,Android UI操作并不是线程安全,如果有多个线程并发操作UI组件,可能导致线程安全问题。可以设想下,如果在一个Activity中有多个线程去更新UI,并且都没有加锁机制,可能会导致什么问题? 界面混乱,如果加锁的话可以避免该问题但又会导致性能下降。因此,Android规定只允许UI线程修改Activity的UI组件。当程序第一次启动时,Android会同时启动一条主线程(Main Thread),主线程主要负责处理与UI相...