您的位置:首页 > 移动开发 > Android开发

android实用代码片段(三)

2015-03-30 18:46 411 查看

android实用代码片段(三)

ListView使用ViewHolder极简写法

SparseArrays map integers to Objects. Unlike a normal array of Objects, there can be gaps in the indices. It is intended to be more efficient than using a HashMap to map Integers to Objects.

SparseArrays 类以integer对应Object,不像普通的对象数列,在索引间SparseArrays中可以间隙。SparseArrays相对于Integer对应对Object的哈希表更加高效。

此代码用SparseArray中得id与view的对应关系,代替了新建一个ViewHolder对象的方法。

public static <T extends View> T getAdapterView(View convertView, int id) {
SparseArray<View> viewHolder = (SparseArray<View>) convertView.getTag();
if (viewHolder == null) {
viewHolder = new SparseArray<View>();
convertView.setTag(viewHolder);
}
View childView = viewHolder.get(id);
if (childView == null) {
childView = convertView.findViewById(id);
viewHolder.put(id, childView);
}
return (T) childView;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_feed_item, parent, false);
}

ImageView thumnailView = getAdapterView(convertView, R.id.video_thumbnail);
ImageView avatarView =  getAdapterView(convertView, R.id.user_avatar);
ImageView appIconView = getAdapterView(convertView, R.id.app_icon);
}


设置Activity透明

用途:用于模拟Dialog效果,比如在Service中没法用Dialog,就可以用Activity来模拟

<style name="TransparentActivity" parent="AppBaseTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>


代码切换全屏

//切换到全屏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

//切换到非全屏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);


调用开发者选项中显示触摸位置功能

android.provider.Settings.System.putInt(getContentResolver(), "show_touches", 1);


获取设备上已安装并且可启动的应用列表

使用getInstalledApplications会返回很多无法启动甚至没有图标的系统应用ResolveInfo.activityInfo.applicationInfo也能取到想要的数据。

public List<ResolveInfo> getLauncherApp(){
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> activities = getPackageManager().queryIntentActivities(intent, 0);
return activities;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android