`
825288003
  • 浏览: 110871 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

用XML的方式为背景添加渐变的效果

阅读更多
•Android 在XML里面共享同一布局文件
•使用XML的方式为背景添加渐变的效果
•如何用代码自定义Android 自动生成的标题?
•在ActivityGroup里面如何访问子Activity的View 并操作它去改变UI?
就上面四点吧,这些好像在搜索里面不大搜索得到,我今天就拿出来讲讲,好像己经有几个星期没有更新过博客的Android 文章了,呵呵,之前承诺的Ebook 源码也没有跟上,最近人懒,刚买的Ipad 一直在玩,荒废了学业呢。。。。。

好吧。废话不多说了,一个个说吧。

1.Android 在XMl里面共享同一布局文件
一直以为共享同一布局文件都是在之前写好的布局之后复制过来,或者通过 java代码使用layoutInflater Add进来的。但今天提供了一个更为方便的使用方法,可以在你的任意LAYOUT文件里面将其他的LAYOUT文件拿过来使用,代码也很简单,如下:

1
2
3
4
5
6
7
8
9
<?xml version="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

然后我们在另外的布局文件如下使用:

1
<include layout="@layout/title" />
即可将title 的布局直接拿到我们当前的布局文件中。

Tip:使用include标记将layout 放入我们当前的layout文件,也可以直接使用当前 view .findViewByid得到title 布局文件中的任意View 。

2.使用XML的方式为背景添加渐变的效果
为背景实现渐变效果,最传统的方法是用PS制作一张渐变的效果图,但我人懒 没去学PS技术,也懒得更增加一个图片在应用里面,这里使用了Google 提供的一个非常棒的方法来解决背景渐变的功能。

首先,在Drawable 文件夹里面添加一个xml文件,然后写入如下代码:

1
2
3
4
5
6
7
8
9
10
<?xml version="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 自动生成的标题?
这个比较简单只用了三句代码:

1
2
3
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 里面,这里我封装了一个小小的方法,公供参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
     /**
     * 为ActivityGroup的一个ViewGroup设置动态的Activity View 对象
     *
     * @param 上下文
     * @param LocalActivityManager对象
     * @param ActivityGroup想要包容Activity
     *            View 对象的容器(ViewGroup)
     * @param 通过Intent的意图打算启用哪个Activity类
     * @param 开始Activity
     *            设置的Id
     */
    public static void getView(Context context, LocalActivityManager lam,
            LinearLayout layout_load, Class<?> cls, String Id) {
        Intent intent = new Intent(context, cls);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        Window w = lam.startActivity(Id, intent);
        View v = 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页面如此使用:

1
2
private LocalActivityManager manager; //声明一个LocalActivityManager对象
manager = getLocalActivityManager();  //得到这个对象
界面初始化时:

1
2
3
4
5
6
     /**
     * 初始化
     */
    void init() {
        comonHelp.getView(this, manager, main, preferenceSet.class, "swc");
    }
有了设置的ID了,那就可以得到当前的Activity 了。

下面给出我用过的一段代码,以作参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SharedPreferences.Editor editor = getSharedPreferences(
                                "com.swc.yaomei_preferences",
                                Activity.MODE_PRIVATE).edit();
                        LocalActivityManager manager = getLocalActivityManager();
                        PreferenceActivity acitivty = (PreferenceActivity) manager
                                .getActivity("swc");
                        for (int i = 0; i < 9; i++) {
                            editor.putString("KEY_" + i, "N/A");
                            PreferenceScreenExt ext = (PreferenceScreenExt) acitivty
                                    .findPreference("KEY_" + i);
                            RelativeLayout layout = (RelativeLayout) ext
                                    .getLayout();
                            TextView summary = (TextView) layout.getChildAt(1);
                            summary.setText("N/A");
                        }
                        editor.commit();
                        System.gc();
上面的PreferenceActivity 是得到一个PreferenceAcitity 因为我是要修改位于ActivityGroup里面对应的Preference所以这里要获得一个PreferenceAcitity ,如果你是一个普通的Activity 直接得到一个Activity 对象就行,之后的操作都是一致的。

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

分享到:
评论

相关推荐

    关于如何自定义Android开发控件Button样式Demo

    在安卓开发中,我们经常用到Button按钮... * 2、使用自定义矢量图的方式,说得简单点就是使用安卓提供的一些xml参数,绘制矩形、圆形,然后添加渐变、颜色等效果 * 3、第三种是前面两种方式的结合,然后做出特殊的效果

    javascript网页特效实例大全(13-19)

    实例355 用JavaScript控制XML文档的分页显示 565 实例356 通过操作XML数据岛实现添加、删除留言信息 567 第15章 JavaScript与ASP结合 573 15.1 弹出窗口/对话框控制 574 实例357 关闭弹出窗口时刷新父窗口...

    JavaScript网页特效范例宝典源码

    实例245 为网页设置背景音乐 378 实例246 随机播放背景音乐 380 实例247 MIDI音乐选择 381 8.9 插入Flash动画 383 实例248 插入Flash动画 383 实例249 插入背景透明的Flash动画 384 8.10 播放视频文件 385 实例250 ...

    Material-Resources-Library:用于设计android应用程序的最有用资源的列表,例如所有材料颜色和调暗,180渐变背景+ html,社交,平面,流畅,地铁颜色

    您可以将颜色与java,kotlin,xml一起使用。 该库包括什么? 所有材料颜色( ) 所有纯色( ) 所有社交色彩( ) 所有材料尺寸 所有HTML颜色( ) 所有流利的颜色( ) 所有Metro颜色( ) 19材质渐变背景 ...

    Visual Studio 2008中的Dundas for .NET组件

    支持使用图像、实体颜色、文本、渐变颜色或者透明效果作为背景图像、图表区域、以及图表图像本身。 ◦阴影效果、抗锯齿、透明效果、及其混合效果,为您提供了您最想要的外观效果 ◦预定义的色彩调色板 ◦自定义...

    flex3的cookbook书籍完整版dpf(包含目录)

    12.9节使用Convolution Filter创建渐变效果 第十三章. 集合(439) 13.1节. 为ArrayCollection添加,排序和获取数据 13.2节. 过滤ArrayCollection 13.3节. 确定ArrayCollection数据项是否被修改 13.4节. 创建...

    C#编程经验技巧宝典

    16 &lt;br&gt;0033 Return语句的使用 17 &lt;br&gt;0034 如何实现无限循环 17 &lt;br&gt;0035 巧用foreach语句控制控件 18 &lt;br&gt;0036 有效使用switch case语句 18 &lt;br&gt;2.3 运算符 19 &lt;br&gt;0037 如何使用...

    C#程序开发范例宝典(第2版).part08

    实例107 使用EventLog组件向本机现有日志中添加条目 155 3.4 FileSystemWatcher组件 156 实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider...

    明日科技C#开发入门及项目实战

    实例167 渐变效果的文字 实例168 绘制多边形 实例169 简单画图程序 实例170 仿qq截图功能 实例171 模拟石英钟 实例172 绘制贝塞尔曲线 实例173 绘制图形验证码 实例174 以椭圆形显示图像 实例175 使用双缓冲技术绘图...

    Android代码-DevShapeUtils

    Shape样式: 圆形、圆角、边框、虚线边框、颜色渐变 Selector样式: 触摸背景变化、触摸字体颜色变化 2、如何使用 2.1 Android Studio导入方法,添加Gradle依赖 在项目的 build.gradle 添加: android { default...

Global site tag (gtag.js) - Google Analytics