WallpaperManager(벽지관리자)
이 섹션 소개:
이 섹션에서는 이름에서 알 수 있듯이 WallpaperManager(배경화면 관리자)가 제공되며 휴대폰 배경화면과 관련됩니다. API 이 섹션에서는 WallpaperManager의 기본 사용법을 설명하고 시스템 자체를 호출합니다. 배경화면 선택 기능, 액티비티 배경을 배경화면으로 설정하고 정기적으로 배경화면을 바꾸는 예시를 작성해보세요~ 좋아요, BB는 아니고 이 섹션을 시작하겠습니다~
공식 API 문서:WallpaperManager
1 WallpaperManager의 기본 사용법
관련 방법
배경화면 설정 관련 방법:
- setBitmap ( Bitmap bitmap): 배경화면을 bitmap
- setResource(int resid)로 표현되는 비트맵으로 설정: 배경화면을 resid 리소스
- setStream(InputStream data)으로 표현되는 이미지로 설정: 배경화면을 데이터로 설정 데이터로 표현되는 그림
다른 방법:
- clear(): 배경화면을 지우고 시스템 기본 배경화면으로 다시 설정
- getDesiredMinimumHeight(): 최소 배경화면 높이
- getDesiredMinimumWidth() : 최소 배경화면 Width
- getDrawable(): 현재 시스템 배경화면을 가져옵니다. 배경화면이 설정되지 않은 경우 시스템 기본 배경화면으로 돌아갑니다
- getWallpaperInfo(): 현재 배경화면이 동적 배경화면임을 추가하고 동적을 반환합니다. 배경화면 정보
- peekDrawable() : 현재 시스템 배경화면을 가져오고, 배경화면이 설정되지 않은 경우 null을 반환합니다.
WallpaperManager 개체 가져오기
WallpaperManager wpManager =WallpaperManager.getInstance(this);
배경화면을 설정하는 데 필요한 권한
2. 선택 기능
Button btn_set = (Button) findViewById(R.id.btn_set); btn_set.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent chooseIntent = new Intent(Intent.ACTION_SET_WALLPAPER); startActivity(Intent.createChooser(chooseIntent, "选择壁纸")); } });
렌더링 실행:
3. 활동의 배경을 바탕화면 배경으로 설정합니다.
두 가지 방법이 있는데, 하나는 활동에 코드를 사용하여 설정하는 것이고, 다른 하나는 AndroidManifest.xml에서 수정하려면 활동테마~!
방법 1: 활동에서 설정:
@Override protected void onCreate(Bundle savedInstanceState) { setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
방법 2: AndroidManifest.Service에서 테마 수정), 잘 모르겠으면 다음으로 이동하세요. 10.5 AlarmManager(알람 시계 서비스) )
배우러~ 데모를 작성해 봅시다~렌더링 실행 중
코드 구현
:먼저 배경 화면을 정기적으로 변경하는 서비스를 작성해 보겠습니다. WallPaperService.java
<activity android:name=".MainActivity" android:theme="@android:style/Theme.Wallpaper.NoTitleBar"/>
그런 다음 간단한 레이아웃과 3개의 버튼을 만듭니다. activity_main.xml:
/** * Created by Jay on 2015/11/13 0013. */ public class WallPaperService extends Service { private int current = 0; //当前壁纸下标 private int[] papers = new int[]{R.mipmap.gui_1,R.mipmap.gui_2,R.mipmap.gui_3,R.mipmap.gui_4}; private WallpaperManager wManager = null; //定义WallpaperManager服务 @Override public void onCreate() { super.onCreate(); wManager = WallpaperManager.getInstance(this); } @Override public int onStartCommand(Intent intent, int flags, int startId) { if(current >= 4)current = 0; try{ wManager.setResource(papers[current++]); }catch(Exception e){e.printStackTrace();} return START_STICKY; } @Override public IBinder onBind(Intent intent) { return null; } }
그런 다음 여기에서 인스턴스화된 활동을 관리자로 설정하고 일정을 설정합니다. event~: MainActivity.java:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_on" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开启自动换壁纸" /> <Button android:id="@+id/btn_off" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="关闭自动换壁纸" /> <Button android:id="@+id/btn_clean" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="清除壁纸" /></LinearLayout>
마지막으로 배경화면을 설정하고 서비스에 등록할 수 있는 권한을 추가하는 것을 잊지 마세요: AndroidManifest.xml:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_on; private Button btn_off; private Button btn_clean; private AlarmManager aManager; private PendingIntent pi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //①获得AlarmManager对象: aManager = (AlarmManager) getSystemService(ALARM_SERVICE); //②指定要启动的Service,并指明动作是Servce: Intent intent = new Intent(MainActivity.this, WallPaperService.class); pi = PendingIntent.getService(MainActivity.this, 0, intent, 0); bindViews(); } private void bindViews() { btn_on = (Button) findViewById(R.id.btn_on); btn_off = (Button) findViewById(R.id.btn_off); btn_clean = (Button) findViewById(R.id.btn_clean); btn_on.setOnClickListener(this); btn_off.setOnClickListener(this); btn_clean.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_on: aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 3000, pi); btn_on.setEnabled(false); btn_off.setEnabled(true); Toast.makeText(MainActivity.this, "自动更换壁纸设置成功", Toast.LENGTH_SHORT).show(); break; case R.id.btn_off: btn_on.setEnabled(true); btn_off.setEnabled(false); aManager.cancel(pi); break; case R.id.btn_clean: try { WallpaperManager.getInstance(getApplicationContext()).clear(); Toast.makeText(MainActivity.this, "清除壁纸成功~", Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); } break; } } }
좋아요, 매우 간단합니다~
5 . 이 섹션의 샘플 코드를 다운로드하세요
이 섹션 요약:
자, 이 섹션에서는 WallpaperManager의 몇 가지 기본 사용법을 소개합니다. 자세한 내용은 직접 알아야 합니다. 탐색해 보세요~감사합니다~!