Android开发如何设置Dialog样式 5
核心代码:
package com.zms.toast;
import android.app.Dialog;
import android.content.Context;
import android.content.res.Resources;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import java.util.Random;
/**
* Created by AlexZhou on 2015/3/2.
* 14:51
*/
public class CustomDialog extends Dialog {
private static int defaultWidth = 200;
private static int defaultHeight = 160;
private int progress = 0;
private TextView dialogText;
public CustomDialog(Context context) {
super(context);
}
public CustomDialog(Context context, int layout, int style) {
this(context, defaultWidth, defaultHeight, layout, style);
}
public float getDensity(Context context) {
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
return dm.density;
}
public CustomDialog(Context context, int width, int height, int layout, int style) {
super(context, style);
// 设置内容
setContentView(layout);
// 设置窗口属性
Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
// 设置宽度、高度、密度、对齐方式
float density = getDensity(context);
params.width = (int) (width * density);
params.height = (int) (height * density);
params.gravity = Gravity.CENTER;
window.setAttributes(params);
dialogText = (TextView) findViewById(R.id.dialogText);
new Thread(new TimeThread()).start();
}
final Handler timeHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
if (progress < 100) {
progress = progress + new Random().nextInt(10);
if (progress <= 100) {
dialogText.setText(更新进度 + progress + %);
} else {
dialogText.setText(更新进度100%);
}
} else {
dialogText.setText(更新完成);
dismiss();
}
}
super.handleMessage(msg);
}
};
public class TimeThread implements Runnable {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
Message message = new Message();
message.what = 1;
timeHandler.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
@Override
public void dismiss() {
super.dismiss();
}
}
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int position = info.position;
FileItem item = mListCurrDirectory.get(position);
if (item.getPath().endsWith(".apk"))
// if (Tools.hasConfigFile()) {
menu.add(Menu.NONE, 0, Menu.NONE, R.string.title_install);
// }
else
menu.add(Menu.NONE, 0, Menu.NONE, R.string.title_open);
menu.add(Menu.NONE, 3, Menu.NONE, R.string.title_copy);
if (mMediaType == MediaType.All) {
menu.add(Menu.NONE, 2, Menu.NONE, R.string.title_delete);
menu.add(Menu.NONE, 4, Menu.NONE, R.string.title_rename);
menu.add(Menu.NONE, 5, Menu.NONE, R.string.title_cut);
}
menu.add(Menu.NONE, 1, Menu.NONE, R.string.title_property);
if (FileUtils.isImage(item)) {
menu.add(Menu.NONE, 6, Menu.NONE, R.string.title_wallpater);
}
menu.setHeaderIcon(android.R.drawable.ic_menu_view).setHeaderTitle(
R.string.title_actions);
}
2014-08-08 · 知道合伙人软件行家
app需要没有标题栏,@android:style/Theme.Holo.Light是需要API11的,但我需要最低兼容到2.2,目前是这样设置的 android:theme="@android:style/Theme.Light.NoTitleBar"
Dialog是代码生成的,如何解决呢?
建议下载最新版本的SDK里面自带最新的ADT版的eclipse,
创建项目的时候,里面会有一个android.support.v7.appcompat
可以让3.0以下的版本兼容actionBar 和一些样式
试了几乎全网的方法,觉得设计.xml文件布局,然后在.java文件中加载布局,最简单灵活。
final AlertDialog ad = new AlertDialog.Builder(this)
.create();
ad1.show();
Window window = ad.getWindow();
window.setContentView(R.layout.dialog_1);
广告 您可能关注的内容 |