17f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet/* 27f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * Copyright (C) 2011 The Android Open Source Project 37f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * 47f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License"); 57f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * you may not use this file except in compliance with the License. 67f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * You may obtain a copy of the License at 77f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * 87f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * http://www.apache.org/licenses/LICENSE-2.0 97f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * 107f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * Unless required by applicable law or agreed to in writing, software 117f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS, 127f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * See the License for the specific language governing permissions and 147f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * limitations under the License. 157f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet */ 167f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet 177f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetpackage android.view; 187f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet 197f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport com.android.layoutlib.bridge.android.BridgeWindow; 207f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport com.android.layoutlib.bridge.android.BridgeWindowSession; 217f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet 2298365d7663cbd82979a5700faf0050220b01084dJeff Brownimport android.content.Context; 237f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport android.os.Handler; 247f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport android.view.View.AttachInfo; 257f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet 26f1dee199a009fec5e3a5d1469f654098261f8b06Xavier Ducrohet/** 27f1dee199a009fec5e3a5d1469f654098261f8b06Xavier Ducrohet * Class allowing access to package-protected methods/fields. 28f1dee199a009fec5e3a5d1469f654098261f8b06Xavier Ducrohet */ 297f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetpublic class AttachInfo_Accessor { 307f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet 317f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet public static void setAttachInfo(View view) { 3298365d7663cbd82979a5700faf0050220b01084dJeff Brown Context context = view.getContext(); 3398365d7663cbd82979a5700faf0050220b01084dJeff Brown WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); 3498365d7663cbd82979a5700faf0050220b01084dJeff Brown Display display = wm.getDefaultDisplay(); 3598365d7663cbd82979a5700faf0050220b01084dJeff Brown ViewRootImpl root = new ViewRootImpl(context, display); 367f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet AttachInfo info = new AttachInfo(new BridgeWindowSession(), new BridgeWindow(), 3798365d7663cbd82979a5700faf0050220b01084dJeff Brown display, root, new Handler(), null); 387f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet info.mHasWindowFocus = true; 397f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet info.mWindowVisibility = View.VISIBLE; 407f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet info.mInTouchMode = false; // this is so that we can display selections. 417f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet info.mHardwareAccelerated = false; 427f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet view.dispatchAttachedToWindow(info, 0); 437f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet } 447f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet 457f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet public static void dispatchOnPreDraw(View view) { 467f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet view.mAttachInfo.mTreeObserver.dispatchOnPreDraw(); 477f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet } 487f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet} 49