Android 如何在触摸屏上更改活动背景?

Android 如何在触摸屏上更改活动背景?,android,android-activity,Android,Android Activity,我已在活动中嵌入imageview。当我触摸imageview时,我需要背景变得透明&当我释放imageview时,背景恢复正常 如果我在setContentView之后或在清单中设置活动主题,我无法在触摸时动态更改它。如何继续 public class MainActivity extends ActionBarActivity { private final String TAG="FrameTest"; private ImageView ivExpanded,ivColla

我已在活动中嵌入imageview。当我触摸imageview时,我需要背景变得透明&当我释放imageview时,背景恢复正常

如果我在setContentView之后或在清单中设置活动主题,我无法在触摸时动态更改它。如何继续

public class MainActivity extends ActionBarActivity {

   private final String TAG="FrameTest";
   private ImageView ivExpanded,ivCollapsed;
   private FrameLayout frameLayout;
   private float threshold,initialY,finalY,a;
   Animation animFadeIn,animFadeOut;




    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Log.d(TAG,"current theme is"+this.getTheme());
        frameLayout=(FrameLayout)findViewById(R.id.frameLayout);
        ivExpanded=(ImageView)findViewById(R.id.ivExpanded);
        ivCollapsed=(ImageView)findViewById(R.id.ivCollapsed);
        animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.fade_in);
        animFadeOut = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.fade_out);
        //getting threshold
        ivCollapsed.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
        threshold=(ivCollapsed.getMeasuredHeight())/6;
        Log.d(TAG, "the threshold is"+threshold);

        ivExpanded.setVisibility(View.GONE);
        //ivCollapsed.setVisibility(View.VISIBLE);

        ivCollapsed.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                int action=event.getAction();

                switch(action)
                {
            case MotionEvent.ACTION_DOWN:
                    initialY=event.getY();
                //  Log.d(TAG,"initialY ="+initialY);
                    break;
            case MotionEvent.ACTION_MOVE:  
             {  
                //downward motion:play animation
                 if(((event.getY()-initialY)>0) && ((event.getY()-initialY)>threshold) )
                 {   Log.d(TAG, "downwrd animation");
                    ivExpanded.setVisibility(View.VISIBLE);
                    ivExpanded.startAnimation(animFadeIn); 
                    ivCollapsed.setVisibility(View.GONE);
                 }
                 //upward motion:animation should not be displayed
                 else if((event.getY()-initialY)<0)
                 {   Log.d(TAG, "no animation");
                     break;
                 }

             }  

            }   
            return true;
            }
        });


        ivExpanded.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                int action=event.getAction();

                switch(action)
                {
            case MotionEvent.ACTION_DOWN:
                    finalY=event.getY();
                //  Log.d(TAG,"initialY ="+initialY);
                    break;
            case MotionEvent.ACTION_MOVE:  
            {   
                //downward motion:animation should not be displayed
                if(event.getY()>finalY)
                {   Log.d(TAG, "no animation");
                    break;
                }   
                //upward motion:less than threshold,no animation
                else if((finalY-event.getY())<threshold)
                {   Log.d(TAG, "no animation");
                    break;
                }   
                else if((finalY-event.getY())>threshold)
                {//show animation
                    Log.d(TAG, "upward animation");

                ivExpanded.setVisibility(View.GONE);
                ivExpanded.startAnimation(animFadeOut);
                ivCollapsed.setVisibility(View.VISIBLE);

                break;
                }
            }   
                }   
                return true;
            }
        });


  }
}
公共类MainActivity扩展了ActionBarActivity{
私有最终字符串TAG=“FrameTest”;
private ImageView IveExpanded,ivCollapsed;
私有框架布局;
私人浮动阈值,最初,最终,a;
动画动画,动画淡出;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Log.d(标记“当前主题为”+this.getTheme());
frameLayout=(frameLayout)findviewbyd(R.id.frameLayout);
IveExpanded=(ImageView)findViewById(R.id.IveExpanded);
ivCollapsed=(ImageView)findViewById(R.id.ivCollapsed);
animFadeIn=AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.淡入);
animfeadeout=AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.淡出);
//获取阈值
iv.测量(测量未指定,测量未指定);
阈值=(ivCollapsed.getMeasuredHeight())/6;
Log.d(标记“阈值为”+阈值);
设置可见性(View.GONE);
//iv.setVisibility(View.VISIBLE);
ivCollapsed.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
//TODO自动生成的方法存根
int action=event.getAction();
开关(动作)
{
case MotionEvent.ACTION\u DOWN:
initialY=event.getY();
//Log.d(标签,“initialY=”+initialY);
打破
case MotionEvent.ACTION\u移动:
{  
//向下运动:播放动画
如果(((event.getY()-initialY)>0)和((event.getY()-initialY)>threshold))
{Log.d(标记“downwrd动画”);
ivExpanded.setVisibility(View.VISIBLE);
ivExpanded.startAnimation(animFadeIn);
ivcollated.setVisibility(View.GONE);
}
//向上运动:不应显示动画
else if((event.getY()-initialY)finally)
{Log.d(标记“无动画”);
打破
}   
//向上运动:小于阈值,无动画
else if((finalY event.getY())阈值)
{//播放动画
Log.d(标记“向上动画”);
设置可见性(View.GONE);
IveExpanded.startAnimation(动物灭绝);
iv.setVisibility(View.VISIBLE);
打破
}
}   
}   
返回true;
}
});
}
}

点击下面的代码片段,获取活动根视图的触控监听器:

parentView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                parentView.setBackgroundColor(YourColor);        

                return false;
            }
        });
编辑:谈话太多,无法使活动透明:


您好,我需要活动透明化,即背景屏幕应可见。有什么线索吗?我想我应该说我需要窗户透明。