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

android自定义dialog实现app换肤功能

2015-12-08 11:32 507 查看
1.先是写自定义的MyDialog类

package com.oracle.cary.myphoneprotector1;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

import java.io.InputStream;

public class Mydialog extends Dialog implements
View.OnClickListener {
private Button btn_bg_1;
private Button btn_bg_2;
private Button btn_bg_3;
private Button btn_bg_4;
private Button btn_bg_5;
private Button btn_bg_6;
private Button btn_bg_7;
private Button btn_bg_8;
public static int BG_CHOICE = -1;
private Context mContext;
private LinearLayout layout_root;
// protected static final String TAG = "Mydialog";
private OnButtonClickListener mlistener;

public Mydialog(Context context, int theme) {
super(context, theme);
mContext = context;

}

protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.view_addconperson_skin);
super.onCreate(savedInstanceState);
btn_bg_1 = (Button) findViewById(R.id.btn_bg1);
btn_bg_2 = (Button) findViewById(R.id.btn_bg2);
btn_bg_3 = (Button) findViewById(R.id.btn_bg3);
btn_bg_4 = (Button) findViewById(R.id.btn_bg4);
btn_bg_5 = (Button) findViewById(R.id.btn_bg5);
btn_bg_6 = (Button) findViewById(R.id.btn_bg6);
btn_bg_7 = (Button) findViewById(R.id.btn_bg7);
btn_bg_8 = (Button) findViewById(R.id.btn_bg8);

btn_bg_1.setOnClickListener(this);
btn_bg_2.setOnClickListener(this);
btn_bg_3.setOnClickListener(this);
btn_bg_4.setOnClickListener(this);
btn_bg_5.setOnClickListener(this);
btn_bg_6.setOnClickListener(this);
btn_bg_7.setOnClickListener(this);
btn_bg_8.setOnClickListener(this);

int width = mContext.getResources().getDisplayMetrics().widthPixels;
int height = mContext.getResources().getDisplayMetrics().heightPixels;

4000
layout_root = (LinearLayout) findViewById(R.id.layout_root);
LayoutParams params = layout_root.getLayoutParams();
params.width = (int) (width*0.75);
params.height = (int) (height*0.5);
layout_root.setLayoutParams(params);
}

public void setOnButtonClickListener(OnButtonClickListener listener) {
this.mlistener = listener;
}

interface OnButtonClickListener {
void onButtonClick();
}

public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_bg1:
dismiss();
BG_CHOICE = 1;
mlistener.onButtonClick();
break;
case R.id.btn_bg2:
dismiss();
BG_CHOICE = 2;
mlistener.onButtonClick();
break;
case R.id.btn_bg3:
dismiss();
BG_CHOICE = 3;
mlistener.onButtonClick();
break;
case R.id.btn_bg4:
dismiss();
BG_CHOICE = 4;
mlistener.onButtonClick();
break;
case R.id.btn_bg5:
dismiss();
BG_CHOICE = 5;
mlistener.onButtonClick();
break;
case R.id.btn_bg6:
dismiss();
BG_CHOICE = 6;
mlistener.onButtonClick();
break;
case R.id.btn_bg7:
dismiss();
BG_CHOICE = 7;
mlistener.onButtonClick();
break;
case R.id.btn_bg8:
dismiss();
BG_CHOICE = 8;
mlistener.onButtonClick();
break;

default:
break;
}

}

}

2.布局文件xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="300dp">

<LinearLayout
android:id="@+id/layout_root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">

<Button
android:id="@+id/btn_bg1"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_tabhost_widget" />

<Button
android:id="@+id/btn_bg2"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_taghost_widget_11" />

<Button
android:id="@+id/btn_bg3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_taghost_widget_02" />

<Button
android:id="@+id/btn_bg4"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_taghost_widget_03" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">

<Button
android:id="@+id/btn_bg5"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_tabhost_widget_04" />

<Button
android:id="@+id/btn_bg6"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_tabhost_widget_05" />

<Button
android:id="@+id/btn_bg7"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_tabhost_widget_06" />

<Button
android:id="@+id/btn_bg8"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="@drawable/bg_tabhost_widget_07" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>

</LinearLayout>
</ScrollView>

3.调用这个自定义dialog

if (mydialog == null) {
mydialog = new Mydialog(MainFrame.this,
R.style.costomDiaologtheme);
mydialog.setOnButtonClickListener(new Mydialog.OnButtonClickListener() {
public void onButtonClick() {
notifySkin();
}
});
}
mydialog.show();

4.最终效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息