android-studio
RylynnKang
这个作者很懒,什么都没留下…
展开
-
自定义 ViewGroup(二) 事件分发
事件分发Android中与Touch事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、 onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能够响应 这些方法的控件包括:ViewGroup及其子类、Activity。方法与控件的对应关系如下表所示:从这张表中我们可以看到 Vi原创 2017-10-17 19:55:55 · 162 阅读 · 0 评论 -
Android --- MediaPlayer的使用详解
Android的MediaPlayer包含了Audio和Video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlaer来实现的。首先看看MediaPlaer的生命周期实现流程 : Application–>Framework MediaPlayer.java–>jni–>Library MediaPlayer.cpp–> 解码 –>Driver–> 硬原创 2017-11-02 19:12:07 · 568 阅读 · 0 评论 -
Android --- 视图绘制监听
// 从视图上获取视图树观察者ViewTreeObserver vo = mainView.getViewTreeObserver();// 对视图监听即将绘制vo.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() {原创 2017-10-25 21:32:18 · 731 阅读 · 0 评论 -
View 的绘图流程 (二)
onMeasure可以在视图中重写 onMeasure 方法计算该视图的精确的宽高,其中父容器会给定参考的宽高以及快高的模式 获取模式:// 获取宽的模式int widthMode = MeasureSpec.getMode(widthMeasureSpec);switch (widthMode){ case MeasureSpec.EXACTLY: // 精确的值 math_原创 2017-10-16 21:20:53 · 168 阅读 · 0 评论 -
Android 开发 ToggleButton 滑动开关按钮
滑动开关按钮的实现自定义layout布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:too原创 2017-10-16 21:12:24 · 1208 阅读 · 0 评论 -
View 用 Paint 画出的图形
1、画矩形(左上右下的顺序排列)//1、画矩形(左上右下的顺序排列)canvas.drawRect(left, top, right, bottom, paint);//2、画圆角矩形(区域需要使用RectF)RectF rf = new RectF(20,300,120,350);//画圆角矩形 canvas.drawRoundRect(rf,10,10,paint);//3、画椭圆原创 2017-10-16 13:17:04 · 165 阅读 · 0 评论 -
数据持久化 ( 存储 )
XML–SharePreferrence保存位置为 :/data/data/ 应用包名 /shared_prefs/xml 文件存储://(xml 文件名 , 操作模式 )SharedPreferences sh = getSharedPreferences(XML_NAME, Context.MODE_PRIVATE);// 存储内容需要有 EditorSharedPreferences.E原创 2017-11-01 21:20:19 · 471 阅读 · 0 评论 -
Android --- WebView -- 混合开发(二)
Webview常用方法1、WebView的状态//激活WebView为活跃状态,能正常执行网页的响应webView.onResume() ;//当页面被失去焦点被切换到后台不可见状态,需要执行onPause//通过onPause动作通知内核暂停所有的动作,比如DOM的解析、plugin的执行、JavaScript执行。webView.onPause();//当应用程序(存在webview)被切原创 2017-11-01 20:58:22 · 198 阅读 · 0 评论 -
Android --- WebView -- 混合开发(一)
前言现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,这样在每过节假日的时候界面都会随时更换,大大减小了工作量,所以也应用的比较广泛,如下图:所以就引入Android里一个组件WebView来实现的,根据API的学习,介绍一下WebView的常用用法,大致结构如下图:WebView 内置了 Html 解析的组件,可以显示 Html 页面上的图像、原创 2017-11-01 20:29:09 · 369 阅读 · 0 评论 -
View 用 Paint 实现的小Demo(2)
如下图:代码如下public class MyView extends View { public MyView(Context context) { super(context); setBackgroundColor(0x5500ff00); init(); } public MyView(Context context, @原创 2017-10-14 21:39:39 · 137 阅读 · 0 评论 -
View 用 Paint 实现的小Demo(1)
直接撸代码public class MyView extends View { public MyView(Context context) { super(context); setBackgroundColor(0x5500ff00); init(); } public MyView(Context context, @Nul原创 2017-10-14 20:38:11 · 182 阅读 · 0 评论 -
Android --- 进程(三)---自定义权限
自定义权限可以在 manifest 中 <application> 标签外使用 <permission> 申明自己的权限<permission android:name="com.xykj.permission.MUSIC" android:icon="@mipmap/ic_launcher" android:protectionLevel="normal" and原创 2017-11-08 20:18:18 · 502 阅读 · 0 评论 -
Android --- 进程(二)---进程通讯的回调处理
1 、在服务端定义一个回调的 aidl( 主要生成回调的 java 代码 )// IMusicCallback.aidlpackage com.xykj.musicserviceapp;interface IMusicCallback { void onDuration(int duration); void onCurrentPosition(int pos);}2 、在功能原创 2017-11-08 20:12:48 · 414 阅读 · 0 评论 -
Android --- 进程(一)---远程服务通讯 (AIDL)
Android使用AIDL和远程服务实现进程通信在Android中,每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢?显然, Java中是不支持跨进程内存共享的。因此要传递对象,需要把对象解析成操作系统能够理解的数据格式,以达到跨界对象访问的目的。在JavaEE中,采用RMI通过序列化传递对象。在Android中,则采用AIDL(Android I原创 2017-11-08 20:04:14 · 188 阅读 · 0 评论 -
Android --- 共享数据 -- ContentResolver
简介:ContentProvider 是内容提供者 ContentResolver 内容解析者ContentProvider 在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider 对你应用中的数据进行添删改查。关于数据共享,以前我们学习过文件操作模式,知道通过指定文件的操作模式为C原创 2017-11-02 19:51:51 · 355 阅读 · 0 评论 -
Android --- 多媒体应用(MediaRecorder 录音)
MediaRecorder 录音的几个步骤:1 、创建 MediaRecorder 对象 ( 或者 reset) 处于 idle 状态2 、通过 setAudioSource 设置音频来源3 、 setOutputFormat 设置输出格式,建议 default4 、 setAudioEncoder 设置输出编码5 、设置输出位置 setOutputFile6 、准备原创 2017-11-05 16:22:12 · 232 阅读 · 0 评论 -
Android --- 多媒体应用(使用VideoView、TextureView播放视频)
在Android中提供了一个VideoView播放视频,用于播放视频文件,要想使用VideoView组件播放视频,首先需要在布局文件中创建该组件,然后在Activity中获取该组件,并用 setVideoPath() 方法或 setVideoURI() 方法加载要播放的视频,最后调用VideoView组件的 start() 方法来播放视频。在android中,还提供了一个可以与Vide原创 2017-11-05 16:00:10 · 1898 阅读 · 0 评论 -
Android --- 多媒体应用(SoundPool播放音频)
如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1) 延时时间较长,且资源占用率高。2) 不支持多个音频同时播放。Android中除了MediaPlayer播放音频之外还提供了SoundPool来播放音效,SoundPool使用音效池的概念来管理多个短促的音效,例如它可以开始就加原创 2017-11-05 15:41:44 · 285 阅读 · 0 评论 -
Android --- 多媒体应用开发(边下载边播放)
做音乐播放器,有时候会用到系统自带的mediaplayer播放器,这个播放器底层是在linux上面,封装了一些api供使用者调用,由于网络HTTP请求歌曲流这一块的都已经被封装了,所以要想实现歌曲边下载同时还能缓存到我们的文件夹中,需要做的就是从请求过程中间再开辟一个中间代理,通过代理去处理之间的输入输出流,同时在代理中实现本文的功能,这样就能实现我们想要的边下边播了。边下载边播放文件头部原创 2017-11-05 14:47:13 · 935 阅读 · 0 评论 -
Android --- Json解析
JsonObject ,描述大括号括起来的 json 内容JSONObject obj = new JSONObject(jsonStr);// 获取一个 int 值int code = obj.optInt("code");// 获取字符串String name = obj.optString("name);// 获取 json 数组JSONArray ary = obj.optJSO原创 2017-10-26 20:47:54 · 152 阅读 · 0 评论 -
Android --- 文本超链接 使用
类似于上图中 经常在微博中用到的 #文本超链接# 两个#号中间会有超链接的效果文本超链接1 、定义局部点击的块对象// 超链接的块对象ClickableSpan clickSapn = new ClickableSpan() { // 局部被点击时触发 @Override public void onClick(View widget) { Toast.mak原创 2017-10-26 20:13:11 · 2870 阅读 · 0 评论 -
WiFiAdmin(WiFi管理工具类)
import android.content.Context;import android.net.wifi.ScanResult;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import java.lang.ref原创 2017-11-12 17:30:34 · 3424 阅读 · 0 评论 -
Android --- 常用的系统服务(二)
目前涉及的交互窗口Activity、 DialogWindowManager窗口管理器可以完成窗口的显示、 更新、 销毁的处理获取窗口管理器对象.private WindowManager wm;...//获取对象wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);初始化窗口的显示效果, 需要依赖于WindowManager原创 2017-11-12 17:03:36 · 301 阅读 · 0 评论 -
Android --- 常用的系统服务(一)
常用的系统服务ActivityManager、PackageManager、AlarmManager、AudioManager、WindowManager、SensorManager、NotificationManager、LayoutInflater……AlarmManager时钟管理器时钟类型:AlarmManager.RTC, 硬件闹钟, 不唤醒设备AlarmManager.RTC_WAKE原创 2017-11-12 16:54:31 · 1016 阅读 · 0 评论 -
Android --- WIFIUtils
import java.util.List;import android.content.Context;import android.net.wifi.ScanResult;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiConfiguration.KeyMgmt;import android.ne原创 2017-11-12 15:55:39 · 923 阅读 · 0 评论 -
Android --- WIFI(一)
WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面,主要包括以下几个类和接口:1.ScanResult 主要用来描述已经检测出的原创 2017-11-12 15:53:08 · 333 阅读 · 0 评论 -
Android --- Bluetooth(基础蓝牙)
蓝牙简介蓝牙(Bluetooth)是一种短距离的无线通信技术标准。这个名子来源于10世纪丹麦国王 Harald Blatand,英文名子是Harold Bluetooth。在无线行业协会组织人员的讨论后,有人 认为用Blatand国王的名字命名这种无线技术是再好不过了,这是因为Blatand国王将挪威、瑞 典和丹麦统一起来,这就如同这项技术将统一无线通信领域一样。至此,蓝牙的名字也就这样 定原创 2017-11-08 20:25:33 · 220 阅读 · 0 评论 -
Android Studio 中获取屏幕宽度
获取整个屏幕的宽度的方法Point p = new Point();//获取窗口管理器WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);wm.getDefaultDisplay().getSize(p);screenWidth = p.x; // 屏幕宽度原创 2017-10-13 20:29:49 · 4178 阅读 · 0 评论 -
View 的绘制流程(一)
每个View 绘制过程中,基本上都经历 3 个主要步骤:1、onMeasure()— 测量 ( 宽度高度 )2、onLayout()— 布局 ( 安排在哪个位置 )3、onDraw()— 显示内容自定义View的引用 1、可以从View中继承,自定义一个视图public class MyView extends View { /** * java的动态布局 * 一般用于原创 2017-10-13 20:12:31 · 170 阅读 · 0 评论 -
2D屏幕上的一些类型
Point:描述的是2D平面上的点(x坐标,y坐标)if(null == lastPoint){ lastPoint = new Point();}// 记录起始点的坐标int x = (int) event.getX();int y = (int) event.getY();lastPoint.set(x,y);Rect: 描述 2D 平面上的一个矩形区域 (left 左, to原创 2017-10-13 20:23:22 · 494 阅读 · 0 评论 -
Animation动画(一) ---- Tween 场景动画
Tween 动画 : 不断改变场景中的视图 ( 的观察视觉 ) 形成的动画, Animation透明度动画: AlphaAnimation// 创建透明度动画AlphaAnimation anim = new AlphaAnimation(0.0f, 1.0f);// 动画时间anim.setDuration(1500);// 使用动画view.startAnimation(anim);平原创 2017-10-19 19:30:31 · 963 阅读 · 0 评论 -
Animation动画(二)---- Frame 帧动画
Frame 动画 – 帧动画不断的改变场景实现的动画 ( 一帧一帧的显示 ) 在 Java 中使用 AnimationDrawable 对象来管理帧数据private AnimationDrawable frameAnim;...// 初始化帧动画对象frameAnim = new AnimationDrawable();for (int i = 1; i < 9; i++) {原创 2017-10-19 19:38:33 · 1200 阅读 · 0 评论 -
Bitmap 图像解码以及缩略图生成----BitmapFactory类
如果一个内存比较大的图片加载在App上时会直接运行失败,所以要先通过解析生成一张缩略图可以使用 BitmapFactory 类来解析 Bitmap 信息,解析过程可以先获取宽高,然后计算比例,然后解码像素信息public static Bitmap decodeBitmap(String path, int maxWidth, int maxHeight) { // 配置转换的信息原创 2017-10-19 19:14:03 · 868 阅读 · 0 评论 -
使用多点触控 实现图片的缩放和移动
实现的效果如图:代码如下public class XImageView extends ImageView { public XImageView(Context context) { super(context); init(); } public XImageView(Context context, @Nullable AttributeS原创 2017-10-18 20:39:22 · 1322 阅读 · 1 评论 -
屏幕的多点触控
多点触控需要在触控 action 上加上过滤,才可以得到多点触控的行为@Overridepublic boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEven原创 2017-10-18 19:51:57 · 367 阅读 · 0 评论 -
位图 BitMap
从资源中加载位图mBitmap = ((BitmapDrawable)context.getResources() .getDrawable(R.drawable.pic3)).getBitmap();画到画布上//(位图对象,位图左上角 x , y 坐标,画笔)canvas.drawBitmap(mBitmap,10,30,null);// 第二个参数表示从图像上截取的区域 (Rect原创 2017-10-18 19:33:49 · 153 阅读 · 0 评论 -
ListView 和 GridView 放到 ScrollView 中
ListView 和 GridView 放到 ScrollView 中为了解决显示和滚动的问题,可以强制让 ListView 和 GridView 在测量时使用 wrap_contentpublic class XListView extends ListView { @Override protected void onMeasure(int widthMeasureSpec, in原创 2017-10-18 19:27:45 · 190 阅读 · 0 评论 -
TextureView 的使用
SurfaceView 绘制会有独立窗口, TextureView 没有独立的窗口,可以像普通的 View 一样,更高效更方便xml:<TextureView android:id="@+id/texture" android:layout_width="match_parent" android:layout_height="match_parent" />Java:tv原创 2017-10-18 19:23:21 · 5278 阅读 · 0 评论 -
SurfaceView 的使用
基于 View 的基础上提供了一个专门用于绘制内的 Surface( 独立的 Canvas) ,需要借助 SurfaceHolder 处理画面更新可以使用 SurfaceHolder.Callback 监听 Surface 的变化@Overridepublic void surfaceCreated(SurfaceHolder holder) { //Surface 创建成功,开始显示内容原创 2017-10-18 19:15:21 · 131 阅读 · 0 评论 -
SurfaceView 的使用(官)
概念SurfaceView的使用可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图 容器。 它的特性: 可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重时造成主线程阻塞,从 而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等 等尽量在画布canvas中画出。 SurfaceView提供直接访问一个可画图的界面,可以控原创 2017-10-18 19:10:30 · 239 阅读 · 0 评论