也不想多说多,就拿几点来给大家分享吧:

  • 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 对象就行,之后的操作都是一致的。

好了,虽然就这几个小技巧,但还算是比较实用滴。。。

更多相关文章

  1. android google 分屏 多窗口 按home键界面错乱故障分析(一)分屏的
  2. 分享几点Android(安卓)开发中的小技巧吧。不知道算不算?
  3. 自己看的,随便写,贴。关于Android里面的Style(样式)和主题(Theme)资源
  4. android 调用系统文件管理器
  5. Android(安卓)启动过程框架
  6. Android菜鸟实训的第一天
  7. 分享几点Android(安卓)开发中的小技巧
  8. AndroidStudio Build过程解析
  9. NPM 和webpack 的基础使用

随机推荐

  1. android 常见的一些异常和错误
  2. Android之开源控件ViewFLow学习笔记【含
  3. [Android(安卓)性能优化系列]布局篇之减
  4. android中关于微信支付流程的总结
  5. 竖直方向,一次滚动一个页面的封装库。
  6. Android—Service与Activity的交互
  7. windows系统上安装与使用Android(安卓)ND
  8. android webView加载网络视频
  9. Android(安卓)动画animation 深入分析
  10. RK系列SDK -- 多路设备同时输出声音(Andro