1
творю пользовательский интерфейс в классе View и я сделал RemoteViews в нем, но он теперь работаетRemoteViews теперь работает в классе View
View Class
public class CustomeView extends View {
Bitmap icon;
float left=0;
RemoteViews rs;
int width=0,height=0;
float def_value=0;
boolean unlock=false;
public CustomeView(Context context, AttributeSet attrs) {
super(context, attrs);
icon=BitmapFactory.decodeResource(getResources(), R.drawable.icon);
rs=new RemoteViews(context.getPackageName() ,R.layout.custom_ui);
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
width = display.getWidth();
height = display.getHeight();
left=width/2;
def_value=left;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint a=new Paint();
a.setTextSize(10);
canvas.drawBitmap(icon, left, 0, null);
canvas.drawText(String.valueOf(unlock), 0, 110, a);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(width, height);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_MOVE){
left=event.getX()-(icon.getWidth()/2);
isUnlock();
}
else if (event.getAction()==MotionEvent.ACTION_UP) {
if(def_value!=left){
left=def_value;
}
}
invalidate();
return true;
}
protected void isUnlock() {
if(left<=20){
unlock=true;
rs.setTextViewText(R.id.tvStatus, "True");
}
if(left>=width-20){
unlock=true;
rs.setTextViewText(R.id.tvStatus, "True");
}
}
}
раскладку custom_ui.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.helloworl.CustomeView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/tvStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"
android:layout_marginTop="154dp"
android:text="False" />
</RelativeLayout>
RemoteViews изменяет значение TextView в методе isUnlock, но он не работает. Пожалуйста, помогите мне решить эту проблему.
k thn wht я должен использовать для этого, я делаю блокировку экрана n, что объект растрового изображения перемещается влево и вправо, я хочу, чтобы этот растровый объект двигался влево и после достижения в какой-то момент его разблокировки экрана. так скажите мне, как я могу это решить? – user2290872
@ user2290872: То, что вы хотите сделать, возможно, не входит в возможности виджета приложения вообще, не говоря уже о одном из блокировщиков Android 4.2+. При этом вам нужно придерживаться виджета пользовательского интерфейса, поддерживаемого виджетами приложений: http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout – CommonsWare
, но я делаю блокировку экрана, предоставляя виджет. Я делаю блокировку экрана, поэтому, если у вас есть какая-либо идея, скажите мне – user2290872