Android的资源引用(2)(Drawable)

一、Drawable资源通常存放在/res/drawable目录下面。

二、图片资源

图片资源是最简单的Drawable资源.只要把*.png,*.jpg,*.gif 等格式的图片放入目录下面就可以使用,Android SDK会在编译时自动加载图片,并在R资源清单中生成索引。

在java代码中使用R.drawable.file_name

三、StateListDrawable资源用于组织多个Drawable对象,StateListDrawable对象所显示的会根据目标组件的状态来改变。

定义StateListDrawable对象时的xml文件的根元素是,该元素包含多个元素,该元素可指定如下的属性,

android:color或者android:drawable:指定颜色或者Drawable对象

Android:state_Xxx:指定特定的一个状态

 

其中有如下的状态

Android的资源引用(2)(Drawable)_第1张图片

 



      //按下时的背景图片
                            //原本的背景图片

没按之前

Android的资源引用(2)(Drawable)_第2张图片

按下之后

Android的资源引用(2)(Drawable)_第3张图片

 

四、LayerDrawable资源

Android的资源引用(2)(Drawable)_第4张图片

Android的资源引用(2)(Drawable)_第5张图片

 

Android的资源引用(2)(Drawable)_第6张图片

 

五、ShapDrawable资源

其根元素为

可指定如下的属性:android:shape=["rectange"|"oval"|"line"|"ring"]指定那种几何图形

可定义四个角的幅度,定义渐变填充,定义内边距,定义大小,定义单种颜色填充,定义几何绘制边框

Android的资源引用(2)(Drawable)_第7张图片

 

 

 


  
      //按下
        
            
            
        
    
      //正常
        
            
            
        
    

Android的资源引用(2)(Drawable)_第8张图片

 

六、ClipDrawable资源

可指定如下的三个属性:

android:drawable:指定截取源

android:clipOrientation:指定截取的方向,可水平,可垂直

android:gravity:指定截取时的对齐方式

setLevel(int level)方法可以设置截取的区域大小

 

徐徐展开的风景(实例)

(1)xml



(2)java代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView imageView=findViewById(R.id.image_1);
        final ClipDrawable drawable=(ClipDrawable)imageView.getDrawable();

        final Handler handler=new Handler(){
            public void handleMessage(Message msg){
                if(msg.what==0x1233){
                    drawable.setLevel(drawable.getLevel()+200);
                }
            }
        };

        final Timer timer=new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                Message message=new Message();
                message.what=0x1233;
                handler.sendMessage(message);
                if(drawable.getLevel()>=10000){
                    timer.cancel();
                }
            }
        },0,50);

      }

}

 

Android的资源引用(2)(Drawable)_第9张图片

 

七、AnimationDrawable

可指定如下的四个元素

alpha:设置透明度

scale:设置缩放

translate:设置图片进行位移

rotate设置进行旋转

 

Android的资源引用(2)(Drawable)_第10张图片

 

Android的资源引用(2)(Drawable)_第11张图片

 

 

 

实例动画:

(1)xml



    
    

(2)java代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageView2=findViewById(R.id.image_2);
        final Animation animation= AnimationUtils.loadAnimation(this,R.anim.my_anim);
        animation.setFillAfter(true);   //动画结束保留图片变换结果
        imageView2.startAnimation(animation); //开始动画

      }

}

Android的资源引用(2)(Drawable)_第12张图片

     

  八、属性动画    

   Android的资源引用(2)(Drawable)_第13张图片

 

Android的资源引用(2)(Drawable)_第14张图片

 

Android的资源引用(2)(Drawable)_第15张图片

 

 

 

九、xml文件的资源

 

Android的资源引用(2)(Drawable)_第16张图片

 

实例解析xml文件

(1)xml



    疯狂的java
    c++编程

(2)解析的java代码

public class PropertyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.property_activity);
       
        final TextView boos_d=findViewById(R.id.book_d);
        Button jx=findViewById(R.id.jx);
        jx.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                XmlResourceParser xrp=getResources().getXml(R.xml.books);
                try{
                    StringBuilder sb=new StringBuilder();
                    while (xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
                        if(xrp.getEventType()==XmlResourceParser.START_TAG){
                            String tagName=xrp.getName();
                            if(tagName.equals("book")){

                                //用名称来获取属性值
                                String bookprice=xrp.getAttributeValue(null,"price");
                                sb.append("价格:"+bookprice+"  ");

                                //根据属性的索引获取属性值
                                String bookcbs=xrp.getAttributeValue(1);
                                sb.append("出版社:"+bookcbs+"  ");

                                String bookName=xrp.nextText();
                                sb.append("书名:"+bookName);
                            }
                            sb.append("\n");
                            //一个book解析完成
                        }
                        xrp.next();
                    }
                    boos_d.setText(sb.toString());

                } catch (XmlPullParserException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

    }

}

 

Android的资源引用(2)(Drawable)_第17张图片

 

你可能感兴趣的:(android)