1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ranchaoqun-ZTheme

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ZTheme — это компактная Android-платформа для смены тем оформления, которая динамически загружает APK и заменяет слои View в приложениях, разработанных на основе многоуровневой архитектуры MVP или MVC.

Платформа совместима с виртуальными машинами ART и Dalvik.

ZTheme: пример использования

  1. Создание метода объявления ZTheme:
ZTheme createTheme(String apkPath, Context context);
ZTheme createTheme(String apkPath, String libraryPath, Context context)
  1. Использование APK для создания объекта ZTheme:
mZTheme = ZTheme.createTheme("/sdcard/theme/theme_dark.apk", this);
  1. Объявление метода создания ZThemeView:
//создание объекта ZThemeView с использованием рефлексии, здесь передаётся имя класса
IThemeView getThemeView(String className)
  1. Создание объекта ZThemeView:
IThemeView.getThemeView("com.rxx.ztheme.dark.view.LoginView");
  1. Получение представления и загрузка его в Activity:
setContentView(IThemeView.getView());

Пример кода Demo: простая реализация на основе MVC

  1. Определение слоя Controller: ILoginController
public abstract class ILoginController extends BaseActivity<ILoginView,ILoginController> {

    /**
     * 登录
     */
    public abstract void doLogin();

    /**
     * Обработка переключения темы
     */
    public abstract void doChangeTheme();

    @Override
    public String getViewTag() {
        return PhoneMateViewRelated.TAG_LOGIN;
    }
}
  1. Реализация слоя Controller: LoginActivity
public class LoginActivity extends ILoginController {

    private int themeIndex = 0;

    @Override
    protected void zOnCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public void doLogin() {
        Toast.makeText(this, "doLogin,name:"+mView.getAccountName()+",password:"+mView.getPassword(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void doChangeTheme() {
        if ((themeIndex % 2) == 0) {
            zGetApplication().changeTheme(((PhoneMateApplication) zGetApplication()).getLight(), null);
        } else {
            zGetApplication().changeTheme(((PhoneMateApplication) zGetApplication()).getDark(), null);
        }
        themeIndex++;
    }

}
  1. Определение слоя View: ILoginView
public abstract class ILoginView extends BaseView<ILoginController>{

    public ILoginView(Context context, ZTheme iTheme) {
        super(context, iTheme);
    }

    public abstract String getAccountName();

    public abstract String getPassword();

    public abstract void showLogin();

    public abstract void showInput();
}
  1. Реализация слоя View: Dark-тема
public class LoginView extends ILoginView implements View.OnClickListener {

    private LinearLayout mLayoutAccount;

    private ProgressBar mLoginProgressBar;

    private EditText mEditTextAccount;

    private EditText mEditTextPassword;

    private Button mButtonLogin;

    private Button mButtonChange;

    public LoginView(Context context, ZTheme zTheme) {
        super(context, zTheme);
        setContentView(R.layout.activity_login);
        mLayoutAccount = (LinearLayout) findViewById(R.id.mLayoutAccount);
        mLoginProgressBar = (ProgressBar) findViewById(R.id.mLoginProgressBar);
        mEditTextAccount = (EditText) findViewById(R.id.mEditTextAccount);
        mEditTextPassword = (EditText) findViewById(R.id.mEditTextPassword);
        mButtonLogin = (Button) findViewById(R.id.mButtonLogin);
        mButtonChange = (Button) findViewById(R.id.mButtonChange);

        mButtonLogin.setOnClickListener(this);
        mButtonChange.setOnClickListener(this);
    }

    @Override
    public String getAccountName() {
        return mEditTextAccount.getText().toString();
    }

    @Override
    public String getPassword() {
        return mEditTextPassword.getText().toString();
    }

    @Override
    public void showLogin() {
        mLoginProgressBar.setVisibility(View.VISIBLE);
        mLayoutAccount.setVisibility(View.GONE);
    }

    @Override
    public void showInput() {
        mLoginProgressBar.setVisibility(View.GONE);
        mLayoutAccount.setVisibility(View.VISIBLE);
    }

    @Override
    public ViewType getViewType() {
        return ViewType.VIEW_PLUG;
    }

    @Override
    public void onClick(View view) {
        if (view == mButtonLogin && mController != null &&

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

ZTheme — это компактный Android-фреймворк для создания тем оформления с помощью плагинов, динамической загрузки APK и замены слоя View в многоуровневой архитектуре MVP или MVC. Он позволяет реализовать функцию переключения тем оформления. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ranchaoqun-ZTheme.git
git@api.gitlife.ru:oschina-mirror/ranchaoqun-ZTheme.git
oschina-mirror
ranchaoqun-ZTheme
ranchaoqun-ZTheme
master