- 浏览: 177895 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
beiizl:
用了博主的方法和代码,不同证书居然可以正常通讯?
Java SSLSocket的使用 -
SHANGLIJAVA:
sorry,运行时没看清。博主的代码确实没问题。。。
Java SSLSocket的使用 -
SHANGLIJAVA:
YoungeeOne 写道最后一个为什么初始化一个空的证书,也 ...
Java SSLSocket的使用 -
q979713444:
那这个的心跳怎么弄呢
Java SSLSocket的使用 -
43350860:
busybox不是每台机器有安装的, 有没有比较裸的办法获取p ...
android中查看端口占用
1. 自定义标题栏
1.1 常规自定义标题栏
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
自定义Activity的标题栏(Titlebar)
http://www.189works.com/article-51509-1.html
本文仅用到了Window.FEATURE_CUSTOM_TITLE,
Window还有其他一些feature,比如FEATURE_CONTEXT_MENU,FEATURE_NO_TITLE,FEATURE_LEFT_ICON等。
下面是一个来自wfd的完整的例子
wfd中的首页布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false"> </ListView> <TextView android:id="@id/android:empty" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="还没有会议刷新看看" android:gravity="center_horizontal" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="90dp" android:gravity="center_horizontal" android:orientation="vertical" android:layout_alignParentBottom="true"> <Button android:text="发起会议" android:id="@+id/launch" android:layout_width="200dp" android:layout_height="wrap_content"></Button> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <CheckBox android:id="@+id/use_password" android:text="" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="启用密码"></TextView> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/home_refresh_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible" android:layout_centerInParent="true" android:gravity="center"> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content"></ProgressBar> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正在寻找会议室" android:paddingLeft="3dp"></TextView> </LinearLayout> <LinearLayout android:id="@+id/home_join_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible" android:layout_centerInParent="true" android:gravity="center"> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content"></ProgressBar> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正在加入会议室" android:paddingLeft="3dp"></TextView> </LinearLayout> </RelativeLayout>
自定义title的布局
<?xml version="1.0" encoding="utf-8"?> <!-- 首页title布局 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="horizontal" android:gravity="center_vertical" android:padding="3dp"> <ImageView android:id="@+id/home_app_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon" android:paddingRight="5dip"></ImageView> <TextView android:id="@+id/home_app_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name"></TextView> <LinearLayout android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:layout_gravity="center_vertical"> <ImageView android:id="@+id/home_refresh" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search_32" android:paddingRight="15dp"></ImageView> <ImageView android:id="@+id/home_options" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/gear_32"></ImageView> </LinearLayout> </LinearLayout> <TextView android:background="@drawable/divider" android:layout_height="1dip" android:layout_width="fill_parent"></TextView> </LinearLayout>
java代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.home); // 设置自定义的title getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.home_custom_title); // 添加一个footview // getListView().addFooterView( // LayoutInflater.from(this).inflate(R.layout.home_foot, null)); mAdapter = new MeetingRoomAdapter(); doAddTestData(); setListAdapter(mAdapter); mRefresh = (ImageView) findViewById(R.id.home_refresh); mOptions = (ImageView) findViewById(R.id.home_options); mRefreshBar = (LinearLayout) findViewById(R.id.home_refresh_bar); mJoinBar = (LinearLayout) findViewById(R.id.home_join_bar); mLaunch = (Button) findViewById(R.id.launch); mUsePwd = (CheckBox) findViewById(R.id.use_password); mUsePwd.setOnCheckedChangeListener(this); mRefresh.setOnClickListener(this); mOptions.setOnClickListener(this); mLaunch.setOnClickListener(this);
效果
1.2 PreferenceActivity的自定义标题栏
PreferenceActivity 自定义title栏出错
http://www.cnblogs.com/slider/archive/2011/11/11/2245149.html
开发WFD过程中也遇到这个"PreferenceActivity 自定义title栏出错"的问题。
经分析,主要原因是因为PreferenceActivity 跟一般Activity不同. PreferenceActivity 的onCreate方法里面执行了setContentView, 而这个方法必须在
requestWindowFeature之后执行。 反映到我们继承自PreferenceActivity 的具体代码中就是, requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)要在super.onCreate(savedInstanceState)前执行
代码如下
public class SettingsActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener { public static final String KEY_USERNAME = "username"; private EditTextPreference mUsername; @Override protected void onCreate(Bundle savedInstanceState) { // 注意, PreferenceActivity // 里面需要把这个放在super.onCreate(savedInstanceState)前面!!! requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.settings_custom_title); mUsername = (EditTextPreference) findPreference(KEY_USERNAME); mUsername.setSummary(getUsername()); mUsername.setText(getUsername()); mUsername.setOnPreferenceChangeListener(this); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { return super.onPreferenceTreeClick(preferenceScreen, preference); } private String getUsername() { String name = PrefUtil.get(this, PrefUtil.PREF_SETTINGS, KEY_USERNAME, Build.MODEL); return name; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference == mUsername) { String val = (String) newValue; Logger.d("val = " + val); if (val != null && !val.equals("") && !val.equals(getUsername())) { mUsername.setSummary(val); PrefUtil.set(this, PrefUtil.PREF_SETTINGS, KEY_USERNAME, mUsername.getText()); } } return false; } }
2. 标题栏进度条
http://qing.weibo.com/2617185797/9bff160533000f4l.html?retcode=6102
最关键的位置就是在setContentView之前添加下面的这行代码
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); //设置为圆形旋转进度条
或者
requestWindowFeature(Window.FEATURE_PROGRESS); //设置为水平进度条 注意标题栏的水平进度条最大值是10000,不用自己手动设置
3. Java代码中隐藏标题栏
在Activity.setCurrentView()之前调用此方法
private void hideTitle(){ //TODOAuto-generatedmethodstub requestWindowFeature(Window.FEATURE_NO_TITLE); }
4. Java代码中全屏
在Activity.setCurrentView()之前调用此方法
private void hideStatusBar(){ //TODOAuto-generatedmethodstub // 隐藏标题 requestWindowFeature(Window.FEATURE_NO_TITLE); // 定义全屏参数 intflag=WindowManager.LayoutParams.FLAG_FULLSCREEN; // 获得窗口对象 WindowmyWindow=this.getWindow(); // 设置 Flag标识 myWindow.setFlags(flag,flag); }
5. manifest中全屏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
6. manifest中隐藏标题栏
android:theme="@android:style/Theme.NoTitleBar"
7. 半透明风格的Activity
android:theme="@android:style/Theme.Translucent"
或者先编写一个color.xml
<?xmlversion="1.0"encoding="UTF-8"?> <resources> <colorname="transparent">#9000</color> </resources>
再编写一个styles.xml
<?xmlversion="1.0"encoding="utf-8"?> <resources> <stylename="Transparent"> <itemname="android:windowBackground">@color/transparent</item> <itemname="android:windowIsTranslucent">true</item> <itemname="android:windowAnimationStyle">@+android:style/Animation.Translucent</item> </style> </resources>
最后使用这个style
android:theme="@style/transparent"
参考http://blog.csdn.net/yuejingjiahong/article/details/6668265
8. 对话框风格的Activity
android:theme="@android:style/Theme.Dialog"
9. 运行时切换全屏
/** * 切换全屏和非全屏 */ private void switchFullScreen() { if (null != switchFullScreenToast) { switchFullScreenToast.cancel(); } if (fullScreen) { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); switchFullScreenToast = Toast.makeText(this, R.string.exit_full_screen, Toast.LENGTH_SHORT); switchFullScreenToast.show(); } else { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); switchFullScreenToast = Toast.makeText(this, R.string.enter_full_screen, Toast.LENGTH_SHORT); switchFullScreenToast.show(); } fullScreen = !fullScreen; }
10. 使用自定义style解决自定义title栏高度太小的问题
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="TransparentListView" parent="@android:style/Widget.ListView"> <item name="android:cacheColorHint">@android:color/transparent</item> </style> </resources>
然后使用这个style
<activity android:name=".ui.HomeActivity" android:theme="@style/CmTitleBar"></activity>
发表评论
-
使用Intel HAXM为Android模拟器加速
2013-11-15 17:50 0http://www.tanranran.cn/?p ... -
load bitmap & process bitmap -training系列
2013-11-09 12:11 0http://docs.eoeandroid.com ... -
listview如何高亮显示选中的item
2013-11-03 11:33 0http://stackoverflow.com/qu ... -
ActionBarSharlock配合Navigation Drawer时遇到的小问题
2013-10-27 11:50 0http://stackoverflow.com ... -
Android navi drawer
2013-10-26 21:41 0https://developer.android.c ... -
cache bitmap & display bitmap- training系列
2013-10-26 10:25 0http://developer.android. ... -
博客排版技巧
2013-10-07 18:43 0CnBlogs博文排版技巧 http://www.cnbl ... -
android 传感器之摇一摇
2013-10-07 16:16 0http://blog.csdn.net/xn4545 ... -
android udp广播
2013-10-07 16:14 0http://blog.csdn.net/luzhen ... -
geofence功能
2013-10-07 12:18 0test -
android wifi模块分析
2013-10-04 19:58 0设置、打开wifi热点 http://blog.c ... -
简单试用Android Annotations(2)
2013-10-01 17:15 0一、命名问题 前一篇中提出了一个问题: ... -
简单试用Android Annotations
2013-10-01 11:58 3848参考:试用android annotations ... -
飞鸽协议
2013-09-30 15:13 0http://blog.chinaunix.net/ ... -
zxing二维码
2013-09-30 15:10 0Android之二维码的生成与解析 http://w ... -
android服务发现
2013-09-30 15:06 0不怎么样的博客 upnp研究 http://blog.c ... -
system bin目录下的命令
2013-09-30 13:27 0Android手机WIFI数据开关命令svc教程 h ... -
android jni相关
2013-09-24 14:03 0http://game.ceeger.com/S ... -
service的onStartCommand返回值
2013-09-21 12:16 0http://blog.csdn.net/fr ... -
action bar 2.3
2013-09-20 21:05 0ActionBarSherlock http ...
相关推荐
利用Theme自定义Activity间的切换动画
android 主题设置,感觉不错,上传分享
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR 原因一 错误写法: <style name=AppTheme.NoActionBar> ...
描述了window的基本工作原理以及 Activity 和 Toast 使用的基本实现源码大概分析
activity view window viewgroup的关系
activity3activity3
假如说有一个activity A,在A中跳转到Activity B, 然后在B中跳转到Activity C中,最后要在C中把activity A,B,C都关掉。 首先有一个Activity A,A中有一个Button,点击这个Button会跳到Activity B中去,但会拿到...
有几个情况下 Activity 会...者是 Activity 通过调用 finish()发出了停止信号。系统也有可能会在 Activity 处于 stop 状态且长时间不被使用、或在前台 Activity 需要更多系统资源的时候关闭后台进程以获取 更多的内存。
Activity生命周期及Intent传值
1. 掌握activity组件生命周期函数的用法 2. 掌握使用intent实现activity之间的跳转 3. 掌握在manifest文中定义多个activity,并指定Launcher Activity
在activity中嵌入子Activity。
使用方法:安装HijackActivity.apk,使用 activity 界面劫持工具,在工具中指定要劫持的应用进程名称。如图所示,从列表中选择被测试的应用,点击 OK。打开应用,测试工具会尝试用自己的窗口覆盖被测的应用,如果...
LauncherActivity 开发启动Activity的界面Demo
Activity review activity之间的数据传递
NULL 博文链接:https://woshiwzy.iteye.com/blog/830755
activity的四种加载模式:<!-- 不写的话也默认是standard --> <!-- standard表示每执行一次startactivity就新建一个实例 singleTop表示每次执行startactivity时,如果当前activity在taskstack的顶端,则不...
2、需要在Activity启动前完成各种数据的部署,然后查看Activity的效果。 对于这两种需求,笔者分别做了两个示例解说: 1、检测一个布局中的button和TextView是否正确。 2、从网络动态获取String到Activity界面显示...
standard是最常见的activity启动方式,也是默认的启动的方式。当启动一个activity的时候他将进入返回栈的栈顶。系统不会管栈内是否有相同的activity,方式像后入先出。 singleTop方式是在活动启动的时候,系统先...
1. 掌握activity组件生命周期函数的用法 2. 掌握使用intent实现activity之间的跳转 3. 掌握在manifest文中定义多个activity,并指定Launcher Activity 4. 掌握Activity的启动模式,和启动模式所对应的Activity和task...
从application启动activity