首页 文章 精选 留言 我的

精选列表

搜索[应用接续],共10000篇文章
优秀的个人博客,低调大师

Android应用程序的语言切换

最近项目中用用到语言切换功能,第一想到的就是资源文件,没错。 在资源文件中新建一个文件夹values-en,在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的内容Copy至values-en中的strings.xml,再把该文件夹中的中文内容转换为英文,例如<string name="set">设置</string>转换为<string name="set">set</string> 然后再主Activity中写一个方法 代码: public void switchLanguage(Locale locale){ Configuration config = getResources().getConfiguration();// 获得设置对象 Resources resources = getResources();// 获得res资源对象 DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。 config.locale = locale; // 简体中文 resources.updateConfiguration(config, dm); } 必须在OnCreate函数中调用 还得注意的是:在AndroidManifest.xml中要配置一下 在activity节点中加上这个属性:android:configChanges="locale" 添加权限:<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> 本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2013/04/09/3010514.html,如需转载请自行联系原作者

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

Android:GridView类似桌面显示所有应用

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 public class MainActivity extends Activity { private List<ResolveInfo> mApps = null ; private ArrayList<HashMap<String, Object>> data = null ; private HashMap<String, Object> hashMap = null ; class ViewHolder { ImageView viewImg; TextView viewName; } @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); loadapp(); setContentView(R.layout.activity_main); GridView gridView = (GridView) findViewById(R.id.gridView1); BaseAdapter adapter = new BaseAdapter() { @Override public View getView( int position, View convertView, ViewGroup parent) { LinearLayout layout; ViewHolder holder = new ViewHolder(); if (convertView == null ) { LayoutInflater inflater = getLayoutInflater(); layout = (LinearLayout) inflater.inflate(R.layout.linelayout, null ); holder.viewImg = (ImageView) layout.findViewById(R.id.imageView1); holder.viewName = (TextView) layout.findViewById(R.id.textView1); layout.setTag(holder); } else { layout = (LinearLayout) convertView; holder = (ViewHolder) layout.getTag(); } ResolveInfo info = mApps.get(position); holder.viewImg.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); holder.viewName.setText(info.activityInfo.loadLabel(getPackageManager()).toString()); return layout; } @Override public long getItemId( int position) { return position; } @Override public Object getItem( int position) { return mApps.get(position); } @Override public int getCount() { return mApps.size(); } }; gridView.setAdapter(adapter); } private void loadapp() { Intent intent = new Intent(Intent.ACTION_MAIN, null ); intent.addCategory(Intent.CATEGORY_LAUNCHER); mApps = getPackageManager().queryIntentActivities(intent, 0 ); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true ; } } 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1218512,如需转载请自行联系原作者

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

android中的多媒体应用camera

MainActivity.java 代码 packagecom.amaker.ch11.app; importjava.io.File; importjava.io.FileOutputStream; importjava.io.IOException; importandroid.app.Activity; importandroid.graphics.PixelFormat; importandroid.hardware.Camera; importandroid.os.AsyncTask; importandroid.os.Bundle; importandroid.os.Environment; importandroid.view.KeyEvent; importandroid.view.SurfaceHolder; importandroid.view.SurfaceView; publicclassMainActivityextendsActivity{ //声明拍照界面组件SurfaceView privateSurfaceViewsurfaceView; //声明界面控制组件SurfaceHolder privateSurfaceHoldersurfaceHolder; //声明照相机 privateCameracamera; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); //实例化拍照界面组件 surfaceView=(SurfaceView)findViewById(R.id.preview); //从SurfaceView中获得SurfaceHolder surfaceHolder=surfaceView.getHolder(); //为SurfaceHolder添加回调 surfaceHolder.addCallback(surfaceCallback); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } //响应按键事件 @Override publicbooleanonKeyDown(intkeyCode,KeyEventevent){ if(keyCode==KeyEvent.KEYCODE_CAMERA||keyCode==KeyEvent.KEYCODE_SEARCH){ takePic(); returntrue; } returnsuper.onKeyDown(keyCode,event); } //拍照方法 privatevoidtakePic(){ //停止预览 camera.stopPreview(); //拍照 camera.takePicture(null,null,pictureCallback); } //照片回调 Camera.PictureCallbackpictureCallback=newCamera.PictureCallback(){ @Override publicvoidonPictureTaken(byte[]data,Cameracamera){ newSavePictureTask().execute(data); camera.startPreview(); } }; //保存照片任务类 classSavePictureTaskextendsAsyncTask<byte[],String,String>{ @Override protectedStringdoInBackground(byte[]...params){ //创建文件 Filepicture=newFile(Environment.getExternalStorageDirectory(),"picture.jpg"); //如果文件存在删除掉 if(picture.exists())picture.delete(); try{ //获得文件输出流 FileOutputStreamfos=newFileOutputStream(picture.getPath()); //写到该文件 fos.write(params[0]); //关闭文件流 fos.close(); }catch(Exceptione){ e.printStackTrace(); } returnnull; } } //SurfaceHodler回调,处理打开相机,关闭相机以及照片尺寸的改变 SurfaceHolder.CallbacksurfaceCallback=newSurfaceHolder.Callback(){ @Override publicvoidsurfaceCreated(SurfaceHolderholder){ //打开相机 camera=Camera.open(); try{ //设置预览 camera.setPreviewDisplay(holder); }catch(IOExceptione){ e.printStackTrace(); } } @Override publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth, intheight){ //获得相机参数 Camera.Parametersparameters=camera.getParameters(); //设置照片大小 parameters.setPreviewSize(width,height); //设置照片格式 parameters.setPictureFormat(PixelFormat.JPEG); //设置相机参数 camera.setParameters(parameters); //开始预览 camera.startPreview(); } @Override publicvoidsurfaceDestroyed(SurfaceHolderholder){ //停止预览 camera.stopPreview(); //释放相机资源 camera.release(); camera=null; } }; } 代码 package com.amaker.ch11.app; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.graphics.PixelFormat; import android.hardware.Camera; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MainActivity extends Activity { // 声明拍照界面组件SurfaceView private SurfaceView surfaceView; // 声明界面控制组件SurfaceHolder private SurfaceHolder surfaceHolder; // 声明照相机 private Camera camera; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 实例化拍照界面组件 surfaceView = (SurfaceView)findViewById(R.id.preview); // 从SurfaceView中获得SurfaceHolder surfaceHolder = surfaceView.getHolder(); // 为SurfaceHolder 添加回调 surfaceHolder.addCallback(surfaceCallback); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } // 响应按键事件 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_CAMERA||keyCode==KeyEvent.KEYCODE_SEARCH){ takePic(); return true; } return super.onKeyDown(keyCode, event); } // 拍照方法 private void takePic(){ // 停止预览 camera.stopPreview(); // 拍照 camera.takePicture(null,null, pictureCallback); } // 照片回调 Camera.PictureCallback pictureCallback = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { new SavePictureTask().execute(data); camera.startPreview(); } }; // 保存照片任务类 class SavePictureTask extends AsyncTask<byte[],String,String>{ @Override protected String doInBackground(byte[]... params) { // 创建文件 File picture = new File(Environment.getExternalStorageDirectory(),"picture.jpg"); // 如果文件存在删除掉 if(picture.exists())picture.delete(); try { // 获得文件输出流 FileOutputStream fos = new FileOutputStream(picture.getPath()); // 写到该文件 fos.write(params[0]); // 关闭文件流 fos.close(); } catch (Exception e) { e.printStackTrace(); } return null; } } // SurfaceHodler 回调,处理打开相机,关闭相机以及照片尺寸的改变 SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { // 打开相机 camera = Camera.open(); try { // 设置预览 camera.setPreviewDisplay(holder); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 获得相机参数 Camera.Parameters parameters = camera.getParameters(); // 设置照片大小 parameters.setPreviewSize(width, height); // 设置照片格式 parameters.setPictureFormat(PixelFormat.JPEG); // 设置相机参数 camera.setParameters(parameters); // 开始预览 camera.startPreview(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // 停止预览 camera.stopPreview(); // 释放相机资源 camera.release(); camera = null; } }; } 本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1079348

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

android中的多媒体应用MediaPlayer

MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView。SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库。 迷你音乐播放器 /Chapter11_Media_MiniPlayer/src/com/amaker/test/MainActivity.java 代码 packagecom.amaker.test; importandroid.app.Activity; importandroid.app.AlertDialog; importandroid.media.MediaPlayer; importandroid.os.Bundle; importandroid.view.View; importandroid.widget.ImageButton; publicclassMainActivityextendsActivityimplementsMediaPlayer.OnCompletionListener{ privateImageButtonplay,pause,stop; privateMediaPlayermp; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); play=(ImageButton)findViewById(R.id.play); pause=(ImageButton)findViewById(R.id.pause); stop=(ImageButton)findViewById(R.id.stop); play.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewview){ play(); } }); pause.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewview){ pause(); } }); stop.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewview){ stop(); } }); setup(); } @Override publicvoidonDestroy(){ super.onDestroy(); if(stop.isEnabled()){ stop(); } } publicvoidonCompletion(MediaPlayermp){ stop(); } privatevoidplay(){ mp.start(); play.setEnabled(false); pause.setEnabled(true); stop.setEnabled(true); } privatevoidstop(){ mp.stop(); pause.setEnabled(false); stop.setEnabled(false); try{ mp.prepare(); mp.seekTo(0); play.setEnabled(true); } catch(Throwablet){ error(t); } } privatevoidpause(){ mp.pause(); play.setEnabled(true); pause.setEnabled(false); stop.setEnabled(true); } privatevoidloadClip(){ try{ mp=MediaPlayer.create(this,R.raw.test); mp.setOnCompletionListener(this); } catch(Throwablet){ error(t); } } privatevoidsetup(){ loadClip(); play.setEnabled(true); pause.setEnabled(false); stop.setEnabled(false); } privatevoiderror(Throwablet){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder .setTitle("报错啦!") .setMessage(t.toString()) .setPositiveButton("确定",null) .show(); } } /Chapter11_Media_MiniPlayer/res/layout/main.xml 代码 <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="迷你音乐播放器"/> <LinearLayout android:orientation="horizontal"android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageButton android:id="@+id/play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/play" /> <ImageButton android:id="@+id/pause" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/pause" /> <ImageButton android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/stop" /> </LinearLayout> </LinearLayout> /Chapter11_Media_MiniPlayer/AndroidManifest.xml 代码 <?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.amaker.test" android:versionCode="1" android:versionName="1.0"> <applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> <activityandroid:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> <uses-sdkandroid:minSdkVersion="3"/> </manifest> 本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1081707

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

cacti 插件的安装及综合应用

一.安装cacti的插件 1当然在安装cacti的插件的时候必须先安装cacti的插件架构,用来支持cacti的插件 2安装cacti的架构并配置 #unzipcacti-plugin-0.8.7e-PA-v2.5.zip 3当然在安装cacti的架构的时候有两种方法, 第一种:是把files-0.8.7e中的文件直接拷贝,覆盖cacti中的文件 第二种:是把cacti-plugin-0.8.7e-PA-v2.5.diff,pa.sql拷贝的到cacti的家目录中,打补丁的形式,并更新cacti中的数据 下面是以打补丁的形式进行安装cacti的架构的 #cpcacti-plugin-0.8.7e-PA-v2.5.diff/var/www/html/cacti #cppa.sql/varwww/html/cacti #cd /var/www/html/cacti #patch-p1-N<cacti-plugin-0.8.7e-PA-v2.5.diff #mysql –uroot –pcactidb<pa.sql 修改cacti的主配文件 #cd/var/www/html/cacti /include #vimglobal.php 把下列选项 $config[‘url_path’] =”/”; 修改为 $config[‘url_path’] =”/cacti/”; 如果selinux开启的时候,在打完补丁的时候,必须重新修改cacti根目录的标签 #chcon-R –thttpd_sys_content_t/var/www/html/cacti 安装cacti中的插件 monitor 1一般情况,首先是解压缩,然后阅读文件中的READE或这是INSTALL文件 然后根据安装的要求进行安装 安装时只需把解压后的插件文件,复制到cacti的家目录下面的plugins目录下面即可 #mvmonitor/var/www/html/cacti/plugins #mysql-uroot-pcactidb<monitor.sql #mvthold/var/www/html/cacti/plugins #mysql-uroot-pcactidb<thold.sql 、#mvsettings/var/www/html/cacti/plugins 2配置cacti的全局配置文件 #cd /var/www/html/cacti/include #vimglobal.php 并找到 $plugins = array(); 再其后面添加 $plugins[] = 'thold'; $plugins[] = 'monitor'; $plugins[] = 'settings'; 3当配置完后,如果selinux是开启的则需要该插件的标签 #chcon –R –thttpd_sys_content_tmonitortholdsettings 4重启apache服务 #service httpd restart 、5通过web界面进行配置cacti 首先是 Console->User Management-> (Edit) 把您添加的插件全部线上 然后通过PluginManagement进行安装插件 二.创建自己的监控流量模板 点击console->GRAPH Management -> CDEFS -> Add Item #1 Special Data Source: CURRENT_DATA_SOURCE Item #2 CustomString 8 Item #3Operator: * Item #2 CustomString 1024 Item #3Operator: / Item #2 CustomString 1024 Item #3Operator: / 三.创建监控流量是根据自己设定的阀值,cacti会进行自动报警 点击 ThresholdTemplates-> Add 选出自己要监控是自动报警的对象 例如: 监控网卡流量的的超出一定流量时会自动通过email通知管理员 Intreface – Traffic Enabled一定要开启 设置阀值 Hig /low Settings high Threshold该项设置的是流量超过该值是cacti就会报警 LowThreshold该项是流量低于该值时,cacti同样是自动报警 Data Type 有三个选项 Exact value真实值 CDEF percentage是百分比的形式 AlertE-mail 发出警报时,接受警报人邮箱 本文转自 freehat08 51CTO博客,原文链接:http://blog.51cto.com/freehat/388138,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

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

用户登录
用户注册