首页 文章 精选 留言 我的

精选列表

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

Android学习笔记--Android开发时常用控件(一)

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0 TextView,Button,EditText,Menu 例,实现一个简单的计算器功能 实现过程一1.在第一个Activity中,声明4个控件(2个编辑框,1个文本域,1个按钮) 2.要为其中的两个空间设置显示的值(文本域和按钮) 3.创建一个监听器.监听按钮事件 4.将监听器对象绑定到按钮对象上 在布局的xml文件中添加控件例: <EditText Android:id="@+id/eText1" Android:layout_width="fill_parent" Android:layout_height="wrap_content" /> <TextView Android:id="@+id/tView" Android:layout_width="fill_parent" Android:layout_height="wrap_content" /> <EditText Android:id="@+id/eText2" Android:layout_width="fill_parent" Android:layout_height="wrap_content" /> <Button Android:id="@+id/bBtn" Android:layout_width="fill_parent" Android:layout_height="wrap_content" /> 在使用空间的Activity页面中取出控件 例:publicclassActivityextendsActivity{ PrivateEditTexteText1; PrivateEditTexteText2; PrivateTextViewtView; PriveteButtonbBtn; @override PublicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); //根据控件的ID来取得代表控件的对象 eText1=(EditText)findViewById(R.id.eText1); eText2=(EditText)findViewById(R.id.eText2); tView=(TextView)findViewById(R.id.tView); tView,setText("乘以"); bBtn=(Button)findViewById(R.id.bBtn); bBtn.setText("计算");//为button设置值 //或设置在res/strings.xml中设置 //例:<stringname="bBtnText">计算</string> //bBtn.setText(R.string.bBtnText); //将监听器对象绑定按钮对象上去 bBtn.setOnClickLinstrener(newCalculateListener()); } //内部类监听器 ClassCalculateListenerimplementsOnClickListener{ @Override PublicvoidonClick(Viewv){ //取得两个编辑框的值 StringeText1=eText1.getText().toString(); StringeText2=eText2.getText().toString(); //将两个值放入到Intent对象之中 Intentintent=newIntent(); //使用这个Intent对象启动下一个Activity intent.putExtra("one",eText1); intent.putExtra("two",eText2); intent.setClass(Activity.this,ResultActivity.class); Activity.this.startActivity(intent); } } } 实现过程第二步: 1.接受从Activity当中传递的值 2.计算两个值的积 3.将计算的结果显示在当前的Activity中 //在当前的Activity中的xml文件中添加一个文本域 <TextView Android:id="@+id/tViewResult" Android:layout_width="fill_parent" Android:layout_height="wrap_content" /> 在onCreate中执行语句(不再累赘) 关键代码://取到RestltView的对象 Intentintent=getIntent(); StringtText1=intnet.getStringExtra("one"); StringtText2=intnet.getStringExtra("two"); InttText1int=Integer.parseInt(tText1); InttText2int=Integer.parseInt(tText2); Intresult=tText1int*tText2int; RestltView.setText(result+""); Menu对象的实现 复写函数onCreateOptionMenu() PublicbooleanonCreateOptionMenu(Menumenu){ //第二个参数就是itemid Menu.add(0,1,1,R.string.exit); Menu.add(0,2,2,R.string.about); Returnsuper.onCreate } 继续实现menuitem的事件方法 //当用户点击菜单的某一选项时,会调用该方法 复写onOPtionsItemSelected(MenuItemitem); PublicbooleanonOPtionsItemSelected(MenuItemitem){ If(item.getItemId()==1){ Finish(); } Returnsuper.onOptionsItemSelected(MenuItemitem); } 本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1360577,如需转载请自行联系原作者

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

iOS开发-CGAffineTransformMakeRotation改变了中心解决的方法

坑爹的。 为了这个问题折腾了2个小时。 恼.. 今天在写一个时钟demo的时候, 时针的旋转用到了CGAffineTransformMakeRotation, 按理说. 图像的旋转是以图像本身的中心(center)为锚点的, 也就是在旋转过程中, 它的中心是固定的。 就和我们时针的效果一样。 比方我以下的时针, 分针, 秒针旋转的代码: NSDate *today = [NSDate date]; NSCalendar *calendar = [NSCalendar currentCalendar]; unsigned flags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; NSDateComponents *todayComponents = [calendar components:flags fromDate:today]; int hour = [todayComponents hour]; int min = [todayComponents minute]; int sec = [todayComponents second]; float fineHour = (hour % 12) + min /60.0; hourHand.transform = CGAffineTransformMakeRotation(M_PI * 2 * fineHour / 12.0); minuteHand.transform = CGAffineTransformMakeRotation(M_PI * 2 * min / 60.0); secondHand.transform = CGAffineTransformMakeRotation(M_PI * 2 * sec / 60.0); 代码是没问题的。 可是, 执行起来的时候, 发现旋转过程中中心变了。 出现了明显的位移... 折腾了半天。 原来是自己主动布局搞的鬼.. 蛋疼。 解决的办法: 1. 关掉自己主动布局。 2.你应当设置center的约束,而不是边缘位置的约束。 攻克了。 睡觉了.. 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5239612.html,如需转载请自行联系原作者

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

android音乐播放器开发 SweetMusicPlayer 实现思路

一,实现效果 眼下还不是特别完好,主要有下面几个功能, 1,载入歌曲列表(实现a-z字母检索) 2,播放本地音乐 3。智能匹配本地歌词 4。智能载入在线歌词(事实上不算智能。发现歌词迷api提供的歌词好多难以解析) 5。摇一摇换歌功能 先上几张截图吧 另外,素材来自天天动听和百度音乐。。。毕竟作为一个码农,p图什么的太累。 。 。 楼主也是一介菜鸟。想记录一下做过的东西。做一个总结。 二。实现思路 1。主要界面设计 1)用tabs实现歌曲,近期。艺术家,专辑等分类,眼下楼主仅仅实现了歌曲部分。 2)主界面底部有个bottomactionbar用来操作歌曲状态,点击后弹出歌词播放界面。(这里必需要吐槽下,我眼下的实现方案不是非常好,用的最外层包裹的一层ScrollView,把歌词界面和歌曲界面放进去,操作时滚动到需要的界面位置,本想模仿天天动听能够把歌词界面拖拽出来,技术有限。弄了三四种方案,成了现在蹩脚的样子) 3)歌词界面,实现歌词部分,歌词调整进度。 2,主要实现思路 用一个MusicManager类控制播放器的主要事件及操作。然后广播通知ui控件更新。 在MusicManager设置一个ListView成员变量作为当前播放的控件。 由于可能用户不通过歌曲列表播放,可能通过近期播放列表。艺术家列表等等。 MusicManager包括各种状态以及操作,比方播放音乐。随机一个音乐。下一曲等等。 然后去通知播放音乐的service。先简介一下吧,然后再总结详细实现。 package com.huwei.sweetmusicplayer.datamanager; import java.util.ArrayList; import java.util.List; import java.util.Random; import android.content.Context; import android.content.Intent; import android.provider.MediaStore; import android.view.View; import android.widget.BaseAdapter; import android.widget.ListView; import com.huwei.sweetmusicplayer.enums.MusicState; import com.huwei.sweetmusicplayer.models.Song; import com.huwei.sweetmusicplayer.ui.fragments.PlayingFragment; public class MusicManager { private int nowplaying_index=-1; public static boolean isPlaying=false; public static final String BOTTOMACTIONBAR_UPDATE="BOTTOMACTIONBAR_UPDATE"; public static final String BOTTOMACTIONBAR_CHECKED="BOTTOMACTIONBAR_CHECKED"; public static final String BOTTOMACTIONBAR_UNCHECKED="BOTTOMACTIONBAR_UNCHECKED"; public static final String PLAY_BTN_CHECKED="PLAY_BTN_CHECKED"; public static final String PLAY_BTN_UNCHECKED="PLAY_BTN_UNCHECKED"; private static MusicManager instance; private Context context; private List<Song> songLists=new ArrayList<Song>(); //启动应用从数据库都进来时候的列表 private ListView nowPlayingListView; //正在播放音乐的列表控件 /** * 定义查找音乐信息数组。0.标题,1音乐时间,2.艺术家,3.音乐id,4.显示名字,5.全路径,6,专辑ID,7最后加入时间。 */ public static String[] media_info = new String[] { MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ALBUM_ID ,MediaStore.MediaColumns.DATE_ADDED}; public static MusicManager getInstance(){ if(null==instance){ instance=new MusicManager(); } return instance; } //加入song到songLists public void addSong(Song song){ songLists.add(song); } public void bind(Context context){ this.context=context; } public void play(){ Intent intent=new Intent(); Song song=(Song) nowPlayingListView.getAdapter().getItem(nowplaying_index); intent.setAction("com.huwei.sweetmusicplayer.services.LocalMusicService"); intent.putExtra("song", song); intent.putExtra("op", MusicState.PLAYING.ordinal()); //播放选项 context.startService(intent); //通知playButton Intent intent3=new Intent(PLAY_BTN_CHECKED); context.sendBroadcast(intent3); isPlaying=true; } //先停止,再播放 public void restartPlay(){ stopUnNotifyView(); play(); } public void previousSong(){ setNowplaying_index(nowplaying_index-1); restartPlay(); } public void nextSong(){ //都要用set方法。便于通知更新视图 setNowplaying_index(nowplaying_index+1); restartPlay(); } //随机播放一首歌 public void random_a_song(){ getRandom_song(); restartPlay(); } public void pause(){ Intent intent=new Intent(); intent.setAction("com.huwei.sweetmusicplayer.services.LocalMusicService"); intent.putExtra("op", MusicState.PAUSE.ordinal()); //播放选项 context.startService(intent); isPlaying=false; //通知playButton Intent intent3=new Intent(PLAY_BTN_UNCHECKED); context.sendBroadcast(intent3); } //发送停止音乐广播,可是不更新视图 public void stopUnNotifyView(){ Intent intent=new Intent(); intent.setAction("com.huwei.sweetmusicplayer.services.LocalMusicService"); intent.putExtra("op", MusicState.STOP.ordinal()); //播放选项 context.startService(intent); } //停止音乐 public void stop(){ stopUnNotifyView(); } //设置音乐进度 public void setProgress(int progress){ Intent intent=new Intent("com.huwei.sweetmusicplayer.services.LocalMusicService"); intent.putExtra("progress", progress); intent.putExtra("op", MusicState.PROGRESS_CHANGE.ordinal()); context.startService(intent); } //随机得到一首歌 public int getRandom_song(){ int random=new Random().nextInt(nowPlayingListView.getAdapter().getCount()); setNowplaying_index(random); return nowplaying_index ; } public List<Song> getSongLists() { return songLists; } public int getNowplaying_index() { return nowplaying_index; } public void setNowplaying_index(int i) { int count=nowPlayingListView.getCount(); nowplaying_index=(i+count)%count; //通知ListView控件刷新 BaseAdapter adapter=(BaseAdapter) nowPlayingListView.getAdapter(); adapter.notifyDataSetChanged(); //通知bottomActionBar更新 Intent intent=new Intent(BOTTOMACTIONBAR_UPDATE); context.sendBroadcast(intent); //通知PlaySong界面更新 Intent intent2=new Intent(PlayingFragment.PLAYSONG_UPDATE); context.sendBroadcast(intent2); } public ListView getNowPlayingListView() { return nowPlayingListView; } public void setNowPlayingListView(ListView nowPlayingListView) { this.nowPlayingListView = nowPlayingListView; } public Song getNowPlayingSong(){ return (Song) nowPlayingListView.getAdapter().getItem(nowplaying_index); } //歌词界面操作状态 public static class OperateState{ public static String READLRC_SUCCESS="READLRC_SUCCESS"; public static String READLRC_LISTNULL="READLRC_LISTNULL"; public static String READLRC_ONLINE="READLRC_ONLINE"; public static String READLRCFILE_FAIL="READLRCFILE_FAIL"; public static String READLRCONLINE_FAIL="READLRCONLINE_FAIL"; } public Song getSongByIndex(int index){ return (Song) nowPlayingListView.getAdapter().getItem(index); } } 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5265129.html,如需转载请自行联系原作者

资源下载

更多资源
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等操作系统。

用户登录
用户注册