自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 Google开源WebRTC框架调研

公司开发音视频项目,需要用到webRTC,于是做一番调研了解webRTC工作流程,调研结果如下:概念Signaling信令服务器(socket服务器)用于交换元数据来协调通信的服务器。一般通过socket来实现。元数据包括:会话控制消息用于打开或关闭通信;错误消息;媒体元数据;密钥数据;网络数据等等。NAT网络地址转换(NAT,Network Address Translation...

2019-08-20 16:12:33 3077

翻译 通知NotificationManager的简单使用

资料来源 《第一行代码》兼容性问题使用v4库中的NotificaationCompat类,可以保证程序在所有Android系统版本上使用。在activity中,使用一个简单的通知public void createNotification(View view){PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(t

2017-09-29 16:06:19 979

翻译 自定义内容提供者

资料来源 《第一行代码》1、内容URI的格式分两种:content://com.wj.meme.provider/table1 查询com.wj.meme这个应用下的table1表所有数据。content://com.wj.meme.provider/table1/1 查询table1表里id=1的数据。2、 使用通配符表示:“*” 表示匹配任意长度的任意字符 “#” 表示匹配任意长度

2017-09-29 16:03:35 2896

翻译 从相册中选择照片

资料来源 《第一行代码》注意两点:6.0以上需要运行时权限判断。4.4及以上系统,选取相册中的图片不再返回图片真实的uri,而是一个封装后的uri。public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {

2017-09-29 15:53:14 741

翻译 android中的定时任务

资料来源 《第一行代码》两种方法一个是java的Timer类。一个是android的Alarm机制。 Timer类有一个缺陷,不适用长期在后台运行的定时任务。因为,android手机在长时间不操作的情况下,CPU会进入休眠,这样导致Timer的定时任务无法正常运行。 Alarm则具有唤醒CPU的功能,可以保证大多数情况下,需要执行定时任务时,cpu都能正常工作。 注意一点:唤醒CPU和唤醒

2017-09-29 15:51:09 737

翻译 多窗口模式编程介绍

资料来源《第一行代码》多窗口下的生命周期多窗口模式并不会改变活动原有的生命周期。只是会将用户最近交互过的那个活动设置为运行状态(onResume),而将多窗口模式下另一个可见的活动设置为暂停状态(onPause)。如果用户又去和暂停的活动进行交互,那么该活动就变成运行状态,之前处于运行状态的活动就变成暂停状态。多窗口会改变应用大小,先启动activity,再进入多窗口模式,activity会重

2017-09-29 15:48:24 637

翻译 Lambda表达式小例子

资料来源《第一行代码》定义Lambda表达式本质上是一种匿名方法,没有方法名,没有访问修饰符,没有返回值类型。使用准备先要在module的build.gradle中配置android { compileSdkVersion 26 buildToolsVersion "26.0.0" defaultConfig { applicationId "com

2017-09-29 15:45:41 387

翻译 让控件融入系统状态栏(沉浸式)

资料来源《第一行代码》方式一:android:fitsSystemWindows="true"该属性表示该控件会出现在系统状态栏里。注意,要想某个控件融入状态栏,必须该控件的所有父布局都设置该属性。设置完该属性后,还需要将程序主题中的状态栏颜色改为透明色,使用属性android:statusBarColor由于该属性5.0才有,所有必须适配。创建values-21文件夹,再创建style.

2017-09-29 15:42:52 300

翻译 启动系统的摄像头

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private static final String TAG = MainActivity.class.getName(); private Button btnImage; private Button

2017-09-29 15:41:56 285

翻译 桌面悬浮小火箭的实现

思路使用serivce在后台启动小火箭小火箭使用windowmanager实现。用ontoch监听实现小火箭的拖拽。代码实现public class RocketService extends Service { private WindowManager mWM; private View view; private int startX ;

2017-09-26 21:12:11 868

翻译 使用okhttp和前台服务实现断点续传功能

参考资料《第一行代码》代码示例清单文件配置<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testandroid"> <uses-permission android:n

2017-09-26 21:08:28 555

翻译 editText代码设置输入限制

1.设置只能输入数字,包括小数点et.setKeyListener(new DigitsKeyListener(false, true));2.设置只能输入规定的数字,字母et.setKeyListener(new NumberKeyListener() { @Override public int getInputType() {

2017-09-26 20:59:50 572

转载 工具类-dp转化

public class DensityUtils { // dp2px public static int dp2px(Context context, float dp) { float density = context.getResources().getDisplayMetrics().density ; // +0.5f为了四

2017-09-26 20:56:27 406

转载 工具类-万能Adapter

public abstract class MyAdapter<T> extends BaseAdapter { private ArrayList<T> mData; private int mLayoutRes; //布局id public MyAdapter() { } public MyAdapter(ArrayList<T> mDat

2017-09-26 20:55:59 313

翻译 工具类-软键盘

public class SoftKeyboardUtils { public static void closeBoard(Context context ) { InputMethodManager imm = (InputMethodManager) context .getSystemService( Context. INPUT_MET

2017-09-26 20:54:47 249

翻译 工具类-将图片切成圆形图片

/** * 转换图片成圆形 * * @param bitmap * 传入Bitmap对象 * @return */ public static Bitmap toRoundBitmap(Bitmap bitmap) { if(bitmap==null){ return

2017-09-26 20:53:40 745

原创 工具类-DrawableUtils用代码创建shape

public class DrawableUtils { public static GradientDrawable createShape(int color){ GradientDrawable drawable=new GradientDrawable(); drawable.setCornerRadius(UiUtils.dip2px(5));//设

2017-09-26 20:53:01 2198

原创 工具类-SystemInfoUtils

public class SystemInfoUtils { /** * 判断一个服务是否处于运行状态 * * @param context * 上下文 * @return */ public static boolean isServiceRunning(Context context, Strin

2017-09-26 20:52:09 475

原创 简易Builder模式

参考资料《Android源码设计模式解析与实战》、LoadSir定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景相同的方法,不同的执行顺序,产生不同的事件结果时。多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时。产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造者模式非常合适。当初始化一个对象特别复杂

2017-09-26 20:47:05 475

原创 Dialog使用细节

普通的Dialog,必须采用Activity的Context,如果采用Application的Context,就会报错没有应用token。Activity的Context拥有应用token。解决方法1:Dialog dialog = new Dialog(MainActivity. this);解决办法2:Dialog dialog = new Dialog(getApplicationCo

2017-09-25 17:28:17 443

原创 关于循环删除集合中的元素

代码实例 List<String> ss = new ArrayList<String>(); for (int i = 0; i < 100; i++) { ss.add( "hahah" + i); } /** * 会抛异常 java.util.ConcurrentModif

2017-09-25 17:24:51 267

翻译 创建桌面快捷方式

.添加权限:<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>代码实现:Intent intent = new Intent();intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");//这个inten

2017-09-25 17:22:53 259

原创 关于子线程刷新ui

当检测当前线程是否为主线程的类还没有初始化完成时,在子线程是可以刷新ui的。如果,初始化完成后,就不能刷新了,实际开发中,不会在子线程刷新ui。

2017-09-25 17:21:01 361

原创 windowManager使用

在桌面添加一个控件,并动态拖动它代码实例WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE ); Button mFloatingButton = new Button(this ); mFloatingButton .setText("windowManager

2017-09-25 17:16:56 380

原创 Android不同启动模式下的生命周期

singleTop:栈顶复用模式。如果activity在栈顶,就不用重新创建。其他activity再次启动它,回调以下方法:05-17 18:00:26.793: I/TAG(23870): onCreate(savedInstanceState)....05-17 18:00:26.804: I/TAG(23870): onStart.....05-17 18:00:26.804: I/T

2017-09-25 17:13:50 444

原创 拿到view真实宽高的4种方式

拿到view真实宽高的4种方式实例代码public class MainActivity extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

2017-09-25 17:03:37 298

原创 popwindow弹出后点击外部控件响应点击事件

popwindow弹出后点击外部控件响应点击事件popwindow弹出后,如果想要点击外部消失popwindow,则实现以下方法:pop.setOutsideTouchable(true);pop.setBackgroundDrawable(new ColorDrawable());pop.setOnDismissListener(new OnDismissListener() {

2017-09-25 17:00:42 3273

原创 Fragment生命周期

Fragment生命周期在Viewpager中使用fragment在FrameLayout中使用Fragment在Viewpager中使用fragmentviewpager中存放3个fragment,viewpager默认加载3个view生命周期初次加载viewpager03-09 11:53:57.212: I/wj(1347): OneFragment:onAttach03-09

2017-09-25 16:54:25 281

原创 读书笔记-设计模式-单例模式

读书笔记-设计模式-单例模式本文资料来源《Android源码设计模式解析与实战》:定义优缺点关键点饿汉单例模式懒汉模式DCL双重检查锁定静态内部类单例模式枚举单例使用容器实现单例单例模式的定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。使用场景:访问IO和数据库等资源。优缺点优点由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁的

2017-09-25 16:34:42 275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除