отчет по усс9-кияшко 2

Министерство образования и науки Российской Федерации

Калужский филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

«Московский государственный технический университет имени Н.Э. Баумана»

(КФ МГТУ им. Н.Э. Баумана)

ФАКУЛЬТЕТ

«Фундаментальные науки»

КАФЕДРА

«Программное обеспечение ЭВМ, информационные технологии и прикладная математика»

О Т Ч Е Т

ЛАБОРАТОРНАЯ РАБОТА №9

ДИСЦИПЛИНА:

«Управление сложными системами»

ТЕМА:

» Программирование виджетов рабочего экрана «

Выполнил: студент гр. ИВТ_Б-81

Кияшко Е.П.________________

Проверил:

Белов Ю.С._____________________

Дата сдачи (защиты) лабораторной работы:

Калуга, 2014 г.

Цель:

Научиться создавать пользовательские виджеты для рабочих экранов.

Научиться использовать конфигурационные окна для настройки виджетов.

Уметь понимать схемы взаимодействия виджета с другими элементами платформы Android.

Разработать эффективные приложения с учетом аппаратных ограничений мобильных устройств.

Уметь реализовывать логику работы приложения с учетом специфики платформы Android.

Задание

Вариант №9

Создать виджет отображающий текущую дату: День недели и месяц должен отображаться на русском языке. По нажатию на виджет должно открываться окно конфигурации для настройки цвета фона и шрифта. Цвет и шрифт выбирается с помощью элемента Spinner (минимальное количество вариантов для каждого параметра не менее 5).

Результат

Листинг программы

Main_activity.xml

package com.example.lab9v9;

import java.text.SimpleDateFormat;

import java.util.Date;

import android.app.PendingIntent;

import android.appwidget.AppWidgetManager;

import android.appwidget.AppWidgetProvider;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.widget.RemoteViews;

public class MainActivity extends AppWidgetProvider {

private static SimpleDateFormat formatter = new SimpleDateFormat(«EEEEEEEEE\nd MMM yyyy» );

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

//String now = formatter.format(new Date());

//RemoteViews updateViews = new RemoteViews(

//context.getPackageName(), R.layout.activity_main);

//updateViews.setTextViewText(R.id.text, now);

//appWidgetManager.updateAppWidget(appWidgetIds, updateViews);

SharedPreferences sp = context.getSharedPreferences(

ConfigActivity.WIDGET_PREF, Context.MODE_PRIVATE);

for (int id : appWidgetIds) {

updateWidget(context, appWidgetManager, sp, id);

}

super.onUpdate(context, appWidgetManager, appWidgetIds);



}

@Override

public void onEnabled(Context context) {

super.onEnabled(context);

}

@Override

public void onDeleted(Context context, int[] appWidgetIds) {

super.onDeleted(context, appWidgetIds);

Editor editor = context.getSharedPreferences(

ConfigActivity.WIDGET_PREF, Context.MODE_PRIVATE).edit();

for (int widgetID : appWidgetIds) {

editor.remove(ConfigActivity.WIDGET_BACKGROUND_COLOR + widgetID)

editor.remove(ConfigActivity.WIDGET_TEXT_COLOR + widgetID);

}

editor.commit();

}

@Override

public void onDisabled(Context context) {

super.onDisabled(context);

}

public static void updateWidget(Context context,

AppWidgetManager appWidgetManager, SharedPreferences sp, int widgetID) {

// TODO Auto-generated method stub

int widgetBackground = sp.getInt(ConfigActivity.WIDGET_BACKGROUND_COLOR + widgetID, 0);

int widgetTextColor = sp.getInt(ConfigActivity.WIDGET_TEXT_COLOR + widgetID, 0);

String now = formatter.format(new Date());

// Ќастраиваем внешний вид виджета

RemoteViews widgetView = new RemoteViews(context.getPackageName(),

R.layout.activity_main);

widgetView.setTextViewText(R.id.text, now);

widgetView.setTextColor(R.id.text, widgetTextColor);

widgetView.setInt(R.id.text, «setBackgroundColor», widgetBackground);

Intent configIntent = new Intent(context, ConfigActivity.class);

configIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);

configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);

PendingIntent pIntent = PendingIntent.getActivity(context, widgetID, configIntent, 0);

widgetView.setOnClickPendingIntent(R.id.text, pIntent);

// ќбновл¤ем виджет

appWidgetManager.updateAppWidget(widgetID, widgetView);

}

}

configActivity.java

public void onClick(View v) {

Spinner sp1 = (Spinner)findViewById(R.id.spinner1);

Spinner sp2 = (Spinner)findViewById(R.id.spinner2);

int bgrcol = getColor(sp1.getSelectedItemPosition());

int txtcol = getColor(sp2.getSelectedItemPosition());

SharedPreferences sp = getSharedPreferences(WIDGET_PREF, MODE_PRIVATE);

Editor editor = sp.edit();

editor.putInt(WIDGET_BACKGROUND_COLOR + widgetID, bgrcol);

editor.putInt(WIDGET_TEXT_COLOR + widgetID, txtcol);

editor.commit();

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);

MainActivity.updateWidget(this, appWidgetManager, sp, widgetID);

setResult(RESULT_OK, resultValue);

finish();

}

}

Activity_main.xml

«1.0″ encoding=«utf-8″?>

«http://schemas.android.com/apk/res/android»

android:layout_width=«fill_parent»

android:layout_height=«fill_parent»

android:background=«#6600ff00″

android:orientation=«vertical» >

android:id=«@+id/text»

android:layout_width=«fill_parent»

android:layout_height=«fill_parent»

android:gravity=«center»

android:text=«@string/hello»

android:textColor=«@android:color/black»

android:textSize=«18sp» />

LinearLayout>

config.xml

«1.0″ encoding=«utf-8″?>

xmlns:android=«http://schemas.android.com/apk/res/android»

android:layout_width=«match_parent»

android:layout_height=«match_parent»

android:orientation=«vertical»>

android:id=«@+id/spinner1″

android:layout_width=«match_parent»

android:layout_height=«wrap_content»

android:entries=«@array/color» />

android:id=«@+id/spinner2″

android:layout_width=«match_parent»

android:layout_height=«wrap_content»

android:entries=«@array/color» />

android:layout_width=«fill_parent»

android:layout_height=«wrap_content»

android:onClick=«onClick»

android:text=«@string/ok» >

LinearLayout>

Вывод:

В ходе лабораторной работы были получены навыки создания пользовательских виджетов для рабочих экранов, а также умение понимать схемы взаимодействия виджета с другими элементами платформы Android.

.




Предыдущий:

Следующий: