📜  如何创建Android应用程序的基本小部件?

📅  最后修改于: 2021-05-10 16:35:40             🧑  作者: Mango

小部件是应用程序的微版本,由仅在主屏幕锁定屏幕上显示的应用程序的某些功能组成。例如,我们在主屏幕上看到WeatherTimeGoogle搜索栏,在锁屏上看到FaceLockFingerprintLock ,这是设备上可用的一些小部件。当您安装或从Web下载应用程序时,小部件随应用程序一起提供。通常,电话具有制造配置,但是用户可以在以后及时调整这些元素。在本文中,我们演示了如何为Android App实现基本的小部件。

时间小部件,天气小部件,Google搜索栏小部件

创建基本小部件的步骤

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目请注意,选择Kotlin作为编程语言。

步骤2:将App小部件添加到项目中

  • 右键单击该应用程序,将光标移动到new ,最后找到“ Widget ”选项,然后选择它。

小部件屏幕截图

  • 指定窗口小部件的必需属性,例如min。宽度高度,配置文件和首选语言等,然后继续。文件是自动生成的。

小部件屏幕截图

步骤3:安装并运行代码

  • 在Android虚拟设备(AVD)或个人设备上安装并运行代码。
  • 打开手机的小部件部分,查找带有“应用程序”名称的小部件,将其选中,然后将其带到主屏幕。
  • 尝试更改尺寸,我们就完成了!

输出:在模拟器上运行

在此过程中生成了哪些额外的文件?

在此选择和部署过程中,将生成一些额外的文件,并对现有文件进行较小的更改。无需编程即可生成基本的窗口小部件,仅在将应用程序嵌入窗口小部件内时才需要编程,如本文后面的部分所述。现在,让我们逐一说明更改对现有文件所做的更改的新生成的文件。

  • NewAppWidget.kt

它是在哪里产生的?

NewAppWidget

NewAppWidget.kt
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.widget.RemoteViews
  
// Implementation of App Widget functionality.
class NewAppWidget : AppWidgetProvider() {
    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray
    ) {
        // There may be multiple widgets active, so update all of them
        for (appWidgetId in appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId)
        }
    }
  
    // Enter relevant functionality for 
    // when the first widget is created
    override fun onEnabled(context: Context) {
         
    }
      
    // Enter relevant functionality for
    // when the last widget is disabled
    override fun onDisabled(context: Context) {
          
    }
}
  
internal fun updateAppWidget(
    context: Context,
    appWidgetManager: AppWidgetManager,
    appWidgetId: Int
) {
    val widgetText = context.getString(R.string.appwidget_text)
    // Construct the RemoteViews object
    val views = RemoteViews(context.packageName, R.layout.new_app_widget)
    views.setTextViewText(R.id.appwidget_text, widgetText)
  
    // Instruct the widget manager to update the widget
    appWidgetManager.updateAppWidget(appWidgetId, views)
}


new_app_widget.xml

  
    
  


dimens.xml


  
    
    8dp
  


new_app_widget_info.xml



AndroidManifest.xml


  
    
        
      
        
            
                
            
  
            
        
   
        
        
            
                
  
                
            
        
    
  


  • new_app_widget.xml

它是在哪里产生的?

new_app_widget

new_app_widget.xml


  
    
  

  • dimens.xml

它是在哪里产生的?

变暗

dimens.xml



  
    
    8dp
  

  • new_app_widget_info.xml

它是在哪里产生的?

new_app_widget_info

new_app_widget_info.xml




  • 对AndroidManifest.xml文件所做的更改

AndroidManifest.xml



  
    
        
      
        
            
                
            
  
            
        
   
        
        
            
                
  
                
            
        
    
  

仍然需要编程吗?如果是这样,将更改代码的哪一部分? (续)

是的,仍然需要编程才能创建窗口小部件。在NewAppWidget.kt(属于Kotlin类)及其对应的显示小部件的new_app_widget.xml文件中进行更改。可以在用于应用程序操作的update app widget函数内声明功能,并在new_app_widget.xml内声明函数,以将多个元素添加到widget的显示中。由于两个文件都是内部链接的,因此更改其中一个会将更改引入另一个文件。

关于实现多个小部件

应用程序可以使用的窗口小部件数量没有限制,但是,由于窗口小部件正在动态更改元素,因此建议尽量减少窗口小部件的数量。有更新回调(请参阅new_app_widget_info.xml文件),updatePeriodMillis是一个参数,应用程序会在此参数不断更新小部件,这意味着,用于更新小部件的应用程序线程将在后台运行,并获取有限RAM的一部分。

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!