Android中Movie导入播放GIF图片文件异常IOException.reset
使用Movie播放GIF图片时,能正常导入assets中的gif文件,如:
代码如下 | 复制代码 |
is=context.getResources().openRawResource(R.drawable.mygif); |
然而把网络图片加载到本地后,却报以下错误:
代码如下 | 复制代码 |
java.io.IOException |
我是在Androidmanifest.xml声明了权限:
代码如下 | 复制代码 |
<uses-permission android:name="android.permission.INTERNET"/> |
解决办法:
代码如下 | 复制代码 |
InputStream is = null; |
下面以数字、电话为例讲述EditText怎么设置输入类型,其他类型可以参考InputType类。
1) 只能输入数字
代码如下 | 复制代码 |
EditText et = (EditText) findViewById(R.id.etTest); |
2) 只能输入电话号码
代码如下 | 复制代码 |
EditText et = (EditText) findViewById(R.id.etTest); |
3) 邮箱地址
代码如下 | 复制代码 |
EditText et = (EditText) findViewById(R.id.etTest); |
4) 禁止输入任何文本
代码如下 | 复制代码 |
EditText et = (EditText) findViewById(R.id.etTest); |
// 禁止输入(不弹出输入法)上述也是隐藏输入法的一种方式,还有另外一种隐藏办法,
可查看android隐藏IME(输入法)输入框
不让程序默认升起IME输入框有两种方法:
1.让EditText失去焦点,使用EditText的clearFocus方法
2.强制隐藏Android输入法窗口,在IME类中我们通过实例化输入法控制对象,通过hideSoftInputFromWindow来隐藏IME输入框。
代码
代码如下 | 复制代码 |
Toast.makeText(WindowBackgroundColorActivity.this, "焦点改变", Toast.LENGTH_SHORT).show(); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); //第一种方法 //imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS); //第二种方法 imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); |
参考代码:
代码如下 | 复制代码 |
<EditText android:id="@+id/etTest" android:inputType="number" |
省市区三级联动,采用的是sqlite本地数据库,需要使用SimpleCursorAdapter类来配合下拉列表Spinner实现。关于Spinner和SimpleCursorAdapter的组合请看,
Android使用SimpleCursorAdapter填充下拉列表Spinner用法
先贴上Spinner和SimpleCursorAdapter整合的代码:
代码如下 | 复制代码 |
Cursor c = getContentResolver().query(Table.Region.CONTENT_URI, null, Table.Region.PARENT_ID+"="+parentRegionId, null, Table.Region._ID +" asc"); SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, columns, to); |
下面我们再来看至于省份城市地区三级联动效果
三级联动实现原理:用户选择省份后,根据省份Id加载对应的城市列表,由于Spinner默认选择第一项,即城市列表加载完后,又会加载对应的地区列表信息。
使用Spinner的OnItemSelectedListener监听器类实现三级联动:
代码如下 | 复制代码 |
//加载省份 spinner_province.setOnItemSelectedListener(new OnItemSelectedListener() { @Override |
使用SimpleCursorAdapter绑定Sqlite数据库到Spinner
代码如下 | 复制代码 |
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, columns, to); |
若要让TextView里的文本滚动,必须满足以下几个因素:
1,TextView里文本宽度超过TextView的宽度
2,android:ellipsize="marquee"
3,只有在TextView获取到焦点时,才会滚动.所以加上android:focusableInTouchMode="true" android:focusable="true"
最容易忽略的是第三条.
滚动重复次数设置:
android:marqueeRepeatLimit="marquee_forever"
看一个TextView属性android:ellipsize实现跑马灯效果
Android系统中TextView实现跑马灯效果,必须具备以下几个条件:
1、android:ellipsize=”marquee”
2、TextView必须单行显示,即内容必须超出TextView大小
3、TextView要获得焦点才能滚动
XML代码:
android:ellipsize="marquee", android:singleLine="true"
Java代码:
mTVText.setText("哼唱接撒砥砺风节雷锋精神http://www.111cn.net/,很长很长很长很长很长很长的数据");
mTVText.setSingleLine(true);
mTVText.setEllipsize(TruncateAt.MARQUEE);
PS: TextView.setHorizontallyScrolling(true); //让文字可以水平滑动
TextView还可以设置跑马灯效果的滚动次数,如下:
XML代码设置:
android:marqueerepeatlimit="1"。1代表1次,-1代表无限循环。
Java代码设置:
mTVText.setMarqueeRepeatLimit(-1);
这里介绍了实现原理,为了使用方便,简单封装了一个类Updater。用法很简单。好吧,为了支持多语言,其实还是有些繁琐。
用法:
strings.xml 中用到的字符定义
其他语言的自己添加,下面的实例程序中,中英文都有
代码如下 | 复制代码 |
<string name="update">check for update</string> |
在AndroidManifest.xml添加更新需要用到的权限
代码如下 | 复制代码 |
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <uses-permission android:name="android.permission.INSTALL_PACKAGES"></uses-permission> |
检查更新,如发现有新版本会弹出提示
代码如下 | 复制代码 |
private boolean checkUpdate() { Updater updater = new Updater("http://127.0.0.1/", this); if (updater.needUpdate())//found update updater.showNewVersionUpdate(); else { } return true; } |
自动更新
之前帮别人定制的一个android应用需要加个自动更新的功能。在 Market 里的应用是无需操心此事的,但像我这种定制的程序就需要自己实现。
原理相当简单,检查更新的时候,通过指定的URL获取服务器端版本信息。比较版本,如果更新,访问服务器端返回的apk的URL地址,下载,安装。各种 Makert 也是通过类似的机制实现的。原理搞清楚了,代码就相当简单了。
获取apk的VesionName,即AndroidManifest.xml中定义的android:versionName
代码如下 | 复制代码 |
public String getVesionName(Context context) { |
更新以及安装程序需要的权限,在AndroidManifest.xml中添加
代码如下 | 复制代码 |
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <uses-permission android:name="android.permission.INSTALL_PACKAGES"></uses-permission> |
获取apk的versionCode,即AndroidManifest.xml中定义的android:versionCode
代码如下 | 复制代码 |
public int getVersionCode(Context context) { |
服务器端version.JSON,包含apk路径以及版本信息
代码如下 | 复制代码 |
{ |
获取远程服务器的版本信息
代码如下 | 复制代码 |
private void getRemoteJSON(string host) throws ClientProtocolException, IOException, JSONException { |
发现更新的提醒窗口,通过AlertDialog实现
代码如下 | 复制代码 |
private void shoVersionUpdate(String newVersion, final String updateURL) { |
下载新版的apk文件,存放地址可以放到SD卡中。通过Environment.getExternalStorageDirectory()获取SD卡中的路径
代码如下 | 复制代码 |
private void downFile(final String url) { |
安装更新
代码如下 | 复制代码 |
private void installUpdate() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(UPDATE_DIR, updateFileName)), "application/vnd.android.package-archive"); mContext.startActivity(intent); } |
至此更新需要函数就完成了,根据自己的业务逻辑组合一下,更新功能就搞定了。也可以稍微封装下,写成一个通用类,下次就可以直接用了。
相关文章
使用PHP+JavaScript将HTML页面转换为图片的实例分享
这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13- 下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
- 夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
- 为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
- Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
- 如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
- 这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
- 深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
- 下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
- java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
- 图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
- TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02