码迷,mamicode.com
首页 > 其他好文 > 详细

记录知识点与技巧

时间:2016-05-03 18:07:29      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

去掉ActionBar

android:theme="@android:style/Theme.Holo.NoActionBar"
actionBar = getActionBar(); //得到ActionBar
actionBar.hide(); //隐藏ActionBar
requestWindowFeature(Window.FEATURE_NO_TITLE);


设置全屏

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"


Activity生命周期

技术分享


Activity由于在后台状态时,被回收之后如果恢复数据

onSaveInstanceState()回调方法保证活动被回收之前调用
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String tempData = "Something you just typed";
outState.putString("data_key", tempData);
}
展示数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
String tempData = savedInstanceState.getString("data_key");
Log.d(TAG, tempData);
}
……
}


Activity的启动模式

<activity> 标签指定android:launchMode 属性来选择启动模式
standard
singleTop
singleTask
singleInstance
standard
默认模式,启动一个新的活动后,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。
singleTop
当活动的启动模式指定为singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。
singleTask
当活动的启动模式指定为singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这
个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。
singleInstance
指定为singleInstance 模式的活动会启用一个新的返回栈来管理这个活动(其实如果singleTask 模式指定了不同的taskAffinity,也会启动一个新的返回栈)。
这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈,也就解决了共享活动实例的问题。
假设有三个Activity,跳转打印日志如下

技术分享

可以看到, SecondActivity 的Task id 不同于FirstActivity 和ThirdActivity , 这说明SecondActivity 确实是存放在一个单独的返回栈里的,而且这个栈中只有SecondActivity 这一个活动。
然后我们按下Back 键进行返回,你会发现ThirdActivity 竟然直接返回到了FirstActivity,再按下Back 键又会返回到SecondActivity,再按下Back 键才会退出程序,这是为什么呢?
其实原理很简单,由于FirstActivity 和ThirdActivity 是存放在同一个返回栈里的,当在ThirdActivity 的界面按下Back 键,ThirdActivity 会从返回栈中出栈,那么FirstActivity 就成为了栈顶活动显示在界面上,因此也就出现了从ThirdActivity 直接返回到FirstActivity 的情况。然后在FirstActivity 界面再次按下Back 键,这时当前的返回栈已经空了,于是就显示了另一个返回栈的栈顶活动,即SecondActivity。最后再次按下Back 键,这时所有返回栈都已经空了,也就自然退出了程序。


知晓当前是在哪一个活动

public class BaseActivity extends Activity {
<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onCreate(Bundle savedInstanceState) {
<span style="white-space:pre">		</span>super.onCreate(savedInstanceState);
<span style="white-space:pre">		</span>Log.d("BaseActivity", getClass().getSimpleName());79
<span style="white-space:pre">	</span>}
}
技术分享


随时随地退出程序

public class ActivityCollector {
<span style="white-space:pre">	</span>public static List<Activity> activities = new ArrayList<Activity>();
<span style="white-space:pre">	</span>public static void addActivity(Activity activity) {
<span style="white-space:pre">		</span>activities.add(activity);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>public static void removeActivity(Activity activity) {
<span style="white-space:pre">		</span>activities.remove(activity);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>public static void finishAll() {
<span style="white-space:pre">		</span>for (Activity activity : activities) {
<span style="white-space:pre">			</span>if (!activity.isFinishing()) {
<span style="white-space:pre">				</span>activity.finish();
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
}

接下来修改BaseActivity 中的代码,如下所示:

public class BaseActivity extends Activity {
<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onCreate(Bundle savedInstanceState) {
<span style="white-space:pre">		</span>super.onCreate(savedInstanceState);
<span style="white-space:pre">		</span>Log.d("BaseActivity", getClass().getSimpleName());
<span style="white-space:pre">		</span>ActivityCollector.addActivity(this);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onDestroy() {
<span style="white-space:pre">		</span>super.onDestroy();
<span style="white-space:pre">		</span>ActivityCollector.removeActivity(this);
<span style="white-space:pre">	</span>}
}


控件的visibility属性

visible 表示控件是可见的,这个值是默认值,不指定android:visibility 时,控件都是可见的。
invisible 表示控件不可见,但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态了。
gone 则表示控件不仅不可见,而且不再占用任何屏幕空间。


相对布局RelativeLayout部分属性含义

android:layout_alignLeft	本元素的左边缘和某元素的的左边缘对齐
android:layout_alignTop	本元素的上边缘和某元素的的上边缘对齐
android:layout_alignRight	本元素的下边缘和某元素的的下边缘对齐
android:layout_alignBottom 本元素的右边缘和某元素的的右边缘对齐
android:layout_alignParentLeft	是否紧靠父元素左边
android:layout_alignParentTop	是否紧靠父元素上方
android:layout_alignParentRight 是否紧靠父元素右边
android:layout_alignParentBottom 是否紧靠父元素的下方
android:layout_centerInParent	在父元素中上下左右居中显示
android:layout_above 在某元素的的上方
android:layout_below 在某元素的下方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边

将字体变粗
//英文中使用android:textStyle=”bold”但是不能将中文加粗
TextView tv = (TextView)findViewById(R.id.TextView01); 
TextPaint tp = tv.getPaint(); 
tp.setFakeBoldText(true);

View树

技术分享


如何制作.9图

技术分享

在Android sdk 目录下有一个tools 文件夹,在这个文件夹中找到draw9patch.bat 文件,我们就是使用它来制作Nine-Patch 图片的。双击打开之后,在导航栏点击File→Open 9-patch将图片加载进来

技术分享

我们可以在图片的四个边框绘制一个个的小黑点,在上边框和左边框绘制的部分就表示当图片需要拉伸时就拉伸黑点标记的区域,在下边框和右边框绘制的部分则表示内容会被放置的区域。


...

......

............







记录知识点与技巧

标签:

原文地址:http://blog.csdn.net/qq_24697659/article/details/51251565

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!