android 创建型设计模式之建造者模式(Builder模式) 建造者模式是通过多个简单的对象一步步构建出一个复杂对象。将类的构建与其表示分离。同样的创建过程,可以创建不同的表示的对象。比如Android的AlertDialog的构建,Retrofit的构建等,就是构建者模式。它的使用场景:类的内部结构复杂。 对象内部属性相互依赖。public class Dog { private String name; private int ...
android 创建型设计模式之原型模式 android原型模式是通过实现Cloneable接口,并重写clone方法。实现快速根据原型创建出另一个对象。我们知道,在java中如果将对象作为参数传递给一个方法的时候,传递的是一种浅拷贝(String类除外)。就是所谓的引用传递。这个时候如果在方法内改变了对象的属性或状态,其修改也会响应在外部的。如果我们想要避免这种情况的话,就可以通过clone方式来实现深拷贝来创建一个临时的对象进去。...
android 创建型设计模式之单例模式 单例模式应该是Android开发中常见的一种设计模式。它的特点就是进程中只有一个实例。当我们的进程只需要类的一个对象的时候,我们就可以使用这种模式。它的好处就是避免频繁的创建和销毁这个类。比如数据库操作。单例模式的特点:全局只有一个实例。 由类本身创建其实例,即构造方法为private。 对外提供获取唯一实例的方法。实现单例的几种方式:1、饿汉式(恶汉式):在类加载的时候就创建类...
android设计模式 1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换原则是面...
Android动态换肤-支持DataBinding版本 一般动态换肤的框架,网上都有很多。其核心的方法都是实现LayoutInflater.Factory2类,在onCreateView方法中实现创建view并使用皮肤包的资源。大体代码如下:import android.content.Contextimport android.content.res.Resourcesimport android.os.Buildimport andro...
使用ndk直接编译x265的动态库 在x265的soure目录下建立Application.mk文件,内容如下:APP_BUILD_SCRIPT := Android.mkAPP_STL := gnustl_staticAPP_ABI :=armeabiAPP_PLATFORM := android-16再建立Android.mk文件,内容如下:LOCAL_PATH := $(call my-dir)#----------...
libx265的Android编译 x265目前在Android手机上如果用来编码的话,编译速度很慢,而且极度消耗cpu,目前在移动端的实用性不大。首先需要使用ndk做一个交叉编译工具链出来:进入ndk的/build/tools/目录,然后使用命令:./make-standalone-toolchain.sh --install-dir=/home/zxb/android-16-toolchain --ndk-dir=/home/z...
libx264编译 首先是x264的编译,相对简单.下面是编译脚本:cd x264export NDK=/home/zxb/ext/lost+found/android-ndk-r11cexport PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuiltexport PLATFORM=$NDK/platforms/android-8/arch-ar...
在Ubuntu编译Android版本的FFMPEG 编译成多个so文件的脚本:cd ffmpeg-3.4.1make clean export NDK=/home/zxb/ext/lost+found/android-ndk-r11cexport PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuiltexport PLATFORM=$NDK/platforms/andro...
关于Popwindow设置foucusable(true)后,软件盘弹不出来的问题 像那样,点击评论,会弹出个popupwindow(),点击评论后,显示一个edittext,这个时候可能软键盘弹不出来,这个时候,我们可以将显示键盘的方法设成这样: InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.togg
解决Android EditText多行输入,内容或边框显示的问题 在Android中,如下面局:[code=java] android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp"
最简便的在Activity中获取View的宽度或高度方法 mView.post(new Runnable() { @Override public void run() { mView.getMeasuredHeight(); } });这样的话,getMeasureHeight就永远在View的onMeasure()方法后调用了。所
android popupwindow相关备忘录 1.让popupWidow在指定控件或位置上方显示:int[] location = new int[2];view.getLocationOnScreen(mLocation);mPopupWindow.showAtLocation(mGradeView, Gravity.NO_GRAVITY, mLocation[0], mLocation[1]-mPopupWindow.getHei
使用Gson解析键名为中文的json字符串 通过@SerializedName 给变量加上别名的方式实现public class JsonBean { public int ret; public Response response; public static class Response { public TagCategory tag_category; pu
Java中的String处理 1.时间转化 将long转化为 yyyy-MM-dd hh-mm-ss的方式public static void format(long time){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");//将HH 换成hh则为12小时制 Date date = new Date(time);//如
Android TextView滚动条设置 第一种 XML设置:<TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="8" android:scrollbars="vertical" />
Gson利用泛型将Http请求返回的Json字符串快速解析模板 第一种:返回类型为单个JsonObject形式:import com.google.gson.Gson;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;public class JsonResponse{ private int code;//状态码 public Stri