Android BasicAccessibility Sample
This sample demonstrates how to create an accessible application, using a mix of different widgets demonstrating different ways of adding accessibility markup to a UI.
Android BasicImmersiveMode Sample
Sample demonstrating the use of immersive mode to hide the system and navigation bars for full screen applications.
Android BasicNotifications Sample
A basic app showing how to display events in the system's notification bar using the NotificationCompat API. NotificationCompat API is used for compatibility with older devices, running Android 1.6 (Donut) (API level 4) or newer.
Android BasicTransition Sample
A basic app showing how to use the Transition framework introduced in KitKat. The app shows radioboxes to select between different Scenes, and uses various ways to transition between them.
因为这几篇都没有很多内容,所以就做一个合集,基本的可视化控件、安静模式、通知、转化。这些东西如果讲细致一点的话,篇幅就太多了,所以大家自己百度一下吧。 BasicAccessibility的话,都是一些布局上的东西,如图:
除了最后一个是自定义控件。
********************************************************************************************************************
BasicImmersiveMode这个其实就是上一篇讲的沉浸模式,里面通过Fragment获取Activity,然后设置的属性:
int uiOptions = getActivity().getWindow().getDecorView().getSystemUiVisibility(); int newUiOptions = uiOptions;newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN; newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
getActivity().getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
********************************************************************************************************************
BasicNotifications说的就是基本的通知栏设置:
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://developer.android.com/reference/android/app/Notification.html"));
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_stat_notification);
builder.setContentIntent(pendingIntent);
builder.setAutoCancel(true);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
builder.setContentTitle("BasicNotifications Sample");
builder.setContentText("Time to learn about notifications!");
builder.setSubText("Tap to view documentation about notifications.");
NotificationManager notificationManager = (NotificationManager) getSystemService(
NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, builder.build());
********************************************************************************************************************
public class BasicTransitionFragment extends Fragment
implements RadioGroup.OnCheckedChangeListener {
// We transition between these Scenes
private Scene mScene1;
private Scene mScene2;
private Scene mScene3;
/** A custom TransitionManager */
private TransitionManager mTransitionManagerForScene3;
/** Transitions take place in this ViewGroup. We retain this for the dynamic transition on scene 4. */
private ViewGroup mSceneRoot;
public static BasicTransitionFragment newInstance() {
return new BasicTransitionFragment();
}
public BasicTransitionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_basic_transition, container, false);
assert view != null;
RadioGroup radioGroup = (RadioGroup) view.findViewById(R.id.select_scene);
radioGroup.setOnCheckedChangeListener(this);
mSceneRoot = (ViewGroup) view.findViewById(R.id.scene_root);
// A Scene can be instantiated from a live view hierarchy.
mScene1 = new Scene(mSceneRoot, (ViewGroup) mSceneRoot.findViewById(R.id.container));
// You can also inflate a generate a Scene from a layout resource file.
mScene2 = Scene.getSceneForLayout(mSceneRoot, R.layout.scene2, getActivity());
// Another scene from a layout resource file.
mScene3 = Scene.getSceneForLayout(mSceneRoot, R.layout.scene3, getActivity());
// We create a custom TransitionManager for Scene 3, in which ChangeBounds and Fade
// take place at the same time.
mTransitionManagerForScene3 = TransitionInflater.from(getActivity())
.inflateTransitionManager(R.transition.scene3_transition_manager, mSceneRoot);
return view;
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.select_scene_1: {
// You can start an automatic transition with TransitionManager.go().这个是使用系统自动产生的效果
TransitionManager.go(mScene1);
break;
}
case R.id.select_scene_2: {
TransitionManager.go(mScene2);
break;
}
case R.id.select_scene_3: {
// You can also start a transition with a custom TransitionManager.<span style="font-family: Arial, Helvetica, sans-serif;">这个是使用自定义产生的效果</span>
mTransitionManagerForScene3.transitionTo(mScene3);
break;
}
case R.id.select_scene_4: {
// Alternatively, transition can be invoked dynamically without a Scene.
// For this, we first call TransitionManager.beginDelayedTransition().
TransitionManager.beginDelayedTransition(mSceneRoot);
// Then, we can just change view properties as usual.
View square = mSceneRoot.findViewById(R.id.transition_square);
ViewGroup.LayoutParams params = square.getLayoutParams();
int newSize = getResources().getDimensionPixelSize(R.dimen.square_size_expanded);
params.width = newSize;
params.height = newSize;
square.setLayoutParams(params);
break;
}
}
}
}
项目截图: