标签 android 下的文章

android9.0 切换语言

添加权限 <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 12     <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 主要 API 获取系 ...

触摸事件 ACTION_UP/ACTION_MOVE 的分发

MotionEvent 的 ACTIONDOWN 是按照传递流程执行的, 但是 ACTIONUP/ACTION_MOVE 的传递过程会 受到事件是否被消费的影响 (被消费指的是方法返回 true ) 基础知识 触摸事件的分发主要涉及以下三个方法 boolean dispatchTouchEvent(MotionEvent event) boolean onTouchEvent(MotionEvent event) boolean onInterceptTouchEvent(MotionEvent event) // ViewGroup 独有 MotionEvent 有三种动作 (actoin) ACTION_DOWN 按下 ACTION_UP 抬起 ACTION_MOVE 移动 总的来说触摸事件的 传递流程 是: dispatchTouchEvent() -> onIntercept ...

View 构造方法中第三个参数 defStyleAttr

今天使用一个自定义控件继承自 AppCompatButton, 字体不是居中的, 最后排查发现是构造方法的问题; 对比 AppCompatButton 的源码发现是 defStyleAttr 参数的问题 public class TButton extends android.support.v7.widget.AppCompatButton { public TButton(Context context) { this(context, null); } public TButton(Context context, AttributeSet attrs) { this(context, attrs, 0); } public TButton(Context context, AttributeSet attrs, in ...

Data Binding Library

数据绑定, 更简单的方式给View赋值和刷新; 软件环境: android版本: 兼容Android 2.1以上(API level 7+); Gradle版本: 1.5.0-alpha1 以上; Android Studio版本: 1.3以上; 配置 app model里的 build.gradle 添加; android { .... dataBinding { enabled = true } } 123456 android {    ....    dataBinding {        enabled = true  ...

DialogFragment

有Dialoge样式的Fragment, 同 Fragment 有同样的生命周期 继承 DialogFragment 的子类 Activity 中 DialogFragment 的子类对象调用 show (FragmentManager manager, String tag)显示 DialogFragment 的方法 getDialog() 可获取默认的 Dialoge getArguments() 返回一个 Bundle 对象 setStyle (int style,int theme)设置样式, 例: .setStyle(DialogFragment.STYLENOFRAME, 0);//去掉标题 show (FragmentManager manager, String tag) 显示该 DialogeFragment 注意 在Activity中用 FragmentTransaction 调用add和show方法显示 ...

PopupWindow 总结

构造方法 public PopupWindow (View contentView, int width, int height) // contentView 内容 // width 宽 // height 高 PopupWindow(View contentView, int width, int height, boolean focusable) // focusable 为 true 时, 返回键隐藏,可输入... 1234567 public PopupWindow (View contentView, int width, int height)// contentView 内容// width 宽// height 高 PopupWindow(View contentView, int width, int height, boolean focus ...

LinearGradient 线性渐变

LinearGradient 用来对某一个区域进行线性渐变, 父类为 Shader 构造参数 LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile) // 参数分别为 x0,y0为起始点坐标; x1,y1为结束点坐标; colors为渐变的颜色数组; positions 为颜色数组对应的起始位置, 为null时就是指colors均匀分布; tile 指的就是颜色渐变的平铺方式 LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile) // 参 ...

android 中操作SQLite数据库

SQLiteOpenHelper类 SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。 SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version) 构造方法,一般是传递一个要创建的数据库名称那么参数 onCreate(SQLiteDatabase db) 创建数据库时调用 onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion) 版本更新时调用 getReadableDatabase() 创建或打开一个只读数据库 getWritableDatabase( ...

数据库事务

批量操作需要使用事务以节省时间 同一类型的数据库操作, 每一次操作都去打开关闭数据库会比较耗时, 此时使用事务的方式去操作数据库, 会将操作暂时缓存起来, 在最后执行时只需要打开一次数据库, 会大大的减少操作时间 新建一个列表存操作 ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(); 1 ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperat ...

ViewStub

ViewStub 与 View.GONE 的比较 ViewStub延迟加载指定的布局, 比View.GONE节省资源, 在显示之前是不占用资源的 使用View.GONE属性布局在界面加载时仍会创建对象, 耗费内存 ViewStub 的显示 ViewStub在界面加载时不创建, 设置可见或.inflate();才会创建并显示里面的内容 ViewStub对象只可以使用inflate()一次, 即开始占用内存 在ViewStub在界面上创建之前调用它的布局中的控件(findViewById)会出错 android:id在ViewStub不可见前使用(可见后失效), android:inflatedId 在可见之后使用 使用例子 布局文件中 ...