首页 文章 精选 资源 留言

精选列表

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

Android被逼学习例子2

接下来的这个小例子演示当手指在触摸屏上拖动的时候,一个红色的小球更随手指进行移动。不过这个例子大致演示了一下自定义UI组件。 先来看看效果吧: 代码大致如下: AndroidDemoActivity.java package Android.Demo; import android.app.Activity; import android.os.Bundle; import android.provider.ContactsContract.CommonDataKinds.Event; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.LinearLayout; public class AndroidDemoActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout layout = (LinearLayout) findViewById(R.id.root); final DrawView draw = new DrawView(this); draw.setMinimumHeight(300); draw.setMinimumWidth(300); draw.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent evnet) { // TODO Auto-generated method stub draw.currentX = evnet.getX(); draw.currentY = evnet.getY(); draw.invalidate(); return false; } }); layout.addView(draw); } } DrawView.java代码如下: package Android.Demo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class DrawView extends View { public DrawView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.RED); canvas.drawCircle(currentX, currentY, 15, p); } public float currentX = 40; public float currentY = 40; } main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout> ============================================================================== 本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/05/16/2505374.html,如需转载请自行联系原作者

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

Yii 2 —— Model表前缀

1.1Model表前缀 在大多数系统中,对于数据库的表名称都喜欢在前面增加一个前缀,譬如ecshop系统的表名称,都有前缀“ecs_”,在它们的代码中到处充斥着如下代码: $GLOBALS['ecs']->table('goods') 这种代码的目的是把前缀“ecs”和后面的名称拼接起来获得“ecs_goods”这样实际的表名称。为什么不直接拼接字符串“ecs_”和“goods”?因为在安装时,是可以自己配置表前缀的,所以这里不能固定写死用字符串拼接。 在Yii的体系里,数据库的表是跟model对应的,表名称是在Model类的tableName()函数中返回的,为了处理表前缀的问题,在这个函数中返回表名称时,可以采用类似如下代码: public static functiontableName() { return'`user`'; } 可以看到,返回用户表名称不是直接返回user,而是`user`,在实际从数据库提取数据时,将%替换为表前缀。 如何配置应用的表前缀呢?在main.php的db参数中进行配置: return[ 'components'=> [ 'db'=> [ 'class'=>'yii\db\Connection', 'dsn'=>'mysql:host=localhost;dbname=liduoo', 'username'=>'root', 'password'=>'mysql', 'charset'=>'utf8', 'tablePrefix' => 'abc_', ], ], ]; 本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/1871258,如需转载请自行联系原作者

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

android152 笔记 2

27.谈谈UI中, Padding和Margin有什么区别? Padding 文字对边框, margin是控件对父窗体. 28. widget相对位置的完成在activity的哪个生命周期阶段实现。控件的宽度和高度在oncreat()方法里面拿不到因为还没有创建出来,一般在onResume()方法里面去拿。也可以在控件的onmeasure() 计算方法里面去拿,燃料后调用ondraw方法去绘制。 这个题没看懂… widget可以理解成桌面小控件, 也可以理解成 某个button, imageview这样的控件… onmeasure() // 计算 控件在屏幕上的位子 某个view 要显示在界面 ondraw 被显示到界面上的 . 29. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。主线程里面有一个looper死循环迭代消息队列,消息里面有handler来处理消息。 30. AIDL的全称是什么?如何工作? Android interface definition language (android接口定义语言) , 用来跨进程的访问方法, 访问远程的服务的方法. 一个作为客户端一个作为服务端。Java里面的IDL是java的跨进程访问的方法。 aidl里面是接口,服务端里面有aidl文件,并且会生成对应的java文件,在onbind方法里面返回的binder对象实现了这个接口,客户端就会拿到实现了接口的对象,就可以调用对象里面的方法,客户端也会有aidl文件和对应的java文件。在传递复杂类型对象的时候要实现Pacelble接口。 如何工作 day7 queryStudent .手机卫士 Itelephony 接口挂断电话. 31. 请解释下Android程序运行时权限与文件系统权限的区别。 Android程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 打电话,访问网络,获取坐标,读写sd卡,读写联系人等..安装的时候会提示用户… drwx 文件系统的权限是linux权限. 比如说sharedpreference里面的Context.Mode.private Context.Mode.world_read_able Context.Mode_world_writeable 777自己 同组 其他 32. 系统上安装了多种浏览器,能否指定某浏览器访问指定页面? 找到对应的浏览器的意图过滤器,传递数据URI , 激活这个意图 Intent intent = new Intent(); intent.setClassName(packageName, className); intent.seturi() 33. 对android主线程的运用和理解。 主ui线程不能执行耗时的操作, service,content provider,receive,activity这几个都是运行在主线程不能执行耗时的操作,activity5秒,receive10秒,service20秒,content provider5秒。 本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5164982.html,如需转载请自行联系原作者

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

Android Service的思考(2

第二种是通过绑定的方式来启动Service。先看流程图,点击放大。 在这里我们使用了this.bindService(intent, myServiceConnection, Context.BIND_AUTO_CREATE); 来启动Service,当Service创建了同时绑定了之后,会回调我们定义的ServiceConnection(),从而传回IBinder接口,我们就能够调用Service中的方法了。这时候Activity就和Service实现了绑定,Activity退出了Service就相应的退出了。 <service android:enabled="true" android:name=".service.mediaplayer.BindMusicService"> <intent-filter> <action android:name="com.androidtest.service.mediaplayer.BindMusicService" /> </intent-filter> </service> 主要代码如下: ?[Copy to clipboard] Downloadzuiniuwang.java /** *BinderMusicPlayerActivity.java *com.androidtest.activity.musicplayer * *Function:TODO * *verdateauthor *────────────────────────────────── *2011-5-17Leon * *Copyright(c)2011,TNTAllRightsReserved. */ packagecom.androidtest.activity.musicplayer; importcom.androidtest.R; importcom.androidtest.service.mediaplayer.BindMusicService; importcom.androidtest.service.mediaplayer.MyBinder; importcom.androidtest.service.mediaplayer.MyMediaController; importandroid.app.Activity; importandroid.content.ComponentName; importandroid.content.Context; importandroid.content.Intent; importandroid.content.ServiceConnection; importandroid.os.Bundle; importandroid.os.IBinder; importandroid.util.Log; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; /** *ClassName:BinderMusicPlayerActivityFunction:TODOADDFUNCTIONReason:TODO *ADDREASON * *@authorLeon *@version *@sinceVer1.1 *@Date2011-5-17 */ publicclassBinderMusicPlayerActivityextendsActivityimplements OnClickListener{ privatestaticfinalStringTAG=BinderMusicPlayerActivity.class .getSimpleName(); privateBindMusicServicebindMusicService; privateButtonplayButton,pauseButton,stopButton,closeActivityButton, exitActivityButton; @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); Log.v(TAG,TAG+"onCreate()"); this.setContentView(R.layout.music_player_layout); findViews(); bindViews(); connection(); } privatevoidfindViews(){ playButton=(Button)this.findViewById(R.id.play); pauseButton=(Button)this.findViewById(R.id.pause); stopButton=(Button)this.findViewById(R.id.stop); closeActivityButton=(Button)this.findViewById(R.id.close); exitActivityButton=(Button)this.findViewById(R.id.exit); } privatevoidbindViews(){ playButton.setOnClickListener(this); pauseButton.setOnClickListener(this); stopButton.setOnClickListener(this); closeActivityButton.setOnClickListener(this); exitActivityButton.setOnClickListener(this); } privatevoidconnection(){ Log.v(TAG,TAG+"connection"); Intentintent=newIntent("com.androidtest.service.mediaplayer.BindMusicService"); this.startService(intent); this.bindService(intent,myServiceConnection,Context.BIND_AUTO_CREATE); } @Override publicvoidonClick(Viewview){ //TODOAuto-generatedmethodstub //TODOAuto-generatedmethodstub switch(view.getId()){ caseR.id.play: Log.d(TAG,"play......."); MyMediaController.play.execute(); break; caseR.id.pause: Log.d(TAG,"pause......."); MyMediaController.pause.execute(); break; caseR.id.stop: Log.d(TAG,"stop......."); MyMediaController.stop.execute(); break; caseR.id.close: Log.d(TAG,"close......."); this.finish(); break; caseR.id.exit: Log.d(TAG,"exit......."); this.finish(); this.stopService(newIntent("com.androidtest.service.mediaplayer.BindMusicService")); } } //调用bindService后Service调用onBind()后回调此函数 privateServiceConnectionmyServiceConnection=newServiceConnection(){ @Override publicvoidonServiceConnected(ComponentNamename,IBinderbinder){ Log.v(TAG,TAG+"onServiceConnected"); //TODOAuto-generatedmethodstub bindMusicService=((MyBinder)binder).getService(); //给Controller设置Service初始化的MediaPlayer MyMediaController.mediaPlayer=bindMusicService.getMyMediaPlayer(); } @Override publicvoidonServiceDisconnected(ComponentNamename){ //TODOAuto-generatedmethodstub bindMusicService=null; Log.v(TAG,"..............onServiceDisconnected"); } }; //当Activityfinish时必须解绑不然会出现溢出 publicvoidfinish(){ //TODOAuto-generatedmethodstub super.finish(); this.unbindService(myServiceConnection); } } /** *BindMusicService.java *com.androidtest.service.mediaplayer * *Function:TODO * *verdateauthor *────────────────────────────────── *2011-5-16Leon * *Copyright(c)2011,TNTAllRightsReserved. */ packagecom.androidtest.service.mediaplayer; importcom.androidtest.R; importandroid.app.Service; importandroid.content.Intent; importandroid.media.MediaPlayer; importandroid.os.IBinder; importandroid.util.Log; /** *ClassName:BindMusicService *Function:TODOADDFUNCTION *Reason:TODOADDREASON * *@authorLeon *@version *@sinceVer1.1 *@Date2011-5-16 */ publicclassBindMusicServiceextendsService{ privatestaticfinalStringTAG=BindMusicService.class.getSimpleName(); privateMediaPlayermyMediaPlayer; privateIBinderbinder=newMyBinder(this); publicMediaPlayergetMyMediaPlayer(){ returnmyMediaPlayer; } publicvoidsetMyMediaPlayer(MediaPlayermyMediaPlayer){ this.myMediaPlayer=myMediaPlayer; } @Override publicIBinderonBind(Intentintent){ Log.v(TAG,TAG+"onBind"); //TODOAuto-generatedmethodstub returnbinder; } @Override publicvoidonCreate(){ //TODOAuto-generatedmethodstub super.onCreate(); if(myMediaPlayer==null){ myMediaPlayer=MediaPlayer.create(this,R.raw.test); myMediaPlayer.setLooping(false); } Log.v(TAG,TAG+"onCreate()"); } @Override publicvoidonDestroy(){ //TODOAuto-generatedmethodstub super.onDestroy(); Log.v(TAG,TAG+"onDestroy()"); if(myMediaPlayer!=null){ myMediaPlayer.stop(); myMediaPlayer.release(); } } //通过bindService的方式,onStart函数不会调用 @Override publicvoidonStart(Intentintent,intstartId){ //TODOAuto-generatedmethodstub super.onStart(intent,startId); Log.v(TAG,TAG+"onStart()"); } @Override publicbooleanonUnbind(Intentintent){ //TODOAuto-generatedmethodstub Log.v(TAG,TAG+"onUnbind,成功没有?"+super.onUnbind(intent)); returntrue; } @Override publicvoidonRebind(Intentintent){ //TODOAuto-generatedmethodstub Log.v(TAG,TAG+"onRebind()----------------------------------->"); super.onRebind(intent); } } /** *MyBinder.java *com.androidtest.service.mediaplayer * *Function:TODO * *verdateauthor *────────────────────────────────── *2011-5-17Leon * *Copyright(c)2011,TNTAllRightsReserved. */ packagecom.androidtest.service.mediaplayer; importandroid.os.Binder; /** *ClassName:MyBinderFunction:TODOADDFUNCTIONReason:TODOADDREASON * *@authorLeon *@version *@sinceVer1.1 *@Date2011-5-17 */ publicclassMyBinderextendsBinder{ privateBindMusicServicebindMusicService; publicMyBinder(BindMusicServicebindMusicService){ this.bindMusicService=bindMusicService; }; publicBindMusicServicegetService(){ returnbindMusicService; } 本文转自 最牛傻蛋 51CTO博客,原文链接:http://blog.51cto.com/zuiniuwang/718313,如需转载请自行联系原作者

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

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

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

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