Android实习札记(11)---妙用include解决布局重用问题

Android实习札记(11)---妙用include解决布局重用问题

——转载请注明出处:coder-pig

如果你已经知道include是什么,只是想知道怎么用,使用示例如下:

①布局文件引入layout 

<include
        android:id="@+id/topbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        layout="@layout/view_topbar" />

②Java代码中访问,获取layout中组件,设置属性:

private View topbar;
private TextView txtTitle;

topbar = findViewById(R.id.topbar);
txtTitle = (TextView) topbar.findViewById(R.id.txtTitle);
txtTitle.setText("第二页");

就这么简单,你可以关页面了,觉得帮助了你,可以点个赞!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果不知道,想了解相关以及应用场景请继续看:

本节流程图:

效果图:

代码思路:

核心是顶部的一个titlebar,这里是我们自己写的一个bar,因为后面两个Activity都需要用到,

所以我们直接通过include包含这个bar,然后Java代码中获得该bar实例,再调用bar.findViewById

找到标题栏的TextView修改对应的页面!

详细代码如下:

顶部的bar:
view_topbar.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000" >

    <ImageView
        android:id="@+id/imgBack"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/back" />

    <TextView
        android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="8dp"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

</RelativeLayout>

接着依次编写三个Activity的布局,二三个activity通过include导入topbar

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#D1E5E6"
    tools:context="com.jay.example.includedemo.MainActivity" >

    <Button
        android:id="@+id/btnTo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="跳轉到第二個頁面" />

</RelativeLayout>

activity_second.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#D5E094" >

    <include
        android:id="@+id/topbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        layout="@layout/view_topbar" />

    <Button
        android:id="@+id/btnTo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="跳轉到第三個頁面"
        android:textSize="14sp" />

</RelativeLayout>

activity_third.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F2CC9F" >

    <include
        android:id="@+id/topbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        layout="@layout/view_topbar" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="第三個頁面" />

</RelativeLayout>

编写对应的activity:

MainActivity.java:

package com.jay.example.includedemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button btnTo;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		getViews();
		setViews();
	}

	private void getViews() {
		btnTo = (Button) findViewById(R.id.btnTo);
	}

	private void setViews() {
		MyClick myClick = new MyClick();
		btnTo.setOnClickListener(myClick);

	}

	// 定义事件处理类
	private class MyClick implements OnClickListener {
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btnTo:
				Intent it = new Intent(MainActivity.this, SecondActivity.class);
				startActivity(it);
				break;
			}

		}
	}
}

SecondActivity.java:

package com.jay.example.includedemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class SecondActivity extends Activity {
	private View topbar;
	private ImageView imgBack;
	private TextView txtTitle;
	private Button btnTo;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		getActionBar().hide();
		getViews();
		setViews();
	}

	private void getViews() {
		topbar = findViewById(R.id.topbar);
		btnTo = (Button) findViewById(R.id.btnTo);
		imgBack = (ImageView) topbar.findViewById(R.id.imgBack);
		txtTitle = (TextView) topbar.findViewById(R.id.txtTitle);
	}

	private void setViews() {
		MyClick myClick = new MyClick();
		txtTitle.setText("第二页");
		btnTo.setOnClickListener(myClick);
		imgBack.setOnClickListener(myClick);
	}

	// 定义事件处理类
	private class MyClick implements OnClickListener {
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btnTo:
				Intent it = new Intent(SecondActivity.this, ThirdActivity.class);
				startActivity(it);
				break;
			case R.id.imgBack:
				finish();
				break;
			}

		}
	}
}

ThirdActivity.java:

package com.jay.example.includedemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;

public class ThirdActivity extends Activity {
	private View topbar;
	private ImageView imgBack;
	private TextView txtTitle;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_third);
		getActionBar().hide();
		getViews();
		setViews();
	}

	private void getViews() {
		topbar = findViewById(R.id.topbar);
		imgBack = (ImageView) topbar.findViewById(R.id.imgBack);
		txtTitle = (TextView) topbar.findViewById(R.id.txtTitle);
	}

	private void setViews() {
		MyClick myClick = new MyClick();
		txtTitle.setText("第三页");
		imgBack.setOnClickListener(myClick);
	}

	// 定义事件处理类
	private class MyClick implements OnClickListener {
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.imgBack:
				finish();
				break;
			}

		}
	}
}

最后再配置文件注册下二三两个Activity即可!

   <activity android:name=".SecondActivity"></activity>
        <activity android:name=".ThirdActivity"></activity>

代码下载:

http://pan.baidu.com/s/1bnpjJhP

时间: 2024-12-15 01:53:38

Android实习札记(11)---妙用include解决布局重用问题的相关文章

Android实习札记(2)---妙用View的keepScreenOn保持屏幕常亮

Android实习札记(2)---妙用View的keepScreenOn保持屏幕常亮 --转载请注明出处:coder-pig 1)什么是屏幕常亮? 直译就是让我们的屏幕一直亮着呗,手机通常都带有省电模式什么的,比如设置无操作后,15秒 屏幕自动关闭,如果恰好我们的程序正在执行一些操作的话,突然的屏幕关闭可能会带来一些问题; 比如,应用正在安装或者应用正在更新,下载,处理数据等,于是乎,我们在特定的时候,需要让手机屏幕 保持光亮,那么要怎么让屏幕常亮呢? 2)怎么让屏幕常亮? 主流的两个方法: ①

Android实习札记(3)---Fragment用app包还是v4包解析

Android实习札记(3)---Fragment用app包还是v4包解析 1)问题简述 相信很多的朋友在调用Fragment都会遇到下面的情况: 这个时候问题来了... 到底是用android.app下的Fragment还是用的android.support.v4.app包下的Fragment? 答:其实都可以,没错,都可以!!!我们都知道Fragment是3.0(API 11)后引入的 那么如果开发的app需要在3.0以下的版本运行呢?比如还有一点点市场份额的2.3! 于是乎,v4包就这样应

Android实习札记(9)---设置Eclpise为护眼色与代码快速对齐

 Android实习札记(9)---设置Eclpise为护眼色与代码快速对齐 笔者的一些废话:(只是最近心情太差,吐槽下而已~) 感觉好久都没写博客了,看看上一次写博客是11月21号,已经有12天没有写自己的实习札记了, 不是没东西可以,只是最近真的是倒霉透了,一堆麻烦事,根本静不下心来,自己来到公司,第一二 个星期看看文档,写写小demo什么的,还过得去,日子还蛮滋润的,偶尔可以写下博文,但是第三个 星期开始就倒霉透了,因为笔者所在的公司是一间外包公司,可能是他们很久之前接的一个外包吧, 但是

Android实习札记(10)---ImageView的src属性 VS blackground属性

Android实习札记(10)---ImageView的src属性 VS blackground属性                                                                              转载请注明出处:coder-pig 问题分析 相信大家对于ImageView图片组件并不陌生吧,见名知意,就是用来显示图片的咯! 而显示图片的话可以通过src属性,又或者blackground属性来进行设置! 这些大家都知道,但是有没有去纠结下

Android实习札记(6)---ViewPager使用详解

Android实习札记(6)---ViewPager使用详解                                    --转载请注明出处:coder-pig 札记(5)中介绍了Fragment构建简单的底部导航栏,在结尾的时候说要在下一节中,结合Viewpager 实现进入软件时的引导界面,说到ViewPager,很多朋友都用过,不过只知道粘贴复制,连一些基本的 东西都不知道,那是不行的,在本节中就先讲下ViewPager的一些基本概念吧! 1.首先ViewPager在哪个包下?

Android实习札记(4)---Fragment(碎片)基本概念解析

Android实习札记(4)---Fragment(碎片)基本概念解析 转载请注明出处:coder-pig Fragment相信大家都不会陌生吧,侧滑啦,抽屉效果啦,DialogFragment啊等等,一堆地方都会 用到Fragment,对于Fragment的基本概念在前面的文章中其实已经给出的了,这里回顾一遍, 温故而知新嘛,同时结合Google官方的api进行复习! 1)什么是Fragment以及它的生命周期: 核心要点: 1)3.0版本后引入,即minSdk要大于11 2)Fragment

Android实习札记(5)---Fragment之底部导航栏的实现

Android实习札记(5)---Fragment之底部导航栏的实现 --转载请注明出处:coder-pig 在Part 4我们回顾了一下Fragment的基本概念,在本节中我们就来学习Fragment应用的简单例子吧! 就是使用Fragment来实现简单的底部导航栏,先贴下效果图: 看上去很简单,实现起来也是很简单的哈!那么接着下来就看下实现的流程图吧: 实现流程图: 看完流程图是不是有大概的思路了,那么接着就开始代码的编写吧: 代码实现: ①先写布局,布局的话很简单,一个FrameLayou

Android实习札记(8)---ViewPager+Fragment实例详解

Android实习札记(8)---ViewPager+Fragment实例讲解 --转载请注明出处:coder-pig 在札记(5)中我们就说过要弄一个模仿微信页面切换的东东,就是ViewPager+Fragment 实现的一个东西,札记(6)中也学习了一下ViewPager的一些基本用法,本节就来将两者 结合以实现我们想要的效果! 1.ViewPager关于Fragment的说法? 先看下Google官网怎么说: 大概意思就是: ViewPager更多的时候是与Fragment协同使用,这样可

Android实习札记(1)---EditText属性之ImeOption详解

Android实习札记(1)---EditText属性之ImeOption详解 1)这个属性拿来干嘛的? 答:当我们往EditText等可以输入文字的UI控件的地方输入时,弹出的小键盘的 右下角的Enter键!你没听错,这个属性就是关于Enter键的!!! 我们可以通过ImeOption属性来设置enter键显示的内容,以及进行事件监听~ 2)如何修改Enter键显示的内容: 答:直接设置ImeOption属性即可,另外,使用第三方输入法可能出现不同的结果, 或者没变化,这里只以搜狗输入法为参考