关于弹出对话框时 标题栏的抖动有关问题
关于弹出对话框时 标题栏的抖动问题
遇到这个问题是在camera的MenuHelper类中,我们需要的处理就是添加语句:
AlertDialog ad = adBuilder.create();
ad.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
ad.show();
,详细如下
if ((inclusions & INCLUDE_DETAILS_MENU) != 0) {
MenuItem detailsMenu = menu.add(0, 0, 80, R.string.details)
.setOnMenuItemClickListener(
new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
onInvoke.run(new MenuCallback() {
public void run(Uri u,
ImageManager.IImage image) {
if (image == null)
return;
AlertDialog.Builder builder = new AlertDialog.Builder(
activity);
final View d = View.inflate(
activity,
R.layout.detailsview, null);
ImageView imageView = (ImageView) d
.findViewById(R.id.details_thumbnail_image);
imageView.setImageBitmap(image
.miniThumbBitmap());
TextView textView = (TextView) d
.findViewById(R.id.details_image_title);
textView.setText(image
.getDisplayName());
long length = getImageFileSize(image);
String lengthString = lengthString = length < 0 ? ""
: android.text.format.Formatter
.formatFileSize(
activity,
length);
((TextView) d
.findViewById(R.id.details_file_size_value))
.setText(lengthString);
int dimensionWidth = 0;
int dimensionHeight = 0;
if (isImage) {
dimensionWidth = image
.getWidth();
dimensionHeight = image
.getHeight();
d
.findViewById(
R.id.details_duration_row)
.setVisibility(
View.GONE);
d
.findViewById(
R.id.details_frame_rate_row)
.setVisibility(
View.GONE);
d
.findViewById(
R.id.details_bit_rate_row)
.setVisibility(
View.GONE);
d
.findViewById(
R.id.details_format_row)
.setVisibility(
View.GONE);
d.findViewById(
R.id.details_codec_row)
.setVisibility(
View.GONE);
} else {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever
.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY);
retriever
.setDataSource(image
.getDataPath());
try {
dimensionWidth = Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
dimensionHeight = Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
} catch (NumberFormatException e) {
dimensionWidth = 0;
dimensionHeight = 0;
}
try {
int durationMs = Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
String durationValue = formatDuration(
activity,
durationMs);
((TextView) d
.findViewById(R.id.details_duration_value))
.setText(durationValue);
} catch (NumberFormatException e) {
d
.findViewById(
R.id.details_frame_rate_row)
.setVisibility(
View.GONE);
}
try {
String frame_rate = String
.format(
activity
.getString(R.string.details_fps),
Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_FRAME_RATE)));
((TextView) d
.findViewById(R.id.details_frame_rate_value))
.setText(frame_rate);
} catch (NumberFormatException e) {
d
.findViewById(
R.id.details_frame_rate_row)
.setVisibility(
View.GONE);
}
try {
long bitRate = Long
.parseLong(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BIT_RATE));
String bps;
if (bitRate < 1000000) {
bps = String
.format(
activity
.getString(R.string.details_kbps),
bitRate / 1000);
} else {
bps = String
.format(
activity
.getString(R.string.details_mbps),
((double) bitRate) / 1000000.0);
}
((TextView) d
.findViewById(R.id.details_bit_rate_value))
.setText(bps);
} catch (NumberFormatException e) {
d
.findViewById(
R.id.details_bit_rate_row)
.setVisibility(
View.GONE);
}
String format = retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_FORMAT);
((TextView) d
.findViewById(R.id.details_format_value))
.setText(format);
String codec = retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CODEC);
if (codec == null) {
d
.findViewById(
R.id.details_codec_row)
.setVisibility(
View.GONE);
} else {
((TextView) d
.findViewById(R.id.details_codec_value))
.setText(codec);
}
} catch (RuntimeException ex) {
// Assume this is a corrupt
// video file.
} finally {
try {
retriever.release();
} catch (RuntimeException ex) {
// Ignore failures while
// cleaning up.
}
}
}
String dimensionsString = String
.format(
activity
.getString(R.string.details_dimension_x),
dimensionWidth,
dimensionHeight);
((TextView) d
.findViewById(R.id.details_resolution_value))
.setText(dimensionsString);
String dateString = "";
long dateTaken = image
.getDateTaken();
if (dateTaken != 0) {
java.util.Date date = new java.util.Date(
image.getDateTaken());
java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat();
dateString = dateFormat
.format(date);
((TextView) d
.findViewById(R.id.details_date_taken_value))
.setText(dateString);
} else {
d
.findViewById(
R.id.details_date_taken_row)
.setVisibility(
View.GONE);
}
builder
.setNeutralButton(
R.string.details_ok,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
dialog
.dismiss();
}
});
builder
.setIcon(
android.R.drawable.ic_dialog_info)
.setTitle(
R.string.details_panel_title)
.setView(d);
AlertDialog able = builder.create();
able
.getWindow()
.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
able.show(); }
});
return true;
}
});
detailsMenu.setIcon(R.drawable.ic_menu_view_details);
}
遇到这个问题是在camera的MenuHelper类中,我们需要的处理就是添加语句:
AlertDialog ad = adBuilder.create();
ad.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
ad.show();
,详细如下
if ((inclusions & INCLUDE_DETAILS_MENU) != 0) {
MenuItem detailsMenu = menu.add(0, 0, 80, R.string.details)
.setOnMenuItemClickListener(
new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
onInvoke.run(new MenuCallback() {
public void run(Uri u,
ImageManager.IImage image) {
if (image == null)
return;
AlertDialog.Builder builder = new AlertDialog.Builder(
activity);
final View d = View.inflate(
activity,
R.layout.detailsview, null);
ImageView imageView = (ImageView) d
.findViewById(R.id.details_thumbnail_image);
imageView.setImageBitmap(image
.miniThumbBitmap());
TextView textView = (TextView) d
.findViewById(R.id.details_image_title);
textView.setText(image
.getDisplayName());
long length = getImageFileSize(image);
String lengthString = lengthString = length < 0 ? ""
: android.text.format.Formatter
.formatFileSize(
activity,
length);
((TextView) d
.findViewById(R.id.details_file_size_value))
.setText(lengthString);
int dimensionWidth = 0;
int dimensionHeight = 0;
if (isImage) {
dimensionWidth = image
.getWidth();
dimensionHeight = image
.getHeight();
d
.findViewById(
R.id.details_duration_row)
.setVisibility(
View.GONE);
d
.findViewById(
R.id.details_frame_rate_row)
.setVisibility(
View.GONE);
d
.findViewById(
R.id.details_bit_rate_row)
.setVisibility(
View.GONE);
d
.findViewById(
R.id.details_format_row)
.setVisibility(
View.GONE);
d.findViewById(
R.id.details_codec_row)
.setVisibility(
View.GONE);
} else {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever
.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY);
retriever
.setDataSource(image
.getDataPath());
try {
dimensionWidth = Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
dimensionHeight = Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
} catch (NumberFormatException e) {
dimensionWidth = 0;
dimensionHeight = 0;
}
try {
int durationMs = Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
String durationValue = formatDuration(
activity,
durationMs);
((TextView) d
.findViewById(R.id.details_duration_value))
.setText(durationValue);
} catch (NumberFormatException e) {
d
.findViewById(
R.id.details_frame_rate_row)
.setVisibility(
View.GONE);
}
try {
String frame_rate = String
.format(
activity
.getString(R.string.details_fps),
Integer
.parseInt(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_FRAME_RATE)));
((TextView) d
.findViewById(R.id.details_frame_rate_value))
.setText(frame_rate);
} catch (NumberFormatException e) {
d
.findViewById(
R.id.details_frame_rate_row)
.setVisibility(
View.GONE);
}
try {
long bitRate = Long
.parseLong(retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BIT_RATE));
String bps;
if (bitRate < 1000000) {
bps = String
.format(
activity
.getString(R.string.details_kbps),
bitRate / 1000);
} else {
bps = String
.format(
activity
.getString(R.string.details_mbps),
((double) bitRate) / 1000000.0);
}
((TextView) d
.findViewById(R.id.details_bit_rate_value))
.setText(bps);
} catch (NumberFormatException e) {
d
.findViewById(
R.id.details_bit_rate_row)
.setVisibility(
View.GONE);
}
String format = retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_FORMAT);
((TextView) d
.findViewById(R.id.details_format_value))
.setText(format);
String codec = retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CODEC);
if (codec == null) {
d
.findViewById(
R.id.details_codec_row)
.setVisibility(
View.GONE);
} else {
((TextView) d
.findViewById(R.id.details_codec_value))
.setText(codec);
}
} catch (RuntimeException ex) {
// Assume this is a corrupt
// video file.
} finally {
try {
retriever.release();
} catch (RuntimeException ex) {
// Ignore failures while
// cleaning up.
}
}
}
String dimensionsString = String
.format(
activity
.getString(R.string.details_dimension_x),
dimensionWidth,
dimensionHeight);
((TextView) d
.findViewById(R.id.details_resolution_value))
.setText(dimensionsString);
String dateString = "";
long dateTaken = image
.getDateTaken();
if (dateTaken != 0) {
java.util.Date date = new java.util.Date(
image.getDateTaken());
java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat();
dateString = dateFormat
.format(date);
((TextView) d
.findViewById(R.id.details_date_taken_value))
.setText(dateString);
} else {
d
.findViewById(
R.id.details_date_taken_row)
.setVisibility(
View.GONE);
}
builder
.setNeutralButton(
R.string.details_ok,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
dialog
.dismiss();
}
});
builder
.setIcon(
android.R.drawable.ic_dialog_info)
.setTitle(
R.string.details_panel_title)
.setView(d);
AlertDialog able = builder.create();
able
.getWindow()
.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
able.show(); }
});
return true;
}
});
detailsMenu.setIcon(R.drawable.ic_menu_view_details);
}