首页 文章 精选 留言 我的

精选列表

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

Android:MediaPlayer

MediaPlayer生命周期: 注:1.prepare会造成阻塞 要先缓存一段后才会播放 2.调用stop()方法后,在调用star()会出现状态错误。可用以下方法替代解决: 1 2 3 4 5 6 7 8 9 10 11 // 停止播放 private void stop() { // mPlayer.stop(); // 用下面的方法替代stop方法 mPlayer.pause(); mPlayer.seekTo( 0 ); sendPlayBroadcast(); } 范例: 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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 public class MediaPlayerServeice extends Service { private MediaPlayer mPlayer; private SongJson songJson; private ArrayList<SongJson> mPlayList = new ArrayList<SongJson>(); //播放列表 private ArrayList<SongJson> mRadomPlayList = new ArrayList<SongJson>(); //随机播放列表 private int mPlayMode; //播放模式 private SongJson mPlayingSong; //当前播放歌曲 private int mSongPosition; //当前播放歌曲在列表中的位置 public MediaPlayerServeice() { } @Override public void onCreate() { super .onCreate(); mPlayingSong = new SongJson(); mPlayer = new MediaPlayer(); mBinder = new PlayBinder(); //出现状态错误时,此方法规避fc mPlayer.setOnErrorListener( new OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { mPlayer.reset(); return false ; } }); //监听音乐是否播放完毕 mPlayer.setOnCompletionListener( new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { playNext(); } }); } private IBinder mBinder; @Override public IBinder onBind(Intent intent) { return mBinder; } //快进快退 private void seekTo( int msec) { // mPlayer.getDuration();//得到歌曲总时间 mPlayer.seekTo(msec); } //得到当前播放位置 public int getCurrentPosition() { return mPlayer.getCurrentPosition(); } //播放下一首 private void playNext() { } //停止播放 private void stop() { mPlayer.stop(); } //得到播放循环模式 private int setPlayMode( int mode) { return mPlayMode = mode; } //添加歌曲至播放列表 private void setPlayList(ArrayList<SongJson> list) { } // 得到当前播放进度 private int getCurrTime() { return mPlayer.getCurrentPosition(); } //继续播放 private void continuePlay() { mPlayer.start(); } //是否正在播放 private boolean isplaying() { return mPlayer.isPlaying(); } //暂停 private void pause() { mPlayer.pause(); } // 播放音乐 private void play( final String url) { mPlayer.reset(); try { mPlayer.setDataSource(url); mPlayer.setOnPreparedListener( new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mPlayer.start(); } }); mPlayer.prepareAsync(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // 自定义Binder public class PlayBinder extends Binder { public void play(String url) { MediaPlayerServeice. this .play(url); } public boolean isplaying() { return MediaPlayerServeice. this .isplaying(); } public void pause() { MediaPlayerServeice. this .pause(); } public void continuePlay() { MediaPlayerServeice. this .continuePlay(); } public int getCurrTime() { return MediaPlayerServeice. this .getCurrTime(); } public void setPlayList(ArrayList<SongJson> list) { MediaPlayerServeice. this .setPlayList(list); } public int setPlayMode( int mode) { return MediaPlayerServeice. this .setPlayMode(mode); } public void playNext() { MediaPlayerServeice. this .playNext(); } public void stop() { MediaPlayerServeice. this .stop(); } public int getCurrentPosition() { return MediaPlayerServeice. this .getCurrentPosition(); } } } 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1248371,如需转载请自行联系原作者

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

Android:menu

代码设置menu形式: 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 public class MainActivity extends Activity { private final int MENU_ID_SETTING = 1 ; private final int MENU_ID_EXIT = 2 ; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //重写onCreateOptionsMenu创建菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add( 0 ,MENU_ID_SETTING, 0 , "设置" ); menu.add( 0 ,MENU_ID_EXIT, 0 , "退出" ); return super .onCreateOptionsMenu(menu); } //重写onOptionsItemSelected设置菜单事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ID_SETTING: Toast.makeText( this , "设置" , Toast.LENGTH_LONG).show(); break ; case MENU_ID_EXIT: Toast.makeText( this , "退出" , Toast.LENGTH_LONG).show(); break ; default : break ; } return super .onOptionsItemSelected(item); } } 清单配置形式: 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 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { //通过xml配置菜单 MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.setmenu, menu); return super .onCreateOptionsMenu(menu); } @Override public boolean onMenuItemSelected( int featureId, MenuItem item) { switch (item.getItemId()) { case R.id.item1: Toast.makeText( this , "设置" , Toast.LENGTH_LONG); break ; default : break ; } return super .onMenuItemSelected(featureId, item); } } 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1200353,如需转载请自行联系原作者

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

Android——Adapter

适配器的数据更新方法notifyDataSetChanged()只有在定义Adapter类时可以调用; 使用ViewHolder优化: (1)创建Holder: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class Holder{ ImageViewimagerView; TextViewtextView; ......... } ( 2 ) public ViewgetView( int position,ViewconvertView,ViewGroupparent){ //TODOAuto-generatedmethodstub Holderholder= null ; if (convertView== null ){ convertView=LayoutInflater.from(context).inflate(resource, null ); holder= new Holder(); holder.imageView=(ImageView)convertView.findViewById(R.id.imageView); holder.textView=(TextView)convertView.findViewById(R.id.textView); convertView.setTag(holder); } else { holder=(Holder)convertView.getTag(); } holder.imageView.setImageResource(image); holder.textView.setText(text) } (3)View.setTag(Object)和View.getTag(): 为View设置附加数据,可以在需要的时候拿来用,在adapter使用是避免了控件的重复实例话,算是一种简单的优化; 本文转自wauoen51CTO博客,原文链接:http://blog.51cto.com/7183397/1604340,如需转载请自行联系原作者

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

Android******Context******

1.Context介绍 Activity是Context一个非直接子类 Context到底代表什么涵义呢? 代表应用程序的环境,Context有很多的功能,包括获取资源、启动intent等等。 Context获取: this(Activity继承自Context) getApplicationContext()方法 两种方式的获取是有区别的: 2.Context的来龙去脉 ■和应用程序的私有目录息息相关 应用程序包名私有目录有3个常用的文件夹:files、cache、shared_prefs、shared_prefs, 如下图所示: Context用对应的方法操作这些目录或其中的的文件。 本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/1675154,如需转载请自行联系原作者

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

android:http

使用org.apache.http //生成一个请求对象 HttpGet httpGet = new HttpGet("http://www.baidu.com"); //生成一个Http客户端对象 HttpClient httpClient = new DefaultHttpClient(); //使用Http客户端发送请求对象 InputStream inputStream = null; try { httpResponse = httpClient.execute(httpGet); httpEntity = httpResponse.getEntity(); inputStream = httpEntity.getContent(); //文件流操作 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String result = ""; String line = ""; // StringBuilder builder = new StringBuilder();while((line = reader.readLine()) != null){ result = result + line; // builder.append(s); } System.out.println(result); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try{ inputStream.close(); } catch(Exception e){ e.printStackTrace(); } } }/* JSONObject jsonObject = new JSONObject(builder.toString());String re_username = jsonObject.getString("username");String re_password = jsonObject.getString("password");int re_user_id = jsonObject.getInt("user_id"); */ GET和POST方式: GET:即在baseUrl后“ ?” “ &”加一些参数即可 POST方式: NameValuePair nameValuePair1 = new BasicNameValuePair("name",name); //name为读取的值 NameValuePair nameValuePair2 = new BasicNameValuePair("age",age); //age为读取的值 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(nameValuePair1); nameValuePairs.add(nameValuePair2); //生成Entity对象 HttpEntity requestHttpEntity = new UrlEncodedFormEntity(nameValuePairs); HttpPost httpPost = new HttpPost(url); //这里的url是baseUrl 不用拼上?key=value... httpPost.setEntity(requestHttpEntity ); //之后的操作一样 本文转自老Zhan博客园博客,原文链接:http://www.cnblogs.com/mybkn/archive/2012/05/18/2508400.html,如需转载请自行联系原作者

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

Android 动画

1.闪烁动画 AlphaAnimation 1 2 3 4 5 6 7 8 9 privatevoid startFlickerAnimation(ImageView img) { final Animation animation = new AlphaAnimation(1f, 0)f; animation.setDuration(500); animation.setInterpolator( new LinearInterpolator()); // do not alter animation rate animation.setRepeatCount(Animation.INFINITE); // Repeat animation infinitely animation.setRepeatMode(Animation.REVERSE); // img.setAnimation(animation); animation.start(); } 本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/p/3567661.html,如需转载请自行联系原作者

资源下载

更多资源
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应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册