Android开发
HughZhao1780
这个作者很懒,什么都没留下…
展开
-
Android Camera启动流程---应用层
今天来分析下camera的启动的流程,camera模块的整个流程是很复杂的,贯穿整个Android上下层。这里以展锐平台的原生相机为例,分析一下app层的camera启动流程。准备工作Camera模块的launcher入口即是CameraActivity,其继承自QuickActivity,QuickActivity的作用是解决两次onResume的bug,所以我们不必关心,直接来看CameraActivity中的onCreateTasks方法(调用自QuickActivity中的onCreate方法)原创 2020-06-17 17:12:49 · 2528 阅读 · 0 评论 -
浅谈Android中的事件分发
在我们实际的项目中,涉及到手势的操作很多,这就需要我们对Android的事件有一定的了解,才能设计出好的手势。本文就对Android中的事件分发做一些简单的介绍。1、Android中事件的基本概念1.1、事件分发的对象事件分发的对象就是事件,当我们触摸屏幕的时候就会触发一系列的事件。Touch事件相关细节(发生触摸的位置、时间、历史记录、手势动作等)被封装成MotionEvent对象。1.2、事件的种类Android中的事件分为4类:MotionEvent.ACTION_DOWN:按下Vie原创 2020-05-15 14:43:06 · 381 阅读 · 1 评论 -
浅谈Android中动画的使用
Android中的动画重要分为两类:View Animation和Property AnimationView Animation又分为补间动画(Tween Animation)和帧动画(Frame Animation)原创 2020-04-14 09:33:17 · 191 阅读 · 0 评论 -
当ListView中有Button,如何使setOnItemClickListener失效
相信很多朋友设置了有Button的ListView之后,监听listview的item不生效了这里有三种解决办法1、在listView的item根布局中设置属性android:descendantFocusability="blocksDescendants" 2、设置listView的item中的Button属性android:focusable="false"android:fo...原创 2020-04-08 16:15:49 · 240 阅读 · 0 评论 -
Android中自定义弧形的seekbar
项目需求,需要做一个弧形的seekbar直接上代码,代码有注释package com.hughzhao.seekbardemo.ui;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Ca...原创 2020-03-24 14:49:47 · 1227 阅读 · 1 评论 -
Android strings.xml的特殊字符,添加空格或字符的方法
项目中要在string.xml 中显示特殊符号、如@号冒号等、直接写肯定不行啦只能考虑使用ASCII码进行显示、在XML中空格符不是用HMTL中的表示、而是用编码表示以下为常见的ASCII十进制交换编码:@ 对应 -----@-----: 对应 -----:-----  对应 -----空格-----  对应 --...原创 2020-03-03 10:43:43 · 1259 阅读 · 0 评论 -
调节音量的各个方法——AudioManager的使用
//获取AudioManager实例对象AudioManager audioManage = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);//获取最大音量和当前音量,参数:STREAM_VOICE_CALL(通话)、STREAM_SYSTEM(系统声音)、STREAM_RING(铃声)、STREAM_MUSIC(...原创 2019-12-12 15:05:11 · 1685 阅读 · 0 评论 -
Android中打印intent的extra携带信息
Intent intent = getIntent(); Bundle bundle = intent.getExtras(); for (String key: bundle.keySet()) { Log.i("Bundle Content", "Key=" + key + ", content=" +bundle.getStri...原创 2019-11-06 14:35:12 · 3590 阅读 · 0 评论 -
Android基本组件之服务Service
Service的开启与关闭1.继承Service类2.在AndroidManifest.xml中注册<service android:name=".MyService" android:enabled="true" android:exported="true"></service>直接创建Service的话,前两步会自动执行3.通过Contex.startSer...原创 2019-09-03 17:44:08 · 179 阅读 · 0 评论 -
Android中使用Serializable和Parcelable实现序列化
Android中实现序列化有两种方式,一种是使用Serializable,另一种就是Parcelable。Serializable本身就是JavaSE支持的,Parcelable是Android特有的,效率比Serializable高,据统计一般情况下能快10倍左右!但是Parcelable不能用在需要数据永久储存的情况,比如存到本地文件中,Parcelable不能保证在外界有变化的时候数据的持...原创 2019-09-04 16:45:17 · 190 阅读 · 0 评论 -
Android网络通信开源库——Volley
Volley是由Google开发和维护的开源库,提供了对String,图片,JSON的解析下面简单来说一下用法一、首先需要导入Volley依赖包 implementation 'com.android.volley:volley:1.1.1'二、添加网络访问的权限在AndroidManifest.xml中 <uses-permission android:name=...原创 2019-09-05 15:57:36 · 383 阅读 · 0 评论 -
Android数据库更新并保留原来数据
思路很简单,只需要把原来table中的数据转移就好我们来看实现 @Override private String createTableBook="create table Book(id integer primary key autoincrement,author text,price real,pages integer,name text)"; private String...原创 2019-09-06 17:22:03 · 997 阅读 · 0 评论 -
Android中网络请求库对比
原创 2019-09-10 18:06:18 · 360 阅读 · 0 评论 -
Android中Dialog的使用
1、创建AlertDialog首先,我们大致来了解下AlertDialog的创建步骤。在平时的使用中,你会发现这种dialog布局和普通的TextView、Button等不同,它是在某个特定时机才会触发,所以AlertDialog并不是在xml布局文件中创建,而是在代码中通过构造器创建的。创建AlertDialog的步骤:1.创建AlertDialog.Builder的对象2.通过方法设置...原创 2019-09-25 10:53:00 · 1288 阅读 · 0 评论 -
RecyclerView加载不同的Layout
有时候一个界面的RecyclerView可能要显示好几种的不同的布局,学习了,记录一下下面是同一个RecyclerView加载两种不同布局的写法主要加载的xml文件activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.andro...原创 2019-09-03 13:59:11 · 669 阅读 · 0 评论 -
优美的UI---Material Design
1.Toolbar的用法1.1关于标题栏的那些事每个应用都有默认的标题栏在AdroidManifest.xml中:<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" ...原创 2019-08-27 09:27:16 · 301 阅读 · 0 评论 -
应用中调用本地相机拍照
在代码中展示应用如何调用本地相机拍照File outputImage = new File("output_image.jpg");//创建file对象,用于存储拍照后的照片 if(outputImage.exists()) outputImage.delete(); try { ...原创 2019-07-31 20:27:56 · 784 阅读 · 0 评论 -
异步消息处理机制
Message.线程间传递消息Handle.发送和处理消息,利用sendMessage()发送消息,handleMessage()处理消息MessageQueue.消息队列,用于存放所有message,每个线程只有以一个MessageQueue对象Looper.是MessageQueue的管家,发现MessageQueue有消息时将它取出public class MainActivit...原创 2019-07-31 20:38:45 · 1997 阅读 · 0 评论 -
服务service与活动activity的绑定
新建MyService继承Service(new Service)public class MyService extends Service { private DownloadBinder mBlinder = new DownloadBinder();//构建内部类DownloadBinder继承Binder, class DownloadBinder extends B...原创 2019-07-31 20:53:18 · 481 阅读 · 0 评论 -
活动Activity的生命周期
onCreate()活动第一次被创建时被调用onstart()活动由不可见到可见时调用onResume()在活动准备好和用户进行交互时调用,此时的活动一定处于返回栈的顶栈,并且处于运行状态onPause()暂停状态,系统准备去启动或者恢复另一个活动时调用,这个方法执行要快onStop()活动完全不可见时调用onDestroy()活动被销毁前调用onResrart()活动...原创 2019-08-08 11:42:58 · 176 阅读 · 0 评论 -
Android横竖屏的判断
Configuration mConfiguration = this.getResources().getConfiguration(); //获取设置的配置信息int ori = mConfiguration.orientation; //获取屏幕方向if (ori == mConfiguration.ORIENTATION_LANDSCAPE) { //横屏 setReq...原创 2019-08-06 11:10:12 · 687 阅读 · 0 评论 -
ViewPager的用法
话不多说,直接介绍用法使用方法其实与Listview和RecyclerView的方法类似一、文字切换页面1.布局文件用ViewPager<android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" an...原创 2019-08-02 09:52:40 · 395 阅读 · 0 评论 -
RecyclerView的用法
闭包添加implementation implementation 'com.android.support:recyclerview-v7:28.0.0'添加活动xml <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:la...原创 2019-08-06 20:49:41 · 105 阅读 · 0 评论 -
Android中Fragment的用法
Fragment的出现主要是为了解决安卓设备尺寸多样化后界面的显示问题。Fragment比Activity较轻量级,可以提供与用户交互的界面并且有自己的生命周期,也不用在AndroidManifest.xml中注册,但它必须嵌套在Activity中使用。之前需要使用多个Activity显示的内容,现在可以用一个Activity嵌套多个Fragment来实现。1.静态Fragment的实现从De...原创 2019-08-13 20:32:27 · 974 阅读 · 0 评论 -
关于Android源码全编译和单编的问题
全编cd到源码工程目录下idh.core$git branch -a 查看所有分支git checkout --track +指定分支 切到指定分支git pull./build…(.sh脚本文件) + …(spec文件) + pac(编译完在idh.core$ 下生成了.pac文件,可利用刷机软件进行刷机)单编source buildall_userdebug.sh ED572...原创 2019-08-14 10:20:02 · 2712 阅读 · 0 评论 -
Android的Preference的使用和监听事件
自己是做系统settings的,所以学习了Preference的用法,这里记录下来供大家参考。1、基本组成的使用1.1组织方式(组合控件)PreferenceScreen:最平白和基础的方式PreferenceCategory:带有层次感的方式请继续往下看 下面有展示1.2各组件介绍(单一控件)Preference一般用作设置中,常用的组件就下面四种组件含义组件名...原创 2019-08-09 17:47:42 · 4672 阅读 · 10 评论 -
AsyncTask的使用
核心 & 常用的方法如下:使用步骤1.创建 AsyncTask 子类 & 根据需求实现核心方法2.创建 AsyncTask子类的实例对象(即 任务实例)3.手动调用execute(()从而执行异步线程任务具体实例,创建进度条点击按钮 则 开启线程执行线程任务显示后台加载进度加载完毕后更新UI组件期间若点击取消按钮,则取消加载配置layout xml文...原创 2019-08-07 17:09:52 · 94 阅读 · 0 评论 -
Android中的PackageManager
如Android P的源码中获取可以设置壁纸app的逻辑 Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER);//手机中能设置壁纸的活动 PackageManager pm = getPackageManager();//获得PackageManager对象 List<ResolveInfo> rList =...原创 2019-08-19 11:59:48 · 409 阅读 · 0 评论 -
Android中BroadcastReceiver的使用
由于初学,了解的还不是很全面,写一点,记录下来1.标准广播1.1 接收广播比如系统网络改变会发送一条action为“android.net.conn.CONNECTIVITY_CHANGE”的广播那么活动中如何去接收这条广播呢1.1.1动态广播注册自定义广播接收器继承BroadcastReceiver重新onReceive()方法 public class Networkchan...原创 2019-08-14 20:30:22 · 134 阅读 · 0 评论 -
Android中获取系统信息的类android.os.Build
android.os.Build类是一个非常方便使用的类,不需要任何权限。说明如下:android.os.Build.BOARD:获取设备基板名称android.os.Build.BOOTLOADER:获取设备引导程序版本号android.os.Build.BRAND:获取设备品牌android.os.Build.CPU_ABI:获取设备指令集名称(CPU的类型)android.os....原创 2019-08-22 10:37:45 · 2279 阅读 · 0 评论 -
通知的使用
通知的使用调用Context的getSystemService方法获得一个NotificationManager对象manager调用NotificationCompat.Builder(MainActivity.this,“default”)new一个Notification对象对这个Notification对象进行一系列操作调用NotificationManager对象manager的...原创 2019-07-31 20:09:32 · 198 阅读 · 0 评论