• .9图片的问题总结(Android studio制作):


    目录

     1、编辑点9图片: 左、上边的为拉伸区域,同时也是内容展示区域,右、下的绘制无效

    2、设置点9图片之前 studio配置

    3、点9图片的绘制

    4、.9图片的使用


     1、编辑点9图片: 左、上边的为拉伸区域,同时也是内容展示区域,右、下的绘制无效

    2、设置点9图片之前 studio配置

            Module下build.gradle文件中 

    1. android {
    2. aaptOptions {
    3. cruncherEnabled = false
    4. useNewCruncher = false
    5. }
    6. }

           如果以上配置未起作用(编译不识别点9图片),则需要重新编译一下项目 或者在gradle.properties文件中随便更改东西,然后重新编译一下,以此唤醒常常智商不在线的Androidstudio

    3、点9图片的绘制

            以上配置好了以后重新绘制点9图片(我遇到的问题是,之前创建的.9图片无效 还会变形,以上配置一遍再按照这一步创建.9)

            选中图片-->鼠标右键-->Creat 9-patch file...

            主要是左上,放大图片,可以用鼠标描边,或者把鼠标拖到图片最上/下边(在图片左半部分),鼠标变成上下剪头中间夹一横的样子,然后拖动,控制竖向的拉伸区域,左右拉伸其余也是这样,把鼠标拖到图片最左/右边(在图片上半部分),鼠标变成左右剪头中间夹一横的样子,然后拖动.

    4、.9图片的使用

            在布局中使用.9图片,如果用做容器布局,切容器布局中有子View,建议以下方式处理布局

    1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. android:layout_width="wrap_content"
    3. android:layout_height="wrap_content"
    4. android:orientation="vertical">
    5. <FrameLayout
    6. android:id="@+id/lly_bg_9"
    7. android:layout_width="303dp"
    8. android:layout_height="wrap_content"
    9. android:background="@drawable/bg_device_activity_pop" />
    10. <RelativeLayout
    11. android:id="@+id/lly_content"
    12. android:layout_width="303dp"
    13. android:layout_height="wrap_content"
    14. android:layout_gravity="center"
    15. android:orientation="vertical">
    16. RelativeLayout>
    17. RelativeLayout>
    FrameLayout(lly_bg_9)主要用于展示.9图片
    RelativeLayout(lly_content)主要用于页面内容
    

     这样写布局,绕开了容器设置.9图片后,内容展示受拉伸区域影响的问题,但是需要在代码中动态设置宽高,比如,把lly_content的宽高复赋值给lly_bg_9,以下为popupwindow的java设置,主要是View.post()代码块及里面的宽高设置代码,因为我只需要竖向拉伸,所以只设置了高度,之所以在 popupWindow.showAtLocation后面使用post,主要是考虑到post的运行机制,以及在Android进程不稳定的时候出现的渲染延迟等问题.

    1. View viewPop = View.inflate(context, R.layout.popup_device_activity_promotion, null);
    2. TextView tvCommint = viewPop.findViewById(R.id.tv_commit);
    3. viewPop.setRotationY(5);
    4. PopupWindow popupWindow = new PopupWindow(viewPop, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, false);
    5. popupWindow.setFocusable(true); //该值为false时,点击弹窗框外面window不会消失,即使设置了背景也无效,只能由dismiss()关闭
    6. popupWindow.setOutsideTouchable(false); //只有该值设置为true时,外层点击才有效
    7. popupWindow.setBackgroundDrawable(new BitmapDrawable(context.getResources(), (Bitmap) null));
    8. tvCommint.setOnClickListener(new View.OnClickListener() {
    9. @Override
    10. public void onClick(View v) {
    11. popupWindow.dismiss();
    12. onWindowButtonClinckLisenter.onButtonClinck(v.getId());
    13. }
    14. });
    15. LogUtil.I(TAG, "showAsDropDown");
    16. popupWindow.showAtLocation(context.getWindow().getDecorView(), Gravity.CENTER, 0, 0);
    17. RelativeLayout llyContent = viewPop.findViewById(R.id.lly_content);
    18. LinearLayout llyBg_9 = viewPop.findViewById(R.id.lly_bg_9);
    19. //同步点9背景布局与内容布局高度(点9图片作为容器背景时,会限制其子View的可展示区域大小,
    20. // 只会在可拉伸区域展示内容,为了避免这个问题,创建一个平行容器作为内容展示容器)
    21. llyContent.post(new Runnable() {
    22. @Override
    23. public void run() {
    24. llyBg_9.post(new Runnable() {
    25. @Override
    26. public void run() {
    27. llyBg_9.setMinimumHeight(llyContent.getHeight());
    28. }
    29. });
    30. }
    31. });

  • 相关阅读:
    SpringSecurity(八)【会话管理】
    【java学习—十】异常(1)
    3种等待方式,让你学会Selenium设置自动化等待测试脚本!
    类加载流程
    SpringMvc请求流程源码解析
    毕业设计:SpringBoot+Vue+Element的校内跑腿平台
    Python 踩坑记 -- 调优
    Shell-04条件判断
    【单链表增删查改接口的实现】
    vue3异步组件
  • 原文地址:https://blog.csdn.net/JiaoJunfeng/article/details/127674572