首页 文章 精选 留言 我的

精选列表

搜索[语言切换],共10000篇文章
优秀的个人博客,低调大师

Android项目实战(四十四):Zxing二维码切换横屏扫描

Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=".CaptureActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> 这时候扫描,会发现扫描效果变形,方向不对。 可按以下步骤进行修改: 1、修改CameraConfigurationManager.java中的setDesiredCameraParameters函数, camera.setDisplayOrientation(90); ---> camera.setDisplayOrientation(0); 2、修改CameraManager.java的getFramingRectInPreview()函数中修改成如下,即将x改为y , y改为x rect.left = rect.left * cameraResolution.x / screenResolution.x; rect.right = rect.right * cameraResolution.x / screenResolution.x; rect.top = rect.top * cameraResolution.y / screenResolution.y; rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y; 3、修改DecodeHandler.java中的decode函数 4、其它可修改部分参照Github Demo 可设置的: 扫描框中的中间线的宽度 扫描框中的中间线的与扫描框左右的间隙 中间那条线每次刷新移动的距离 四个绿色边角对应的长度 、 宽度、颜色 、透明度 中间滑动线的最顶端位置 、 最低端位置 扫描线 是一张图片 遮挡层颜色 , 正方形之外的 区域的颜色 闪点颜色 其他功能: 闪光灯开启 从本地获取图片读取二维码 当前xxx时间内没有扫描 , 关闭当前扫描二维码界面

优秀的个人博客,低调大师

[Android学习笔记八] 使用VideoView屏幕方向发生变化,视频方向自动切换

一个Activity主要用来做播放视频使用,并且是全屏播放的话,主要采用横屏(Landscape orientation 显示宽度大于高度)显示视频,那么可以指定Activity的属性android:screenOrientation="landscape"让Activity在设备上以横屏显示。 本文使用VideoView来显示视屏,Potrait(竖屏)时布局样式中宽匹配父布局,高匹配内容;Landscape(横屏)时布局样式中宽匹配内容,高匹配布局。视屏播放中,用户调正设备方向时,导致屏幕方向发生变化,视屏能够适应布局样式显示视频,并正常继续播放。 示例图: 1. 构建布局 Potrait: res/layout/activity_videoview.xml 1 2 3 4 5 6 7 8 9 10 11 <? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" > < VideoView android:id = "@+id/videoView" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_gravity = "center_horizontal" android:layout_margin = "5dp" /> </ LinearLayout > Landscape: res/layout-land/activity_videoview.xml 1 2 3 4 5 6 7 8 9 10 <? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "match_parent" android:layout_height = "match_parent" > < VideoView android:layout_width = "wrap_content" android:layout_height = "match_parent" android:id = "@+id/videoView" android:layout_gravity = "center_horizontal" android:layout_margin = "5dp" /> </ LinearLayout > 2.创建Activity 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 package secondriver.sdk.activity; import android.app.Activity; import android.app.ProgressDialog; import android.content.res.Configuration; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; import secondriver.sdk.R; /** *Author:secondriver *Created:2015/11/30 */ public class VideoViewActivity extends Activity implements MediaPlayer.OnPreparedListener,MediaPlayer.OnCompletionListener,MediaPlayer.OnErrorListener{ private final StringTAG=VideoViewActivity. class .getName(); public VideoViewvideoView; public MediaControllermediaController; public int videoPosition= 0 ; public ProgressDialogdialog; @Override protected void onCreate(BundlesavedInstanceState){ Log.d(TAG, "onCreate" ); super .onCreate(savedInstanceState); setContentView(R.layout.activity_videoview); dialog= new ProgressDialog( this ); dialog.setTitle( "视屏播放器" ); dialog.setMessage( "正在加载..." ); dialog.setCancelable( false ); mediaController= new MediaController( this ); videoView=(VideoView)findViewById(R.id.videoView); videoView.setMediaController(mediaController); videoView.setOnCompletionListener( this ); videoView.setOnPreparedListener( this ); videoView.setOnErrorListener( this ); } private void loadVideo(){ Log.d(TAG, "loadvideo" ); dialog.show(); try { videoView.setVideoURI(Uri.parse( "android.resource://" +getPackageName()+ "/" +R.raw.bsg)); } catch (Exceptione){ Log.e(TAG,e.getMessage()); } } @Override protected void onStart(){ Log.d(TAG, "onStart" ); super .onStart(); loadVideo(); } @Override public void onConfigurationChanged(ConfigurationnewConfig){ Log.d(TAG, "onConfigurationChanged" ); super .onConfigurationChanged(newConfig); } @Override public void onCompletion(MediaPlayermp){ Log.d(TAG, "MediaonCompletion" ); Toast.makeText(VideoViewActivity. this , "播放完成" ,Toast.LENGTH_LONG).show(); mp.release(); } @Override public void onPrepared(MediaPlayermp){ Log.d(TAG, "MediaonPrepared" ); if (dialog.isShowing()){ dialog.dismiss(); } mp.seekTo(videoPosition); if (videoPosition== 0 ){ mp.start(); } else { mp.pause(); } } @Override public boolean onError(MediaPlayermp, int what, int extra){ Log.d(TAG, "MediaonError" ); Stringerr= "未知错误" ; switch (what){ case MediaPlayer.MEDIA_ERROR_UNKNOWN: break ; case MediaPlayer.MEDIA_ERROR_SERVER_DIED: err= "媒体服务终止" ; break ; default : break ; } Toast.makeText(VideoViewActivity. this ,err,Toast.LENGTH_LONG).show(); return true ; } } 3. 设置Activity属性 1 2 3 <activityandroid:name= ".activity.VideoViewActivity" android:configChanges= "orientation|screenSize|keyboardHidden" /> 代码中重写了onConfigurationChanged,可以在此处做配置发生变化的处理。 在运行时发生配置更改,Activity被关闭,默认情况下重新启动,但在设置了Activity的configChanges属性的配置将防止活动被重新启动,Activity仍在运行并且onConfigurationChanged方法被调用。 需要注意的是如果应用程序的target API level是13+的话(声明了minSdkversion和targetSdkVersion属性),需要同时设置screensize, 因为设备的横竖方向发生变化的时候,当前屏幕的可用尺寸也将发生变化。 本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1718653,如需转载请自行联系原作者

优秀的个人博客,低调大师

iOS:切换视图的第三种方式:UITabBarController标签栏控制器

UITabBarController:标签栏控制器 •通过设置viewControllers属性或者addChildViewController方法可以添加子控制器 –NSArray*viewControllers –- (void)addChildViewController:(UIViewController*)childController •UIViewController的tabBarItem属性决定了UITabBar显示的内容 –使用系统自带的UITabBarItem样式: controller.tabBarItem = [[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1] autorelease]; –自己设置UITabBarItem的标题和图片: controller.tabBarItem.title = @”More”; // controller.title也可以用于设置标题 controller.tabBarItem.image = [UIImage imageNamed:@”more”]; –设置UITabBarItem右上角的红色数字 controller.tabBarItem.badgeValue = @”10”; 例如在storyboard中拖入一个UITabBarController,它首先自带着两个控制器,并以manual方式连接着,然后可以再拖入两个控制器,在第一个控制器TabBarController中单击右键,仍以manual方式拖到目的控制器连接起来。最后设置每一个控制器视图颜色、标签栏标题、tabBarItem样式即可。标签栏最多显示5个视图,如果多于5个,剩下的控制器会变成more标签,点击more后,可以进去查看剩余不能显示的控制器,只不过它们被放到了表格中。 演示结果: 程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式! 本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4809401.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

[Android Pro] 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHid...

referece to :http://blog.csdn.net/mybook1122/article/details/24978025 这个网上搜索,很多结果都是: AndroidManifest.xml android:configChanges="keyboardHidden|orientation" 但是,实际上很多手机上,这个根本不起作用。这是为什么呢? 因为,但多数人陈陈相因,文章直接转,都没有结果自己实践。 在低版本上,这个是可以起作用。在android 4.0 以上实际上这个是不起作用的。 必须要加上screenSize。 android:configChanges="keyboardHidden|orientation|screenSize" 分类:Android Pro 本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/4825507.html如需转载请自行联系原作者 demoblog

优秀的个人博客,低调大师

Centos安装Go语言环境

- 第一步:更新系统镜像源 ```bash dnf update -y && dnf upgrade -y ``` - 第二步:[go](https://go.dev/dl/) 安装包下载 ```bash tar xf xxx.tar.gz [-C 路径] ``` - 第三步:配置环境变量 ```bash # vim ~/.bashrc export export GOROOT=go安装包解压后的路径 export GOPATH=go工作区 export PATH=$PATH:$GOROOT/bin:$GOPATH/bin export GOPROXY=go镜像源 # 使配置更新 source ~/.bashrc ``` - 第四步:测试是否可用 ```bash go version ```

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册