Przeglądaj źródła

[곻통][Common] 위젯 구현 중

Hasemi 6 lat temu
rodzic
commit
b5b5128726

+ 12 - 28
app/src/main/AndroidManifest.xml

@@ -20,17 +20,16 @@
     android:roundIcon="@mipmap/ic_launcher_round"
     android:supportsRtl="true"
     android:theme="@style/AppTheme">
-
     <activity
       android:name=".lifeplus.activity.SplashActivity"
       android:screenOrientation="portrait"
       android:theme="@style/SplashTheme">
       <intent-filter>
         <action android:name="android.intent.action.MAIN"/>
+
         <category android:name="android.intent.category.LAUNCHER"/>
       </intent-filter>
     </activity>
-
     <activity
       android:name=".lifeplus.activity.KakaoTalkActivity"
       android:screenOrientation="portrait">
@@ -45,159 +44,133 @@
           android:scheme="@string/kakao_scheme"/>
       </intent-filter>
     </activity>
-
     <activity
       android:name=".lifeplus.activity.MainActivity"
       android:launchMode="singleTask"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.NotiActivity"
       android:launchMode="singleTask"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.MenuActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.CategoryActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.ContentsOverviewActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.SeriesActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.ContentsActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.SignUpActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.LocationActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.FAQActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.CoopActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.MyCoinActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.WebFromContentsActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.BucketListActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.IntroductionActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.MapActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.EventActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.SearchActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.SearchResultActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.SystemCheckActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.MyEventActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.EventDetailActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.WinnerAnnouncementActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.UtilityActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name=".lifeplus.activity.MyMainActivity"
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
-
     <activity
       android:name="com.facebook.FacebookActivity"
       android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
@@ -214,5 +187,16 @@
       android:name="com.facebook.FacebookContentProvider"
       android:authorities="com.facebook.app.FacebookContentProvider252658048750865"
       android:exported="true"/>
+
+    <receiver android:name=".lifeplus.view.screen.widget.LifeplusWidget">
+      <intent-filter>
+        <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
+      </intent-filter>
+
+      <meta-data
+        android:name="android.appwidget.provider"
+        android:resource="@xml/lifeplus_widget_info"/>
+    </receiver>
   </application>
+
 </manifest>

+ 48 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/widget/LifeplusWidget.java

@@ -0,0 +1,48 @@
+package kr.co.zumo.app.lifeplus.view.screen.widget;
+
+import android.app.PendingIntent;
+import android.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProvider;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.RemoteViews;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.activity.MainActivity;
+
+/**
+ * Implementation of App Widget functionality.
+ */
+public class LifeplusWidget extends AppWidgetProvider {
+
+  static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
+                              int appWidgetId) {
+    // Construct the RemoteViews object
+    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.lifeplus_widget);
+    Intent main = new Intent(context, MainActivity.class);
+    views.setOnClickPendingIntent(R.id.image_view_bi, PendingIntent.getActivity(context, 0, main, 0));
+
+    appWidgetManager.updateAppWidget(appWidgetId, views);
+
+  }
+
+  @Override
+  public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+    // There may be multiple widgets active, so update all of them
+
+    for (int appWidgetId : appWidgetIds) {
+      updateAppWidget(context, appWidgetManager, appWidgetId);
+    }
+  }
+
+  @Override
+  public void onEnabled(Context context) {
+    // Enter relevant functionality for when the first widget is created
+  }
+
+  @Override
+  public void onDisabled(Context context) {
+    // Enter relevant functionality for when the last widget is disabled
+  }
+}
+

BIN
app/src/main/res/drawable-hdpi/icon_bottom_refresh.png


BIN
app/src/main/res/drawable-mdpi/icon_bottom_refresh.png


BIN
app/src/main/res/drawable-nodpi/example_appwidget_preview.png


BIN
app/src/main/res/drawable-xhdpi/icon_bottom_refresh.png


BIN
app/src/main/res/drawable-xxhdpi/icon_bottom_refresh.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_bottom_refresh.png


+ 0 - 9
app/src/main/res/drawable/icon_bottom_refresh.xml

@@ -1,9 +0,0 @@
-<vector android:height="18dp" android:viewportHeight="70"
-    android:viewportWidth="70" android:width="18dp" xmlns:android="http://schemas.android.com/apk/res/android">
-    <path android:fillColor="#00000000" android:fillType="nonZero"
-        android:pathData="M57.02,26.834C53.855,17.058 44.795,10 34.113,10 20.795,10 10,20.969 10,34.5S20.795,59 34.112,59C46.308,59 56.39,49.8 58,37.858"
-        android:strokeColor="#000" android:strokeWidth="4"/>
-    <path android:fillColor="#00000000" android:fillType="nonZero"
-        android:pathData="M62.04,13.601l-3.323,12.403a1.16,1.16 0,0 1,-1.42 0.82L44.893,23.5"
-        android:strokeColor="#000" android:strokeWidth="4"/>
-</vector>

+ 7 - 0
app/src/main/res/drawable/widget_radius.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+  <solid android:color="@color/CE6FFFFFF"/>
+  <corners
+    android:radius="8dp"/>
+</shape>

+ 72 - 0
app/src/main/res/layout/lifeplus_widget.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent">
+
+  <ImageView
+    android:id="@+id/image_view_background"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/banner_bg_1"
+    android:scaleType="centerCrop"
+    />
+
+  <ImageView
+    android:id="@+id/image_view_bi"
+    android:layout_width="36dp"
+    android:layout_height="17dp"
+    android:layout_marginStart="12dp"
+    android:layout_marginTop="15dp"
+    android:background="@drawable/bi_splash"
+    android:scaleType="centerCrop"
+    />
+
+  <RelativeLayout
+    android:layout_width="match_parent"
+    android:layout_height="53dp"
+    android:layout_gravity="bottom"
+    android:background="@drawable/widget_radius"
+    >
+
+    <TextView
+      android:id="@+id/text_view_title"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentStart="true"
+      android:layout_alignParentTop="true"
+      android:layout_marginStart="14dp"
+      android:layout_marginTop="11dp"
+      android:lineSpacingExtra="4sp"
+      android:text="무장해제 핑크홀릭 봄맞이 핑크카페 6"
+      android:textColor="@color/C000000"
+      android:textSize="12sp"
+      />
+
+    <TextView
+      android:id="@+id/text_view_sub_title"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_below="@+id/text_view_title"
+      android:layout_alignParentStart="true"
+      android:layout_marginStart="14dp"
+      android:layout_marginTop="2dp"
+      android:lineSpacingExtra="4sp"
+      android:text="봄 기운 만끽할 준비된 핑덕들 웰컴!"
+      android:textColor="@color/C666666"
+      android:textSize="11dp"
+      />
+
+    <ImageView
+      android:id="@+id/image_view_refresh"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentEnd="true"
+      android:layout_alignParentBottom="true"
+      android:padding="10dp"
+      android:src="@drawable/icon_bottom_refresh"
+      />
+  </RelativeLayout>
+</FrameLayout>

+ 10 - 0
app/src/main/res/values-v14/dimens.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+  <!--
+Refer to App Widget Documentation for margin information
+http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
+    -->
+  <dimen name="widget_margin">0dp</dimen>
+
+</resources>

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -11,6 +11,7 @@
   <color name="C80FFFFFF">#80FFFFFF</color> <!-- 50% -->
   <color name="CB3FFFFFF">#B3FFFFFF</color> <!-- 70% -->
   <color name="CCCFFFFFF">#CCFFFFFF</color> <!-- 80%-->
+  <color name="CE6FFFFFF">#E6FFFFFF</color> <!-- 90%-->
   <color name="CF2FFFFFF">#F2FFFFFF</color> <!-- 95% -->
 
   <color name="C000000">#000000</color>

+ 6 - 0
app/src/main/res/values/dimens.xml

@@ -18,4 +18,10 @@
   <dimen name="main_contents_first_image_offset_from_bottom">286dp</dimen> <!-- 45dp + (26+12)/2dp + 222dp -->
 
   <dimen name="lp_guide_paper_margin_bottom">220dp</dimen>
+
+  <!--
+Refer to App Widget Documentation for margin information
+http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
+    -->
+  <dimen name="widget_margin">8dp</dimen>
 </resources>

+ 11 - 0
app/src/main/res/xml/lifeplus_widget_info.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
+                    android:initialKeyguardLayout="@layout/lifeplus_widget"
+                    android:initialLayout="@layout/lifeplus_widget"
+                    android:minWidth="250dp"
+                    android:minHeight="100dp"
+                    android:previewImage="@drawable/bi_splash"
+                    android:resizeMode="horizontal|vertical"
+                    android:updatePeriodMillis="86400000"
+                    android:widgetCategory="home_screen">
+</appwidget-provider>