Android 如何在触摸屏上更改活动背景?
我已在活动中嵌入imageview。当我触摸imageview时,我需要背景变得透明&当我释放imageview时,背景恢复正常 如果我在setContentView之后或在清单中设置活动主题,我无法在触摸时动态更改它。如何继续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
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;
}
});
编辑:谈话太多,无法使活动透明:
您好,我需要活动透明化,即背景屏幕应可见。有什么线索吗?我想我应该说我需要窗户透明。