首页 文章 精选 留言 我的

精选列表

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

分享几点Android 开发中的小技巧吧。不知道算不算?

也不想多说多,就拿几点来给大家分享吧: Android 在XML里面共享同一布局文件 使用XML的方式为背景添加渐变的效果 如何用代码自定义Android 自动生成的标题? 在ActivityGroup里面如何访问子Activity的View 并操作它去改变UI? 就上面四点吧,这些好像在搜索里面不大搜索得到,我今天就拿出来讲讲,好像己经有几个星期没有更新过博客的Android 文章了,呵呵,之前承诺的Ebook 源码也没有跟上,最近人懒,刚买的Ipad 一直在玩,荒废了学业呢。。。。。 好吧。废话不多说了,一个个说吧。 1.Android 在XMl里面共享同一布局文件 一直以为共享同一布局文件都是在之前写好的布局之后复制过来,或者通过 java代码使用layoutInflater Add进来的。但今天提供了一个更为方便的使用方法,可以在你的任意LAYOUT文件里面将其他的LAYOUT文件拿过来使用,代码也很简单,如下: <? xmlversion="1.0"encoding="UTF-8" ?> < LinearLayout android:id ="@+id/FrameLayout01" android:background ="@drawable/layout_background" android:layout_width ="fill_parent" android:layout_height ="wrap_content" xmlns:android ="http://schemas.android.com/apk/res/android" > < TextView android:text ="欢迎你使用本软件" android:id ="@+id/TextView01" android:textColor ="#f0f0f0" android:layout_width ="wrap_content" android:layout_height ="wrap_content" ></ TextView > </ LinearLayout > 这是我定义的公用layout 文件,我给他起名为:title 然后我们在另外的布局文件如下使用: < include layout ="@layout/title" /> 即可将title 的布局直接拿到我们当前的布局文件中。 Tip:使用include标记将layout 放入我们当前的layout文件,也可以直接使用当前view .findViewByid得到title 布局文件中的任意View 。 2.使用XML的方式为背景添加渐变的效果 为背景实现渐变效果,最传统的方法是用PS制作一张渐变的效果图,但我人懒 没去学PS技术,也懒得更增加一个图片在应用里面,这里使用了Google 提供的一个非常棒的方法来解决背景渐变的功能。 首先,在Drawable 文件夹里面添加一个xml文件,然后写入如下代码: <? xmlversion="1.0"encoding="UTF-8" ?> < shape xmlns:android ="http://schemas.android.com/apk/res/android" > < gradient android:startColor ="#52adcd" android:endColor ="#1c87b1" android:angle ="270.0" > </ gradient > </ shape > 对应属性比较简单,这里不多做介绍,android:shape="rectangle" 为代表渐变的形状为矩形块。android:angle ="270.0"代表角度为270,由上到下的渐变,如果我改变成0那么就变成了从左到右的渐变,如果改变90.0那么渐变会从下边往下渐变,朋友们可以多改变一下参数试试效果。 发个效果图吧: Tip:效果图用的角度是0。 3.如何用代码自定义Android 自动生成的标题? 这个比较简单只用了三句代码: requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title); 效果如下图: Tip:这三句代码的位置必须如上代码。 4.在ActivityGroup里面如何访问子Activity的View 并操作它去改变UI? 要知道如何在ActivityGroup里面操作子Activity的布局View 那么得先了解一下,如何将Activity放入ActivityGroup 里面,这里我封装了一个小小的方法,公供参考: /** *为ActivityGroup的一个ViewGroup设置动态的ActivityView对象 * * @param 上下文 * @param LocalActivityManager对象 * @param ActivityGroup想要包容Activity *View对象的容器(ViewGroup) * @param 通过Intent的意图打算启用哪个Activity类 * @param 开始Activity *设置的Id */ public static void getView(Contextcontext,LocalActivityManagerlam, LinearLayoutlayout_load,Class <?> cls,StringId){ Intentintent = new Intent(context,cls); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); Windoww = lam.startActivity(Id,intent); Viewv = w.getDecorView(); layout_load.removeAllViews(); layout_load.setPadding( 5 , 5 , 5 , 5 ); layout_load.addView(v, new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT)); } 然后在ActivityGroup页面如此使用: private LocalActivityManagermanager; // 声明一个LocalActivityManager对象 manager = getLocalActivityManager(); // 得到这个对象 界面初始化时: /** *初始化 */ void init(){ comonHelp.getView( this ,manager,main,preferenceSet. class , " swc " ); } 有了设置的ID了,那就可以得到当前的Activity 了。 下面给出我用过的一段代码,以作参考: SharedPreferences.Editoreditor = getSharedPreferences( " com.swc.yaomei_preferences " , Activity.MODE_PRIVATE).edit(); LocalActivityManagermanager = getLocalActivityManager(); PreferenceActivityacitivty = (PreferenceActivity)manager .getActivity( " swc " ); for ( int i = 0 ;i < 9 ;i ++ ){ editor.putString( " KEY_ " + i, " N/A " ); PreferenceScreenExtext = (PreferenceScreenExt)acitivty .findPreference( " KEY_ " + i); RelativeLayoutlayout = (RelativeLayout)ext .getLayout(); TextViewsummary = (TextView)layout.getChildAt( 1 ); summary.setText( " N/A " ); } editor.commit(); System.gc(); 上面的PreferenceActivity是得到一个PreferenceAcitity 因为我是要修改位于ActivityGroup里面对应的Preference所以这里要获得一个PreferenceAcitity ,如果你是一个普通的Activity 直接得到一个Activity 对象就行,之后的操作都是一致的。 好了,虽然就这几个小技巧,但还算是比较实用滴。。。 本文转自 terry_龙 51CTO博客,原文链接:http://blog.51cto.com/terryblog/408151,如需转载请自行联系原作者

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

Java微服务开发指南 -- 下一步该了解什么?

下一步该了解什么? 我们在这本小册子里面介绍了非常多的知识,但是它远远不够涵盖一切!我们需要知道,这只是冰山一角,有非常多的微服务所涉及到的领域在本书中没有探讨。在最后这个章节,我们将会简要的介绍一些你必须了解的概念,并将这些联系留给读者进行深入研究。 配置 配置(Configuration)是分布式系统中非常重要的部分,而在微服务架构中变得愈发重要和困难。我们需要在配置和不可变递交(Immutable delivery)之间寻求平衡,因为我们不希望出现服务的碎片化。例如:我们需要能够改变日志级别,在A/B测试上切换特性,配置数据库连接或者使用秘钥或者密码,我们回顾之前介绍的三个Java微服务框架,但是每个框架的配置方式略微不同,那么在非Java环境下的微服务配置方式又会变成什么样子呢? 如果以配置的形式存在,不同的需求就

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

Android UI开发第二十三篇——分享书架UI实现

android中有很多的电子书阅读应用,应用中都仿真了书架的实现,这里也分享一篇读书应用的书架实现: java: public class ShelvesView extends GridView { private Bitmap mShelfBackground; private int mShelfWidth; private int mShelfHeight; private Bitmap mWebLeft; private Bitmap mWebRight; private int mWebRightWidth; public ShelvesView(Context context) { super(context); init(context); } public ShelvesView(Context context, AttributeSet attrs) { super(context, attrs); load(context, attrs, 0); init(context); } public ShelvesView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); load(context, attrs, defStyle); init(context); } private void load(Context context, AttributeSet attrs, int defStyle) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ShelvesView, defStyle, 0); final Resources resources = getResources(); final int background = a.getResourceId(R.styleable.ShelvesView_shelfBackground, 0); final Bitmap shelfBackground = BitmapFactory.decodeResource(resources, background); if (shelfBackground != null) { mShelfWidth = shelfBackground.getWidth(); mShelfHeight = shelfBackground.getHeight(); mShelfBackground = shelfBackground; } mWebLeft = BitmapFactory.decodeResource(resources, R.drawable.web_left); final Bitmap webRight = BitmapFactory.decodeResource(resources, R.drawable.web_right); mWebRightWidth = webRight.getWidth(); mWebRight = webRight; a.recycle(); } private void init(Context context) { StateListDrawable drawable = new StateListDrawable(); SpotlightDrawable start = new SpotlightDrawable(context, this); start.disableOffset(); SpotlightDrawable end = new SpotlightDrawable(context, this, R.drawable.spotlight_blue); end.disableOffset(); TransitionDrawable transition = new TransitionDrawable(start, end); drawable.addState(new int[] { android.R.attr.state_pressed }, transition); final SpotlightDrawable normal = new SpotlightDrawable(context, this); drawable.addState(new int[] { }, normal); normal.setParent(drawable); transition.setParent(drawable); setSelector(drawable); setDrawSelectorOnTop(false); } @Override protected void dispatchDraw(Canvas canvas) { final int count = getChildCount(); final int top = count > 0 ? getChildAt(0).getTop() : 0; final int shelfWidth = mShelfWidth; final int shelfHeight = mShelfHeight; final int width = getWidth(); final int height = getHeight(); final Bitmap background = mShelfBackground; for (int x = 0; x < width; x += shelfWidth) { for (int y = top; y < height; y += shelfHeight) { canvas.drawBitmap(background, x, y, null); } } if (count == 0) { canvas.drawBitmap(mWebLeft, 0.0f, top + 1, null); canvas.drawBitmap(mWebRight, width - mWebRightWidth, top + shelfHeight + 1, null); } super.dispatchDraw(canvas); } @Override public void setPressed(boolean pressed) { super.setPressed(pressed); final Drawable current = getSelector().getCurrent(); if (current instanceof TransitionDrawable) { if (pressed) { ((TransitionDrawable) current).startTransition( ViewConfiguration.getLongPressTimeout()); } else { ((TransitionDrawable) current).resetTransition(); } } } } 代码:http://download.csdn.net/detail/xyz_lmn/4698124 本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230767,如需转载请自行联系原作者

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

老罗Android开发视频教程 (android常用UI编程) 25集集合

(android常用UI编程)第一集TextView如何显示丰富的文本http://www.apkbus.com/android-94717-1-1.html (android常用UI编程)第二集TextView显示表情图像和文字http://www.apkbus.com/android-94718-1-1.html (android常用UI编程)第三集TextView单击链接弹出Activityhttp://www.apkbus.com/android-94719-1-1.html (android常用UI编程)第四集TextView实现跑马灯效果http://www.apkbus.com/android-94720-1-1.html (android常用UI编程)第五集EditText输入表情图像http://www.apkbus.com/android-94721-1-1.html (android常用UI编程)第六集EditText中输入特定的字符http://www.apkbus.com/android-94764-1-1.html (android常用UI编程)第七集AutoCompleteTextView自动完成输入内容http://www.apkbus.com/android-94765-1-1.html (android常用UI编程)第八集Button按钮的焦点变化http://www.apkbus.com/android-94766-1-1.html (android常用UI编程)第九集Button图文混排的按钮http://www.apkbus.com/android-94767-1-1.html (android常用UI编程)第十集RadioButton单选按钮的使用http://www.apkbus.com/android-94768-1-1.html (android常用UI编程)第十一集ToggleButton按钮的使用http://www.apkbus.com/android-94769-1-1.html (android常用UI编程)第十二集CheckBox复选框控件使用http://www.apkbus.com/android-94770-1-1.html (android常用UI编程)第十三集SeekBar拖动控件的使用http://www.apkbus.com/android-94771-1-1.html (android常用UI编程)第十四集ImageView的基本用法http://www.apkbus.com/android-94772-1-1.html (android常用UI编程)第十五集ImageView实现适屏和裁剪图片的功能http://www.apkbus.com/android-94774-1-1.html (android常用UI编程)第十六集ImageView实现图片旋转和缩放功能http://www.apkbus.com/android-94775-1-1.html (android常用UI编程)第十七集ImageView从网络上获取图像http://www.apkbus.com/android-94777-1-1.html (android常用UI编程)第十八集DatePicker输入日期控件的使用http://www.apkbus.com/android-94778-1-1.html (android常用UI编程)第十九集时间对话框的使用http://www.apkbus.com/android-94779-1-1.html (android常用UI编程)第二十集ProgressBar进度条的使用http://www.apkbus.com/android-94780-1-1.html (android常用UI编程)第二十一集RatingBar评分控件的使用http://www.apkbus.com/android-94781-1-1.html (android常用UI编程)第二十二集ScrollView垂直滚动控件的使用http://www.apkbus.com/android-94783-1-1.html (android常用UI编程)第二十三集HorizontalScrollView水平滚动控件的使用http://www.apkbus.com/android-94786-1-1.html (android常用UI编程)第二十四集Gallery画廊控件http://www.apkbus.com/android-94787-1-1.html (android常用UI编程)第二十五集Spinner下拉列表控件http://www.apkbus.com/android-94788-1-1.html 本文转自qianqianlianmeng博客园博客,原文链接:http://www.cnblogs.com/aimeng/archive/2013/01/31/2888057.html ,如需转载请自行联系原作者

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

Android开发之DatePickerDialog与TimePickerDialog的功能和使用方法具体解释

DatePickerDialog与TimePickerDialog的功能比較简单,使用方法也非常easy。仅仅要以下两步就可以。 Ø通过newkeyword创建DatePickerDialog、TimePickerDialog实例。调用它们的show()方法就可以将日期选择对话框、时间选择对话框显示出来。 Ø为DatePickerDialog、TimePickerDialog绑定监听器,这样能够保证用户通过DatePickerDialog、TimePickerDialog设置事件是触发监听器,从而通过监听器来获取用户设置的事件。 TimePickerDialog(时间选择对话框) 概述: 一个使用TimePicker的对话框,为用户提供时间选择。 类结构: java.lang.Object ↳ android.app.Dialog ↳ android.app.AlertDialog ↳ android.app.TimePickerDialog 构造方法: Public Constructors TimePickerDialog(Contextcontext,TimePickerDialog.OnTimeSetListenercallBack, int hourOfDay, int minute, boolean is24HourView) TimePickerDialog(Contextcontext, int theme,TimePickerDialog.OnTimeSetListenercallBack, int hourOfDay, int minute, boolean is24HourView) 说明: publicTimePickerDialog(Contextcontext,TimePickerDialog.OnTimeSetListenercallBack,inthourOfDay, int minute, boolean is24HourView) 參数: 參数 说明 Context 执行组件的Activity。 callBack 用户选择好时间后。通知应用的回调函数。 hourOfDay 初始的小时。 Minute 初始的分钟。 is24HourView 是否使用24小时制。 publicTimePickerDialog(Contextcontext,int teme,TimePickerDialog.OnTimeSetListenercallBack,int hourOfDay, int minute, boolean is24HourView) 參数: 參数 说明 Context 执行组件的Activity。 teme 应用在时间选择对话框上的主题。 callBack 用户选择好时间后,通知应用的回调函数。 hourOfDay 初始的小时。 Minute 初始的分钟。 is24HourView 是否使用24小时制。 公有方法: Public Methods void onClick(DialogInterfacedialog, int which) 当对话框上的button被单击时这种方法将被回调。 void onRestoreInstanceState(BundlesavedInstanceState) 从前一个保存的bundle中恢复对话框的状态。 Bundle onSaveInstanceState() 将对话框的状态保存到bundle中. void onTimeChanged(TimePickerview, int hourOfDay, int minute) 当时间被关改变的时候回调该方法。 void updateTime(int hourOfDay, int minutOfHour) 更新时间 实例: public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker final Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); // Create a new instance of TimePickerDialog and return it return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); } public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // Do something with the time chosen by the user } } DatePickerDialog(时间选择对话框) 概述: 一个带有的DatePicker的简单对话框,为用户提供日期选择。 类结构: java.lang.Object ↳ android.app.Dialog ↳ android.app.AlertDialog ↳ android.app.DatePickerDialog 构造方法: Public Constructors DatePickerDialog(Contextcontext,DatePickerDialog.OnDateSetListenercallBack, int year, int monthOfYear, int dayOfMonth) DatePickerDialog(Contextcontext, int theme,DatePickerDialog.OnDateSetListenercallBack, int year, int monthOfYear, int dayOfMonth) 说明: publicDatePickerDialog(Contextcontext,DatePickerDialog.OnDateSetListenercallBack, int year, int monthOfYear, intdayOfMonth) 參数: 參数 说明 Context 执行组件的Activity。 callBack 用户选择好日期后,通知应用的回调函数。 year 初始的年。 monthOfYear 初始的月。 dayOfMonth 初始的天。 publicDatePickerDialog(Contextcontext, int theme,DatePickerDialog.OnDateSetListenercallBack, int year, int monthOfYear, intdayOfMonth) 參数: 參数 说明 Context 执行组件的Activity。 theme 应用在日期选择对话框上的主题。 callBack 用户选择好日期后,通知应用的回调函数。 year 初始的年。 monthOfYear 初始的月。 dayOfMonth 初始的天。 公有方法: Public Methods DatePicker getDatePicker() 获取日期选择对话框。 void onClick(DialogInterfacedialog, int which) 当对话框上的button被单击时这种方法将被回调。 void onDateChanged(DatePickerview, int year, int month, int day) 当日期改变的时候回调该方法。 void onRestoreInstanceState(BundlesavedInstanceState) 当对话框上的button被单击时这种方法将被回调。 Bundle onSaveInstanceState() 将对话框的状态保存到bundle中。 void updateDate(int year, int monthOfYear, int dayOfMonth) 设置当前日期。 实例: public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { // Do something with the date chosen by the user } } 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5250343.html,如需转载请自行联系原作者

资源下载

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

Sublime Text

Sublime Text

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

用户登录
用户注册