# Day04-Android

Logcat

LayoutInflate把Xml转换纯成View的工具。

自定义吐司

LayoutParams.LayoutParams布局参数。设计宽高

 读源码心得

1.LinearLayoutViewGroup的子类。而布局参数LayoutParams是一个静态类,主要是用来设计各个 控件的长宽高,根据不同类继承。每个特定的布局类有自己同的属性,所以在封装的时候类也会不同。

1.中午写完自定义toast界面在睡觉;

问题

  1. 适配器里适配的是哪个控件的属性?完成
  2. 对话框练习,墙纸的更换;完成
  3. 稀疏布尔数组是什么玩意?完不成。
  4. Toast自定义界面。完成
  5. 对话框的练习?完成
  6. 工厂设计模式;完成
  7. getResources()方法的作用 完成

解决问题:

  • 7. getResources()方法的作用

资源包 package android.content.res;在安卓里面所属的是这样的资源包,而getResources()方法在ContextThemeWrapper类里面重写了该方法,重要的是一个Activity继承并且实现了如下的类

    public class Activity extends ContextThemeWrapper
        implements LayoutInflater.Factory2,
        Window.Callback, KeyEvent.Callback,
        OnCreateContextMenuListener,ComponentCallbacks2,
        Window.OnWindowDismissedCallback 

而当中的ContextThemeWrapper该方法

  • 工厂设计模式
    就是内部创建一个工厂类,用来初始化该类,通过工厂类来初始化该类的对象。

  • 2.墙纸的更换

<!-- 设置手机壁纸,需要权限 -->
    <uses-permission android:name="android.permission.SET_WALLPAPER"/>
/**
     * 一个长按修改手机壁纸的方法。
     */

    private void setPaper()
    {
        // 获取到控件,
        final ImageView bgimg_tv = (ImageView) findViewById(R.id.bgimg_tv);
        // 设置监听事件
        bgimg_tv.setOnLongClickListener(new View.OnLongClickListener()
        {

            @Override
            public boolean onLongClick(View v)
            {
                // 通过图片控件前景图片属性来设置手机壁纸

                System.out.println("长按触摸监听");
                try

                /**
                 * 、 Drawable :可绘制的资源,包含 Bitmap、图层,可绘制的颜色资源等,它是一个抽象类
                 * 
                 */
                { // 清除手机壁纸
                    clearWallpaper();
                    // getDrawable获取到的全景图片
                    Drawable drawable = bgimg_tv.getDrawable();
                    // 位图对形象
                    BitmapDrawable bitmapDra = (BitmapDrawable) drawable;
                    // bitmap是一个位图格式,如bigMap等等。
                    Bitmap bitmap = bitmapDra.getBitmap();
                    setWallpaper(bitmap);

                } catch (IOException e)
                {

                    e.printStackTrace();
                }

                return true;
                // 如果返回
            }
        });
    }
  • 4. Toast自定义界面。
 * 自己定义一个xml界面
     */
    public void showXmlLayout(View v)
    {
        /**
         * 想要吐出一个界面:用xml布局的。 设计出要吐出的界面。 resoure : 我们要加载的xml文件的资源id root:
         * 是否要加入的到父控件当中
         */

        View layoutView = LayoutInflater.from(context).inflate(R.layout.toast_layout, null);

        // 设置文本的参数 设置加载文本文件的参数,必须通过LayoutView获取。
        TextView textView = (TextView) layoutView.findViewById(R.id.title_tv);
        textView.setText("你怎么看待这个问题!");

        // 创建toast对象,
        Toast toast = new Toast(context);
        // 把要Toast的布局文件放到toast的对象中
        toast.setView(layoutView);
        toast.setDuration(toast.LENGTH_SHORT);
        toast.setGravity(Gravity.TOP, 70, 80);
        toast.show();

    }

### 脑洞大开

  • 一定要有目的有机会的去学习编程。这样写程序会更快许多。
  • -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值