MainActivity:
package com.home.testdialogborder;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void click(View v) {
if (v.getId() == R.id.main_btn_set) {
Dialog dialog = new Dialog(MainActivity.this,
R.style.NoBorderDialog);
dialog.setContentView(R.layout.dialog);
dialog.show();
}
}
}
style.NoBorderDialog:
<style name="NoBorderDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/black</item>
<item name="android:windowBackground">@null</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
布局文件内容自定义即可
接着Fragment的简单使用一文继续探讨Fragment的使用,本文主要介绍使用Fragment实现动态UI布局,包括动态添加、替换、移除某个Fragment,至于Fragment之间的交互,后面在讨论。
MainActivity:
package com.home.testfragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends FragmentActivity implements OnClickListener {
private Button addFirstFragmentBtn;
private Button replaceFirstFragmentBtn;
private Button removeFirstFragmentBtn;
private FirstFragment firstFragment;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.main);
addFirstFragmentBtn = (Button) findViewById(R.id.main_btn_add);
replaceFirstFragmentBtn = (Button) findViewById(R.id.main_btn_replace);
removeFirstFragmentBtn = (Button) findViewById(R.id.main_btn_remove);
addFirstFragmentBtn.setOnClickListener(this);
replaceFirstFragmentBtn.setOnClickListener(this);
removeFirstFragmentBtn.setOnClickListener(this);
addFirstFragmentBtn.setEnabled(true);
removeFirstFragmentBtn.setEnabled(false);
}
@Override
public void onClick(View v) {
if (v == addFirstFragmentBtn) {
addFirstFragmentBtn.setEnabled(false);
removeFirstFragmentBtn.setEnabled(true);
if (findViewById(R.id.main_container) != null) {
firstFragment = new FirstFragment();
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.add(R.id.main_container, firstFragment);
// 把当前Fragment添加至回退栈,通过返回键返回时可以导航到上一个Fragment状态
transaction.addToBackStack(null);
// 提交
transaction.commit();
}
}
if (v == replaceFirstFragmentBtn) {
addFirstFragmentBtn.setEnabled(true);
removeFirstFragmentBtn.setEnabled(false);
SecondFragment secondFragment = new SecondFragment();
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.replace(R.id.main_container, secondFragment);
transaction.addToBackStack(null);
transaction.commit();
}
if (v == removeFirstFragmentBtn) {
addFirstFragmentBtn.setEnabled(true);
removeFirstFragmentBtn.setEnabled(false);
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.remove(firstFragment);
// 如果移除的时候也添加到回退栈,表示当前Fragment只是被停止而没有被摧毁,返回时它将恢复;
// 那么如果不添加到回退栈则表示完全摧毁
// transaction.addToBackStack(null);
transaction.commit();
}
}
}
FirstFragment:
package com.home.testfragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_first, container, false);
}
}
SecondFragment:
package com.home.testfragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SecondFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_second, container, false);
}
}
main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >
<Button
android:id="@+id/main_btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="添加" />
<Button
android:id="@+id/main_btn_replace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="替换" />
<Button
android:id="@+id/main_btn_remove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="移除" />
</LinearLayout>
</RelativeLayout>
fragment_first.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="MyFirstFragment"
android:textSize="20sp" />
</LinearLayout>
fragment_second.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MySecondFragment"
android:textSize="20sp" />
</LinearLayout>
1. 算法的几个特征是什么。
2. 算法复杂性的定义。大O、θ、Ω、小o分别表示的含义。
3. 递归算法的定义、递归算法的两要素。
4. 分治算法的思想,经典的分治算法(全排列、二分搜索、归并排序、快速排序、线性时间选择、最接近点对问题)。
5. 动态规划算法解题框架,动态规划算法的两个要素是什么?备忘录方法是什么?
6. 经典的动态规划问题(矩阵连乘问题、最长公共子序列问题、0-1背包问题)。
7. 贪心算法的思想,贪心算法的两个要素。
8. 经典的贪心问题(活动安排问题、背包问题、装载问题、哈夫曼编码、单源最短路径、最小生成树问题)。
9. 回溯法的思想,回溯法中有哪两种典型的模型。
10. 经典的回溯算法(n后问题、0-1背包问题、旅行售货商问题)。
11. 分支限界法思想,有哪两种分支限界法。
12. 经典的分支限界算法(0-1背包问题、旅行售货商问题)。
1. 数据结构的定义。
2. 栈的两个应用:括号匹配和表达式的计算。是怎么应用的?表达式计算用的是哪种表达方式?有什么好处?
3. 字符串匹配算法:朴素的匹配算法、KMP算法。
4. 二叉树前序、中序、后序递归遍历算法。二叉树前序非递归遍历算法。
5. 堆,建堆算法,堆的插入和删除算法,堆排序。
6. 哈希。哈希函数的有哪些种?余数的取法? 处理冲突的方法? 闭散列方法有哪些?
7. 二叉搜索树的搜索、插入、删除。时间复杂度。
8. 二叉平衡树的插入结点的原理,有哪几种旋转方式?分别适用于哪种情况。分析二叉平衡树的时间复杂度。
9. 红黑树的定义,红黑树的性能分析和与二叉平衡树的比较。
10. 图有哪些储存表示。
11. 链表插入排序、链表归并排序。
12. 常见的有哪几种排序算法,试比较其时间复杂度,以及是否稳定,及各自使用的情形。
13. 常用分配排序有哪几种? 基数排序的定义,分类及原理。
14. B树、B+树、Trie的概念及用途,添加删除结点的原理。