Android有用代码片段(三)

[+]
  1. 四十一数据库写入图片信息
  2. 四十二listView的addView的问题
  3. 四十三progressBar修改颜色
  4. 四十四窗口透明背景模糊等
  5. 四十五Android输入框和文本框滚动条ScrollView
  6. 四十六Android模拟器启动内存错误内存不能为read
  7. 四十七通过路径获取媒体文件信息
  8. 四十八Java中有用的文件操作
  9. 四十九Android文件读写
  10. 五十
    1. scaleType属性与ImagView中图片的显示的关系
  11. 五十一 Notification的属性
  12. 五十二Android控件实现震动
  13. 五十三Android 页面切换动画效果
  14. 五十四Android22完全退出程序
  15. 五十五Android按下back键非退出隐藏到后台
  16. 五十六在Android开发中使用Gallery实现多级联动
  17. 五十七获取view在屏幕中的位置
  18. 五十八在图形中添加文字
  19. 五十九使用Vibrator实现手机震动
  20. 六十界面重绘

前两个已经到第四十个了,所以还得再开一篇,用于记录,以前文章:Android有用代码片段(二)android有用代码片段,有需要的朋友可以去看一下。

         四十一、数据库写入图片信息:

[java]  view plain copy
  1. <span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;">数据库中的字段设置为 binary类型  
  2. Bitmap bitmap = BitmapFactory.decodeFile(path);  
  3. ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  4.                 bitmap.compress(CompressFormat.JPEG, 50, baos);  
  5. String sql = "insert into pic_info(pic_data, pic_name,pic_size,send_date,is_success) " +"values(?,?,?,?,?)";  
  6.                 Object[] args = new Object[]{baos.toByteArray(), name, size, now, isSucess};  
  7. db.insert(sql, args);  
  8. 读取数据库的图片信息:  
  9. byte[] picData = cursor.getBlob(cursor.getColumnIndex("pic_data"));  
  10. bitmap.setImageBitmap(BitmapFactory.decodeByteArray(picData, 0, picData.length));</span>  

       四十二、listView的addView的问题。

         在listView里使用addView()、addFooterView(v)、addHeaderView(v)时,要在setAdepter以前添加,或者在重写的Adapter中添加。因为setAdapter以后,就是listView已经绘制完毕,不能再进行添加。

         四十三、progressBar修改颜色

        有的时候,我们使用progressBar的时候,后面的背景色是白色或者是亮色,使得progressBar效果很不明显,所以,我们可以在下面三条中随意添加一条熟悉就可以了:

[java]  view plain copy
  1. <ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>  
  2. <ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>  
  3. <ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>  

         这是比较简单的,如果要完成复杂效果,需要自定义style了。

       

        四十四、窗口透明(背景模糊等)

       先看下效果图:



第一种效果:

在styles.xml中定义

[html]  view plain copy
  1. <style name="Theme.Translucent" parent="android:style/Theme.Translucent">  
  2. <item name="android:windowBackground">  
  3. @drawable/translucent_background  
  4. </item>  
  5. <item name="android:windowNoTitle">true</item>  
  6. <item name="android:colorForeground">#fff</item>  
  7. </style>  

第二种效果是在源代码里面修改,在onCreate方法里面添加:

[java]  view plain copy
  1. getWindow().  
  2. setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,  
  3. WindowManager.LayoutParams.FLAG_BLUR_BEHIND);  
  4. setContentView(R.layout.translucent_background);  

设置模糊效果是通过窗口管理器(WindowManager)设置参数来完成的,这种设置只有在背景设置为透明后才能显示效果。


  四十五、Android输入框和文本框滚动条ScrollView

    我们都知道EditText与TextView是Android的文本输入框和文本显示框,但是基于手机屏幕的大小因素,如果在需要输入较多文字或者显示较多内容的时候,手机屏幕是远远不够的,因此让文本框具有滚动条的功能是手机上必备的,


要加上滚动条,其实很简单,只需要在文本输入框或者文本显示框上面加上滚动条控件即可,该控件名字为ScrollView,以下我们对比下(以TextView举例)。

A、未加滚动效果

[html]  view plain copy
  1. <TextView   
  2. android:layout_width="fill_parent"   
  3. android:layout_height="wrap_content"   
  4. android:id="@+id/textView"   
  5. />  

B、加上滚动效果

[html]  view plain copy
  1. <ScrollView   
  2. android:id="@+id/scrollView"   
  3. android:layout_width="fill_parent"   
  4. android:layout_height="200px"   
  5. android:scrollbarStyle="outsideOverlay" android:background="@android:drawable/edit_text">   
  6. <TextView   
  7. android:layout_width="fill_parent"   
  8. android:layout_height="wrap_content"   
  9. android:id="@+id/textView"   
  10. />   
  11. </ScrollView>  


由以上例子可以看出,只需要在文本控件的外围加上ScrollView控件就可以让文本框具有滚动体的功能。

       四十六、Android模拟器启动内存错误(内存不能为read)

如图

运行模拟器的时候总是会内存错误。




这种情况偶尔出现,没什么关系,不用管他。点击‘取消’就可以了。 

经常出现就危险了,弄不好就得重装系统了。 

运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。 
“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。 
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。 
一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件 

开始 运行 输入:cmd 确定: 

在DOS提示符下输入: 


for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 

等待3分钟,左右后,搞定了。(如果怕输错,就把这句话复制上去)。

     

    

四十七、通过路径获取媒体文件信息

    通过路径获取媒体文件信息  http://blog.csdn.net/aomandeshangxiao/article/details/6600725

        四十八、Java中有用的文件操作

      java文件操作 http://blog.csdn.net/aomandeshangxiao/article/details/6597302

       

       四十九、Android文件读写

    Android文件的读写 http://blog.csdn.net/aomandeshangxiao/article/details/6589510

        五十、

     scaleType属性与ImagView中图片的显示的关系

      

    五十一、  Notification的属性

                           notification的各种属性:http://blog.csdn.net/aomandeshangxiao/article/details/6608101

    五十二、Android控件实现震动:

               先在res下面新创建anim文件夹,在该文件夹中创建shake.xml文件:

[java]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <translate xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:duration="1000"   
  4.     android:fromYDelta="0"   
  5.     android:toYDelta="10"  
  6.     android:fromXDelta="0"  
  7.     android:toXDelta="10"  
  8.     android:interpolator="@anim/cycle_7" />  

最后引用了cycle_7,再在该文件夹中创建cycle_7.xml文件

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:cycles="10" />  
  在Java代码里面:

[html]  view plain copy
  1. Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);  
  2.         findViewById(R.id.image).startAnimation(shake);  

就实现了该控件的震动效果。

         

    五十三、Android 页面切换动画效果

      http://hi.baidu.com/fountainblog/blog/item/66cb9918b0220eaa4bedbc2e.html

    五十四、Android2.2完全退出程序 

     http://www.eoeandroid.com/thread-62284-1-1.html

    五十五、Android按下back键非退出隐藏到后台

[java]  view plain copy
  1. public boolean onKeyDown(int keyCode, KeyEvent event) {    
  2.     if (keyCode == KeyEvent.KEYCODE_BACK) {    
  3.         Intent intent = new Intent(Intent.ACTION_MAIN);    
  4.         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
  5.         intent.addCategory(Intent.CATEGORY_HOME);    
  6.         startActivity(intent);    
  7.         return true;    
  8.     }    
  9.     return super.onKeyDown(keyCode, event);    
  10. }    

    五十六、在Android开发中使用Gallery实现多级联动

http://mobile.51cto.com/hot-230282.htm


    五十七、获取view在屏幕中的位置:

[java]  view plain copy
  1. int[] points = { 00 };  
  2.             view.getLocationInWindow(points);  

这里用数组存储view的x和y坐标,point[0]是x坐标,point[1]是y坐标。

    五十八、在图形中添加文字

[java]  view plain copy
  1. @Override  
  2.     protected synchronized void onDraw(Canvas canvas) {  
  3.         super.onDraw(canvas);  
  4.         Rect rect = new Rect();  
  5.         this.mPaint.getTextBounds(this.text, 0this.text.length(), rect);  
  6.         int x = (getWidth() / 2) - rect.centerX();  
  7.         int y = (getHeight() / 2) - rect.centerY();  
  8.         canvas.drawText(this.text, x, y, this.mPaint);  
  9.     }  

     五十九、使用Vibrator实现手机震动

 

[java]  view plain copy
  1. @Override  
  2.     public boolean onTouchEvent(MotionEvent event) {  
  3.   
  4.         if(event.getAction() == MotionEvent.ACTION_DOWN){  
  5.              vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);  
  6.              long[] pattern = {80040,40030}; // OFF/ON/OFF/ON...  
  7.              vibrator.vibrate(pattern, 2);//-1不重复,非-1为从pattern的指定下标开始重复  
  8.         }  
  9.         return super.onTouchEvent(event);  
  10.     }   

   六十、界面重绘

              invalidate()或者view.postinvalidate()方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值