- 浏览: 3944399 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
hinuliba:
...
字体背景颜色的高度修改 -
KANGOD:
最后的 -createDialog() 私有方法是怎么回事,没 ...
简单的实现listView中item多个控件以及点击事件 -
sswangqiao:
呵呵,呵呵
onActivityResult传值的使用 -
yumeiqiao:
感觉你所的不清楚 lstView.setOnTouchLi ...
listview中viewflipper的问题 -
lizhou828:
果然是大神啊!!!
Animation动画效果的实现
1.当你要旋转一个animition时 你会发现如果你只用rotate 它是不平滑的 旋转360度之后它会滞留一会 然后再转 给人感觉是暂停那么一会 怎么消除呢?这是因为如果只用rotate
它默认使用了android:anim/accelerate_interpolator,所以你要写一个自己的interpolator ,这个interpolator就是linearInterpolator。
所以你必须先建一个res/anim/linear_interpolator.xml:
<?xml version="1.0" encoding="utf-8"?><linearInterpolator xmlns:android="http://schemas.android.com/apk/res/android" />
然后在你的animition中加入
android:iterpolator="@anim/linear_interpolator"这句话就可以了
如:
<?xml version="1.0" encoding="UTF-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:repeatCount="infinite" android:duration="1200" />
默认的是accelerate_interpolator,所以你必须在上面的xml中加入
android:iterpolator="@anim/linear_interpolator"
然后就是平滑的旋转了。
2.当采用过滤的方法:
final TextWatcher textChecker = new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
filterData(search.getText().toString());
}
};
private void filterData(String textinput){
mCursor = mHelperData.searchData(textinput);
startManagingCursor(mCursor);
String[] from = new String[]{ MyData.KEY_ROWID,
MyData.KEY_TITLE, MyData.KEY_DESCRIPTION };
int[] to = new int[]{ R.id.id, R.id.title, R.id.description, R.id.icon };
setListAdapter(new MyAdapter(this, R.layout.list_row, mCursor, from, to ));}
3. 直接发起一个相关的联系人:
Intent intent = new Intent();intent.setAction(Contacts.Intents.SHOW_OR_CREATE_CONTACT);
Intent dialIntent = new Intent( "android.intent.action.DIAL",Uri.parse("tel:666444666")); startActivity(dialIntent);
4.字符串空格以及字符串参数的问题
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string><string name="Toast_Memory_GameWon_part2">\ flips !</string>
想在字符串前面和后面有空格一定要注意转义
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+"total_flips"+getString(R.string.Toast_Memory_GameWon_part2);
那么也可以如下实现:
<string name="Toast_Memory_GameWon">you found ALL PAIRS ! on %d flips !</string>
String message_all_pairs_found = String.format(getString(R.string.Toast_Memory_GameWon), total_flips);
5.onKeyDown不起作用 主要因为 可能没有设置setFocusableInTouchMode(true)
最好也加上 setFocusable(true)
6.只知道包名的不知道 R.id的解决办法:
getResources().getIdentifier()
当然你最好吧这个文件放在res/raw/myDataFile 然后读取
7.播放序曲简单方法:
private void playIntro(){ setContentView(R.layout.intro); VideoView video = (VideoView) this.findViewById(R.id.VideoView01); Uri uri = Uri.parse("android.resource://real.app/" + R.raw.intro); video.setVideoURI(uri); video.requestFocus(); video.setOnCompletionListener(this); video.start(); }
8. 用流加载图片
BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));Bitmap bitmap = BitmapFactory.decodeStream(buf);
9.自定义一个dialog
class MyDialog extends AlertDialog {
public MyDialog(Context ctx) {
super(ctx);
LayoutInflater factory = LayoutInflater.from(context);
View view = factory.inflate(R.layout.dialog_layout, null);
setView(view);
setTitle("MyTitle");
setIcon(R.drawable.myicon);
}
}
10. 邮件发送图片
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendIntent.setType("jpeg/image");
sendIntent.putExtra(Intent.EXTRA_EMAIL, "me@gmail.com");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "aadjfk");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ sPhotoFileName));
sendIntent.putExtra(Intent.EXTRA_TEXT, sEmailBody);
startActivity(Intent.createChooser(sendIntent, "Email:"));
一定要注意"file://"是两个斜杠
11. 播放视频 htc和其他大部分手机在播放视频时 有些不同
tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(movieurl), "video/*");
startActivity(tostart);
在大部分手机上是
tostart.setClassName("com.android.camera","com.android.camera.MovieView");
而在htc上
tostart.setClassName("com.htc.album","com.htc.album.ViewVideo");
因此你需要判断
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
if (isCallable(intent)) { // call the intent as you intended.}
else { // make alternative arrangements.}
它默认使用了android:anim/accelerate_interpolator,所以你要写一个自己的interpolator ,这个interpolator就是linearInterpolator。
所以你必须先建一个res/anim/linear_interpolator.xml:
<?xml version="1.0" encoding="utf-8"?><linearInterpolator xmlns:android="http://schemas.android.com/apk/res/android" />
然后在你的animition中加入
android:iterpolator="@anim/linear_interpolator"这句话就可以了
如:
<?xml version="1.0" encoding="UTF-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:repeatCount="infinite" android:duration="1200" />
默认的是accelerate_interpolator,所以你必须在上面的xml中加入
android:iterpolator="@anim/linear_interpolator"
然后就是平滑的旋转了。
2.当采用过滤的方法:
final TextWatcher textChecker = new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
filterData(search.getText().toString());
}
};
private void filterData(String textinput){
mCursor = mHelperData.searchData(textinput);
startManagingCursor(mCursor);
String[] from = new String[]{ MyData.KEY_ROWID,
MyData.KEY_TITLE, MyData.KEY_DESCRIPTION };
int[] to = new int[]{ R.id.id, R.id.title, R.id.description, R.id.icon };
setListAdapter(new MyAdapter(this, R.layout.list_row, mCursor, from, to ));}
3. 直接发起一个相关的联系人:
Intent intent = new Intent();intent.setAction(Contacts.Intents.SHOW_OR_CREATE_CONTACT);
Intent dialIntent = new Intent( "android.intent.action.DIAL",Uri.parse("tel:666444666")); startActivity(dialIntent);
4.字符串空格以及字符串参数的问题
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string><string name="Toast_Memory_GameWon_part2">\ flips !</string>
想在字符串前面和后面有空格一定要注意转义
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+"total_flips"+getString(R.string.Toast_Memory_GameWon_part2);
那么也可以如下实现:
<string name="Toast_Memory_GameWon">you found ALL PAIRS ! on %d flips !</string>
String message_all_pairs_found = String.format(getString(R.string.Toast_Memory_GameWon), total_flips);
5.onKeyDown不起作用 主要因为 可能没有设置setFocusableInTouchMode(true)
最好也加上 setFocusable(true)
6.只知道包名的不知道 R.id的解决办法:
getResources().getIdentifier()
当然你最好吧这个文件放在res/raw/myDataFile 然后读取
7.播放序曲简单方法:
private void playIntro(){ setContentView(R.layout.intro); VideoView video = (VideoView) this.findViewById(R.id.VideoView01); Uri uri = Uri.parse("android.resource://real.app/" + R.raw.intro); video.setVideoURI(uri); video.requestFocus(); video.setOnCompletionListener(this); video.start(); }
8. 用流加载图片
BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));Bitmap bitmap = BitmapFactory.decodeStream(buf);
9.自定义一个dialog
class MyDialog extends AlertDialog {
public MyDialog(Context ctx) {
super(ctx);
LayoutInflater factory = LayoutInflater.from(context);
View view = factory.inflate(R.layout.dialog_layout, null);
setView(view);
setTitle("MyTitle");
setIcon(R.drawable.myicon);
}
}
10. 邮件发送图片
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendIntent.setType("jpeg/image");
sendIntent.putExtra(Intent.EXTRA_EMAIL, "me@gmail.com");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "aadjfk");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ sPhotoFileName));
sendIntent.putExtra(Intent.EXTRA_TEXT, sEmailBody);
startActivity(Intent.createChooser(sendIntent, "Email:"));
一定要注意"file://"是两个斜杠
11. 播放视频 htc和其他大部分手机在播放视频时 有些不同
tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(movieurl), "video/*");
startActivity(tostart);
在大部分手机上是
tostart.setClassName("com.android.camera","com.android.camera.MovieView");
而在htc上
tostart.setClassName("com.htc.album","com.htc.album.ViewVideo");
因此你需要判断
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
if (isCallable(intent)) { // call the intent as you intended.}
else { // make alternative arrangements.}
发表评论
-
URI 转path
2019-06-26 10:41 1326转自知乎Matisse package com.zhihu ... -
权限申请
2017-09-22 13:25 1265public class PermissionActivit ... -
onPreviewFrame 相机输出格式转换yuv420p保存成图片
2015-11-25 15:59 7575在最近项目中,因为特殊需要,底层相机往外输出了i420 也 ... -
new Android's Runtime Permission
2015-11-03 21:05 1243targetSdkVersion 23 开始 使用运行时权 ... -
自定义listview 边缘效果
2015-02-28 10:58 1739static void ChangeEdgeEffect( ... -
发射打开wifi
2015-01-07 10:25 1435WifiManager wifiManager = (Wif ... -
RecyclerView
2014-11-05 13:08 1257http://www.grokkingandroid.com ... -
获取点击区域
2014-04-28 09:39 1584@Override public void getHitR ... -
speex 和libogg 编译
2014-04-03 16:17 6405下载: http://www.speex.org/down ... -
rsync 同步
2014-03-28 17:06 1840两台android 设备 进行rsy ... -
流转字符串
2014-03-11 09:49 1534public static String convertSt ... -
java simplexml 序列化
2014-03-06 13:22 5966<?xml version="1.0&quo ... -
获取其他程序的特定资源
2014-03-05 09:33 1691try { PackageManager man ... -
检测来电属于哪个sim卡
2014-02-07 10:41 1724public class IncomingCallInter ... -
使用 NDK r9 编译ffmpeg
2014-01-16 13:32 168441. 环境 ubuntu 我的是13.10 ndk r9 ... -
android h264含so
2014-01-13 11:24 1547http://download.csdn.net/downlo ... -
xml转义字符
2013-12-18 09:29 1595" " ' & ... -
字体背景颜色的高度修改
2013-12-11 10:31 4221当使用android:lineSpacingExtra= ... -
屏保的实现
2013-12-07 10:27 2797最近需要做一个屏保,开始以为很简单,因为系统本身就带了屏保功 ... -
PreferenceActivity下嵌套PreferenceScreen在其它布局中
2013-11-21 16:32 9165今天在修改系统代码的时候,系统代码用了PreferenceA ...
相关推荐
通过Utils_plugin-master,开发者可以便捷地生成和定制工具类,从而更专注于业务逻辑的实现,减少琐碎工作,提高开发速度。对于大型团队和频繁开发新功能的项目,这样的插件无疑是不可或缺的。因此,熟悉并熟练使用...
它从Android繁杂的源代码中抽取出了Android开发的“精华”和“要点”,剥离了大量琐碎的底层实现细节,进行了高度概括和总结,不仅能帮助开发者迅速从宏观上理解整个Android系统的设计理念,而且能帮助开发者迅速从...
总的来说,“android-studio-ide-202.7351085-windows”这个压缩包提供的Android Studio 4.2.1版本,是Windows平台上开发Android应用的利器,它集成了所有必要的工具,使得开发者能够专注于创新,而非被琐碎的配置...
使用“Android-Fragmentation”库,开发者能够将更多精力集中在业务逻辑上,而不是解决Fragment管理上的琐碎问题。在实际开发中,通过引入这个库,可以显著提升开发效率,减少bug,提高应用的稳定性和用户体验。 在...
它从Android繁杂的源代码中抽取出了Android开发的“精华”和“要点”,剥离了大量琐碎的底层实现细节,进行了高度概括和总结,不仅能帮助开发者迅速从宏观上理解整个Android系统的设计理念,而且能帮助开发者迅速从...
- `trivial`(琐碎的):与三姑六婆关心的事情相对应,形象记忆。 5. 实用短语: - `under the rose`:秘密的,私下的。 6. 单词应用: - `bleak`(荒凉的):在句子中用于形容房子,如"Living in that bleak ...
总的来说,Android Eclipse Plugin 12.0 是Android开发者不可或缺的工具,它极大地简化了开发流程,提升了开发效率,让开发者能够专注于创新和优化应用功能,而不是被琐碎的配置和构建问题困扰。
这个框架结合了Android开发的最佳实践和Bootstrap的灵活性,使开发者可以更加专注于应用程序的功能实现,而不是琐碎的界面设计。 ### 一、Android-Bootstrap属性详解 `android-bootstrap`框架包含了一系列自定义的...
总之,\"Android Layout Converter\"是Android开发者的得力工具,通过它,我们能够更加高效、便捷地完成布局设计,专注于创造优秀的用户体验,而不被琐碎的代码编写所困扰。对于新手和经验丰富的开发者而言,这款...
3. **索引和搜索**:CHM文件的一大特点是支持全文搜索,用户可以快速找到所需的信息。制作工具会自动生成索引,并在编译时嵌入到最终的CHM文件中。 4. **图片和资源管理**:在制作过程中,用户可能需要插入图片、...
3. **学习笔记**:学生可以利用它做课堂笔记,复习时方便查找关键信息。 三、开发流程与技术要点 1. **环境搭建**:首先,开发者需要安装Android Studio,配置Android SDK,并创建一个新的Android项目。 2. **UI...
如果你有许多小的文档、编程用的源代码、小图片等等琐碎的东西,弃之可惜,长期放在各个文件夹里又显零乱,偶而要用找起来也麻烦,琐碎打包工具可以帮助你将这些琐碎打包成一个chm文件,还可以加上说明页,既有目录...
许多人没有大量的时间在电脑上网游戏,于是,人们越来越乐意在琐碎的时间里在手机上玩一些小游戏。运行在安卓系统平台的小游戏逐渐收到大众的喜爱。 系统目标: 本系统以Android操作系统作为开发平台,Eclipse作为...
这些插件的使用能够显著提升Android开发者的生产力,使他们能够更专注于应用的功能和用户体验,而不是被琐碎的编码细节所拖累。为了安装这些插件,只需将压缩包解压后将插件文件放入Android Studio的plugins目录下,...
QMUI_Android_v2.0.0-alpha10是一款针对Android平台设计的高效UI开发框架,...通过深入研究和使用QMUI,开发者可以更加专注于业务逻辑,而不是被琐碎的界面细节所困扰,从而提高开发效率,打造出高质量的Android应用。
总之,Android Studio作为Android应用开发的主力工具,其丰富的功能和不断优化的用户体验,让开发者能专注于创新,而非琐碎的工具配置。无论是新手还是老手,都应掌握这个强大的IDE,以应对日益复杂的Android开发...
它从Android繁杂的源代码中抽取出了Android开发的“精华”和“要点”,剥离了大量琐碎的底层实现细节,进行了高度概括和总结,不仅能帮助开发者迅速从宏观上理解整个Android系统的设计理念,而且能帮助开发者迅速从...
数据库表的琐碎知识3.sql
可以快速,简便清除C盘垃圾,并不留痕迹。
3. **日期时间处理**:提供方便的时间日期格式化,以及日期计算和比较方法,便于处理时间相关的业务逻辑。 4. **权限管理**:针对Android 6.0及以上版本的运行时权限管理,提供优雅的权限申请和处理方案。 5. **...