Android开发tip

Android-Tips(实用Android开发技巧) 整理本人实际开发中遇到的一些问题以及解决办法和一些开发技巧,以后会不定时更新。tip:利用“目录”可快速导航 1.追溯sdk中某一个类随sdk版本升高导致的历史变迁。(find API changes)问题来源:SwipeRefreshLayout源码:判断子View是否能向上滚动(或者是否滚动到顶部): /** * @return Whether it is possible fo 阅读详情

1.关闭键盘

//关闭键盘
InputMethodManager imm = (InputMethodManager) getSystemService(ActivityBusLine.INPUT_METHOD_SERVICE);       imm.hideSoftInputFromWindow(XXXview.getWindowToken(), 0);

2.TextView..EditText显示一个tip

在使用EditText时可以使用setError来显示一个tip来提示用户
setError中传入的参数是CharSequence类型,可以使用Android提供的Html

setError(Html.fromHtml("<font color=#E10979>生日格式不正确<br/>正确格式如1990-01-01</font>"));  

3.创建菜单OptionsMenu与上下文菜
每个Activity有且只有一个Options Menu,它为整个Activity服务。而一个Activity往往有多个View,并不是每个View都有上下文菜单,这就需要我们显示地通过registerForContextMenu(View view)来指定

菜单OptionsMenu:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        menu.add(0, 0, 0, "菜单1").setIcon(R.drawable.picture);
        menu.add(0, 1, 1, "菜单2").setIcon(R.drawable.picture);
        menu.add(0, 2, 2, "菜单3").setIcon(R.drawable.picture);
        menu.add(0, 3, 3, "菜单4").setIcon(R.drawable.picture);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch(item.getItemId())
        {
            case 0:
            {
                break;
            }
            case 1:
            {
                break;
            }
            case 2:
            {
                break;
            }
            case 3:
            {           
                break;
            }
        }
        return true;
    }

上下文菜单

1.在activity的onCreate(...)方法中为一个view注册上下文菜单

2.在onCreateContextMenuInfo(...)中生成上下文菜单。

3.在onContextItemSelected(...)中响应上下文菜单项。

    @Override
    public boolean onContextItemSelected(MenuItem item) {
// getMenuInflater().inflate(R.menu.main, menu);
    switch(item.getItemId()){
            case 0:
            {
                //复制到剪切板
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
                String result =some data ;
                boardManager cbm=(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
                cbm.setText(result);
                Toast.makeText(ActivityBusLine.this, "内容已复制到剪切板", Toast.LENGTH_SHORT).show();
                break;
            }
            case 1:
            {
                //发送短信     
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
                String result =some data ;
                Intent it = new Intent(Intent.ACTION_VIEW);       
                it.putExtra("sms_body", result);        
                it.setType("vnd.android-dir/mms-sms");       
                startActivity(it);
                break;
            }
        }
        return super.onContextItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        menu.add(0, 0, 0, "复制到剪切板");
        menu.add(0, 1, 1, "短信发送");
        super.onCreateContextMenu(menu, v, menuInfo);
    }

4.私有io操作:Context对象操作io

openFileInput(String filename) 
打开应用程序私有目录下的的指定私有文件以读入数据,返回一个FileInputStream 对象
openFileOutput  
打开应用程序私有目录下的的指定私有文件以写入数据,返回一个FileOutputStream 对象,

如果文件不存在就创建这个文件。

fileList() 
搜索应用程序私有文件夹下的私有文件,返回所有文件名的String数组
deleteFile(String fileName) 删除指定文件名的文件,成功返回true,失败返回false

在使用openFileOutput方法打开文件以写入数据时,需要指定打开模式。默认为零,即MODE_PRIVATE。不同的模式对应的的含义如下:
openFileOutput方法打开文件时的模式

MODE_PRIVATE 
默认模式,文件只可以被调用该方法的应用程序访问
MODE_APPEND  
如果文件已存在就向该文件的末尾继续写入数据,而不是覆盖原来的数据。
MODE_WORLD_READABLE 
赋予所有的应用程序对该文件读的权限。
MODE_WORLD_WRITEABLE  
赋予所有的应用程序对该文件写的权限。

5.常用键值对
HashMap,ContentValues,org.apache.http.message.BasicNameValuePair等
Properties extends Hashtable

Properties properties = new Properties();
在类同级目录里
//InputStream localInputStream =XX.class
//          .getResourceAsStream("your.properties");
在app私有存储位置
//FileInputStream stream = context.openFileInput("your.properties");

try {
        properties.load(localInputStream);
            return;
        } catch (IOException localIOException) {
            localIOException.printStackTrace();
        }

properties.getProperty("paramString")//获取

properties.put("paramString", someString or object);//存储

FileOutputStream stream = context.openFileOutput(
                    "your.properties", Context.MODE_WORLD_WRITEABLE);
            properties.store(stream, "");
Android 开发 Tip 11 -- TabLayout 设置文字大小一致 转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/71425135 使用TabLayout的时候,有些tab的文字比较多时,会出现与其他tab的文字大小不一致的情况! TabLayout 继承自 HorizontalScrollView内部有几个关键的类: SlidingTabStrip – TabLayout的唯一子View Tab 阅读详情

相关推荐

Android消息数量提示TipView

一个View就像实现,支持设置背景色、数量文字、文字颜色、文字大小、最大文字、只显示圆点,自动适配文字大小,不会超出圆圈的范围

Android 开发 Tip 6 -- Spinner 文字 & icon 居中显示

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/70903974设置Spinner 文字居中默认情况下,Spinner控件的效果是这样的: 想让文字居中显示怎么办??? 在布局文件中设置android:gravity="center"也不起作用!!源码走读先来看 Spinner 的构造函数public Spinner(Context

crazy_jack 1万+

Drugbank XML文件解析

DrugBank Release Version 5.1.13 | DrugBank Online点击download下载XML文件,也可以使用COMMAND命令下载。(下载文件需要先注册一个账号文件,就可以下载了)下载好压缩文件,并解压会得到如下两个文件:full database.xml就是我们所需要的XML文件,完整的XML很大,大约为1.6G因为原始的文件非常大,直接查看XML文件是有困难的,所以我们使用一下命令来查看该文件的前一百行 得到如下输出 对于前三行 第一行:表示XML 版本为 1.0

qtjbzs的博客 586

模拟Toast 自定义提示框

前言为满足产品需求,发现现在的ToastUtils不是太重就是不太满足需求,这边写个简单易用的工具,几十行代码解决的问题,还要啥轮子。自动消失相对锚点位置可配置,正中间,左中,右中,下中,等高宽自适应。

Android小码家 1049

SC8F073单片机串口通信保姆级教程:从寄存器配置到完整收发Demo(附避坑指南)

本文详细解析了SC8F073单片机串口通信的寄存器配置与调试技巧,涵盖TXSTA、RCSTA和SPBRG寄存器的逐位设置,提供精确的波特率计算方法和工业级抗干扰策略。通过完整的收发Demo和避坑指南,帮助开发者快速掌握底层串口通信技术,适用于工业控制等严苛环境。

weixin_33724046的博客 487

CarPlay wired(USB)连接方案

CarPlay的wired(USB)的连接方案要求车载设备至少要支持USB2.0 Hi-Speed,支持USB Host Mode,该模式要求车载设备能够工作在USB device模式下,因为Apple设备在CarPlay中是作为USB Host的。而通常情况下,车载设备USB是工作在USB Host模式的,而外接的USB设备是工作在USB Device模式的,因而在这种情况下的CarPlay wired(USB)连接方案中就需要进行USB的模式切换。模式切换完成后便是Apple设备(USB HOST)的枚

Ke8323的博客 1万+

android 模拟手指点击,『Android Tip』-- 模拟手势操作

平时 Android 开发中总会遇到奇葩的功能或者需求,这里做个记录和积累,以便后面开发过程中遇到类似的问题,可以快速的解决。Android tips前言这个版本终于快结束了,历时一个月的时间,这段时间里重复着开发、找 BUG 和解 BUG 的工作,人已经快麻木了,不过最后看到 自己的开发成果还是蛮欣慰的,这可能就是程序员最简单的乐趣吧。这里看一下整体的效果图,一些细节不方便展示,大概有个预览吧:...

weixin_39980809的博客 1096

TIFF文件渲染避坑指南:Three.js与Cesium的5个关键差异点

本文深入对比了Three.js与Cesium在渲染TIFF文件时的5个核心差异点,包括坐标系处理、内存管理、着色器系统、性能优化策略和错误处理机制。重点解析了Cesium的全球WGS84坐标系与Three.js局部坐标系对地理空间数据渲染的根本影响,并提供了针对性的性能优化与调试方案,帮助开发者根据项目需求选择合适的3D引擎并有效避坑。

weixin_29243279的博客 334

Android开发layout中的小tip

第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇         现在的Android手机基本已经标配重力感应传感器了,所以我们也希望自己的应用程序能根据屏幕的旋转而旋转。但是这里有一个要十分注意的问题哦!下面以一个简单的例子说明。         假设我们要开发一个简单的阅读器的应用程序,名字就叫“MyReader”吧。打开程序,她包含四个按钮:Rece

Colorful Days 1686

光学遥感显著目标检测初探笔记总结

一张图片里最吸引注意力的部分就是显著性物体,其实是模拟人的一个注意力机制。目标是希望通过计算机的方法让我们自动定位和模拟人的这种感知能力,从而去定位场景中的一个让人感兴趣的目标。

醋酸洋红的博客 2080

电子元器件-三极管终终篇:三极管工作原理详解、参数/手册详解、开关应用详解、Ib电流研究、开关应用实例

三极管工作原理与应用摘要 三极管是一种电流控制器件,通过小基极电流控制大集电极电流。其内部结构由高掺杂发射区、薄低掺杂基区和中等掺杂集电区组成,形成NPN或PNP结。三极管有三种工作状态: 截止区:发射结和集电结均反偏,无放大作用 放大区:发射结正偏,集电结反偏,Ic=βIb 饱和区:两结均正偏,Ic不再随Ib增大 作为开关使用时,需确保三极管深度饱和(Vce≈0.2V)。设计要点包括: 基极电阻计算确保Ib足够大 集电极电阻控制Ic 基极加下拉电阻提高抗干扰 NPN管作地开关,PNP管作电源开关 典型应用

qq_60226558的博客 316

android自动消失弹窗提示框,Android开发之《实现类似Toast可以自动消失的提示栏Tip》...

import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.content.Context;import android.view.View;import android.widget.TextView;public class TipManager {private st...

weixin_29563497的博客 794

Cesium 实战 28 - 三维视频融合(视频投影)

Cesium 实战 27 - 三维视频融合(视频投影)。

非科班Java出身GISer的博客 3373

[collection tip]iOS开发 Android开发 python

摘自coolshell想在Visual Studio 2010下编写Python吗?那么,向你介绍这个微软官方的插件Python Tools for Visual Studio。你还可以在VS中调试你的Python代码。挺不错的。 在VS里开发Python,那么就可以使用Eclipse编写Android程序,这里有一篇教程教你 -Get Started Developing For Andr...

weixin_34218890的博客 91

示波器核心参数选型指南:带宽、采样率与嵌入式调试实战

示波器是电子工程师进行信号观测与故障诊断的基础仪器,其性能由带宽、采样率、通道数、存储深度、触发系统和探头特性共同决定。带宽定义高频响应边界,需遵循5倍法则以保障数字信号上升沿测量精度;采样率则依据奈奎斯特定理并结合工程冗余(通常≥2.5×带宽)实现可靠时域重建。二者协同影响信号完整性评估能力,尤其在UART、I²C、SPI等嵌入式总线调试中至关重要。高存储深度支持长时捕获与毛刺定位,智能触发与硬件协议解码进一步将波形分析升维至语义级。本文围绕真实嵌入式场景,解析参数间的耦合关系与典型误用陷阱。

weixin_42588877的博客 92

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android 开发 Tip 12 -- 各种Drawable

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/51820937

crazy_jack 1122

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android 开发 Tip 9 -- TouchDelegate

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/71115773View的 onTouchEvent() 函数中有这样一段!public boolean onTouchEvent(MotionEvent event) { // ... if (mTouchDelegate != null) {

crazy_jack 1251

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android 开发 Tip 13 -- generateViewId

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/51820937View.javapublic static int generateViewId() { for (;;) { final int result = sNextGeneratedId.get(); // aap

crazy_jack 2667

告别重复开发:3款Android Wear开源项目让你的智能手表应用开发效率提升10倍

你是否还在为智能手表应用开发从零开始搭建框架?是否因 Wear OS 特有的交互逻辑而头疼?本文精选3个实战级Android Wear开源项目,从表盘设计到语音交互全覆盖,附带完整代码解析与复用指南,帮你跳过90%的重复工作。 ## 项目概述 本项目是一个开源Android应用集合,旨在帮助开发者从开源应用中学习有趣的东西并获得有用的技能。其中,[Android Wear](https://l

gitblog_00385的博客 1104

Android 开发 Tip 14 -- Singleton

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/51820937package android.util.Singleton.javapublic abstract class Singleton<T> { private T mInstance; protected abstract T create(); publ

crazy_jack 1230

Android 开发 Tip 3 -- that was originally added here

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/51471280窗体句柄泄漏异常信息如下:xxx has leaked window DecorView@ffd62e7[title] that was originally added here 这类错误一般都是在使用AlertDialog , PopupWindow, ProgressD

crazy_jack 7464

Android studio APP开发 小tip 如何重用布局文件layout?

重用布局文件 在一个布局文件里面引用其他已经写好的布局文件,用 指令。 代码如下: <include layout="@layout/activity_splash"/> 下面是预先创建号的activity_include.xml文件, 这个布局文件将在另一个布局文件中被引用。 代码如下: <?xml version="1.0" encoding="utf-8"?> &l...

Ace_bb的博客 415

Android 开发 Tip 10 -- app:showAsAction & android:showAsAction

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/51820937IDE给出的提示:所以当Activity继承AppCompatActivity 时,应该用app:showAsActionActivity继承Activity时,应该使用android:showAsAction

crazy_jack 1089

Android 开发 Tip 8 -- clipToPadding & clipChildren

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/51471280最常用这两个属性的场景是这样的:ListView或者RecyclerView可以透过透明(半透明)的actionbar或者toolbar被用户看到!<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and

crazy_jack 1419

Android开发之《实现类似Toast可以自动消失的提示栏Tip》

import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.TextView; public class TipM...

weixin_34081595的博客 157

Android 开发 Tip 1 -- android:state_checked & android:state_activated

使用RadioButton时,如果需要自定义样式,则要注意使用 android:state_checked 这个属性。举个例子:一个选择性别的RadioGroup:<RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:la

crazy_jack 2540
上一篇: Java配置环境变量
下一篇: 《React Native入门到放弃》——ios篇
kernel_
博客等级 码龄12年 8粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值