首页 文章 精选 留言 我的

精选列表

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

android手动调用振动器(Vibrator)

Vibrator vv=(Vibrator) getApplication().getSystemService(Service.VIBRATOR_SERVICE); vv.vibrate(500);//震半秒钟 vv.vibrate(new long[]{10, 100, 20, 200}, -1); 关于vv.vibrate(new long[]{10, 100, 20, 200}, -1); 参数1:表示停10ms, 震100ms, 停20ms,震200ms 参数2:-1 表示不重复,非-1表示从指定的下标开始重复震动! 注意 :如第二个参数是0, 则一圈一圈的循环震动下去了;如果是2,这第一遍震动后,从"20”这个参数开始再循环震动! 一般用vv.vibrate(500);//震半秒钟就行了 vv.cancel();//停止震动,基本只有在循环震动时才用得到这个 本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2011/09/21/2184132.html,如需转载请自行联系原作者

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

android 中文 API (41) —— RatingBar.OnRatingBarChangeListener

正文 一、结构 public static interfaceRatingBar.OnRatingBarChangeListener 二、概述 当评分等级改变时通知客户端的回调函数。这包括用户通过手势、方向键或轨迹球触发的改变,以及编程触发的改变。 三、公共方法 public abstract void onRatingChanged (RatingBar ratingBar, float rating, boolean fromUser) 通知评分等级已经被修改。客户端可以使用fromUser参数区分用户触发的改变还是编程触发的改变。当用户拖拽时,将不会连续不断的被调用,仅仅当用户最终离开触摸结束评分时调用。 参数 ratingBar评分修改的RatingBar rating 当前评分分数。取值范围为0到星型的数量。 fromUser 如果评分改变是由用户触摸手势或方向键轨迹球移动触发的,则返回true 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582615,如需转载请自行联系原作者

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

Android 中文 API (27) —— SeekBar.OnSeekBarChangeListener

正文 一、结构 public static interfaceSeekBar.OnSeekBarChangeListener 二、概述 当进度改变后用于通知客户端的回调函数。包括用户通过手势、方向键或轨迹球触发的改变,以及编程触发的改变。 三、 公共方法 public abstract void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser) 通知进度已经被修改。客户端可以使用fromUser参数区分用户触发的改变还是编程触发的改变。 参数 seekBar当前被修改进度的SeekBar progress当前的进度值。此值的取值范围为0到max之间。Max为用户通过setMax(int)设置的值,默认为100 fromUser如果是用户触发的改变则返回True public abstract void onStartTrackingTouch (SeekBar seekBar) 通知用户已经开始一个触摸拖动手势。客户端可能需要使用这个来禁用seekbar的滑动功能。 参数 seekBar触摸的SeekBar public abstract void onStopTrackingTouch (SeekBar seekBar) 通知用户触摸手势已经结束。户端可能需要使用这个来启用seekbar的滑动功能。 参数 seekBar触摸的SeekBar 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582652,如需转载请自行联系原作者

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

Android Handler Message总结一下

当应用程序启动时,会开启一个主线程(也就是UI线程)。由她来管理UI。监听用户点击。来响应用户并分发事件等。所以一般在主线程中不要运行比較耗时的操作,如联网下载数据等,否则出现ANR错误。所以就将这些操作放在子线程中。可是因为AndroidUI线程是不安全的。所以仅仅能在主线程中更新UI。Handler就是用来 子线程和创建Handler的线程进行通信的。 Handler的使用分为两部分: 一部分是创建Handler实例,重载handleMessage方法,来处理消息。 [java] view plain copy mProgressHandler=newHandler() { publicvoidhandleMessage(Messagemsg) { super.handleMessage(msg); } }; 当然,也可继承自Handler,相同要实现handleMessage(Message msg)方法。 [java] view plain copy classMyHandlerextendsHandler{ publicMyHandler(){ } //子类必须重写此方法,接受数据 @Override publicvoidhandleMessage(Messagemsg){ //TODOAuto-generatedmethodstub Log.d("MyHandler","handleMessage......"); super.handleMessage(msg); } } 还有一部分是分发Message 或者Runable对象到Handler所在的线程中,一般Handler在主线程中。 Handler中分发消息的一些方法 post(Runnable) postAtTime(Runnable,long) postDelayed(Runnable long) sendEmptyMessage(int what) sendMessage(Message) sendMessageAtTime(Message,long) sendMessageDelayed(Message,long) handler本身不仅能够发送消息。还能够用post的方式加入一个实现Runnable接口的匿名对象到消息队列中。在目标收到消息后就能够回调的方式在自己的线程中运行run的方法体。 Message [java] view plain copy Messagemessage=Message.obtain(); message.arg1=1; message.arg2=2; message.obj="Demo"; message.what=3; BundlebundleData=newBundle(); bundleData.putString("Name","Lucy"); message.setData(bundleData); Message 能够传递的參数有: 1. arg1 arg2 整数类型,是setData的低成本替代品。 传递简单类型 2. Object 类型 obj 3. what 用户自己定义的消息代码。这样接受者能够了解这个消息的信息。每一个handler各自包括自己的消息代码,所以不用操心自己定义的消息跟其它handlers有冲突。 4.其它的能够通过Bundle进行传递 Message能够通过new Message构造来创建一个新的Message,可是这样的方式非常不好,不建议使用。 最好使用Message.obtain()来获取Message实例,它创建了消息池来处理的。 公共构造器 public Message() 构造器(可是获取Message对象的最好方法是调用Message.obtain())。 例如以下这些通过Message.obtain方式获取Message实例,參数中传递了Handler,发送该消息时不再使用handler.sendMessage这样的方式。使用message.sendToTarget();只是归根究竟都是调用Handler.sendMessage进行发送消息。 Message类中保存Handler实例。 public static Message obtain(Handler h, int what, int arg1, int arg2, Object obj) 与obtain()一样,可是设置了target, what, arg1, arg2和obj的值。 參数 h设置的target值 what设置的what值 arg1设置的arg1值 arg2设置的arg2值 obj设置的obj值 返回值 从全局池中分配的一个Message对象。 public static Message obtain(Handler h, int what, Object obj) 与obtain()一样,可是设置了target, what和obj的值。 參数 h设置的target值 what 设置的what值 obj设置的obj值 返回值 从全局池中分配的一个Message对象。 public static Messageobtain(Handler h, int what) 与obtain()一样,可是设置了target和what的值。 參数 h target的值 what what的值 返回值 从全局池中分配的一个Message对象。 public static Message obtain(Handler h) 与obtain()一样,可是设置了target的值 參数 h消息对象的target成员的值 返回值 从全局池中分配的一个Message对象。 public static Message obtain(Handler h, Runnable callback) 与obtain(Handler)一样,可是设置回调函数,在Message返回时调用。 參数 h消息对象的target成员的值 callback当消息处理时会调用的回调函数 返回值 从全局池中分配的一个Message对象。 public static Message obtain() 从全局池中返回一个新的Message实例。在大多数情况下这样能够避免分配新的对象。 public static Message obtain(Handler h, int what, int arg1, int arg2) 与obtain()一样,可是设置了target, what, arg1和arg2的值 參数 h设置的targe值 what设置的what值 arg1设置的arg1值 arg2设置的arg2值 返回值 从全局池中分配的一个Message对象。 public static Message obtain(Message obj) 同obtain()。可是从一个已存在的消息中拷贝值(包含它的目标)。 參数 orig要拷贝的源消息 返回值 从全局池中分配的一个Message对象。 public Bundle peekData() 与getData()相似,可是并不延迟创建Bundle。假设Bundle对象不存在返回null。很多其它信息见getData()。 參考 getData() setData(Bundle) public void recyle() 向全局池中返回一个Message实例。一定不能在调用此函数后再使用Message——它会马上被释放。 public void sendToTarget() 向Handler发送此消息。getTarget()方法能够获取此Handler。假设这个字段没有设置会抛出个空指针异常。 public void setData(Bundle data) 设置一个随意数据值的Bundle对象。 假设能够,使用arg1和arg2域发送一些整型值以降低消耗。 參考 getData() peekData() public void setTarget(Handler target) 设置将接收此消息的Handler对象。 PS: 线程安全和线程不安全 线程安全就是多线程訪问时,採用了加锁机系统。当一个线程访问一个数据类。保护,其他线程不能被访问,直到线程完成读,使用前其他线程。 没有数据不一致或数据污染。 线程安全是不提供数据访问保护,可能有一个以上的线程已使改变的数据而获得的数据是脏数据 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5036662.html,如需转载请自行联系原作者

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

android中dip、px相互换算

1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这 这个,不依赖像素。 这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常显示。在屏幕密度为160的显示屏上,1dip=1px,有时候可能你的屏幕分辨率很大如480*800,但是屏幕密度没有正确设置比如说还是160,那么这个时候凡是使用dip的都会显示异常,基本都是显示过小。 dip的换算: dip(value)=(int) (px(value)/1.5 + 0.5) 2. dp: 很简单,和dip是一样的。 3. px: pixels(像素),不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就永远是多少不会改变。 4. sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。 备注: 根据google的推荐,像素统一使用dip,字体统一使用sp 举个例子区别px和dip: px就是像素,如果用px,就会用实际像素画,比个如吧,用画一条长度为240px的横线,在480宽的模拟器上看就是一半的屏宽,而在320宽的模拟器上看就是2/3的屏宽了。 而dip,就是把屏幕的高分成480分,宽分成320分。比如你做一条160dip的横线,无论你在320还480的模拟器上,都是一半屏的长度。public static int dip2px(Context context, float dipValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(dipValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue / scale + 0.5f); } 本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2011/11/03/2234165.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,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

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文件系统,支持十年生命周期更新。

用户登录
用户注册