startActivity(intent,ActivityOptionsCompat.makeSceneTransitionAnimation(this, findViewById(R.id.sms_create_button),getString(R.string.top_compat)).toBundle());
是用这个 可以把A页面的 指定View与B页面的 View绑定。
startActivity(intent,ActivityOptionsCompat.makeSceneTransitionAnimation(this, findViewById(R.id.sms_create_button),getString(R.string.top_compat)).toBundle());
是用这个 可以把A页面的 指定View与B页面的 View绑定。
String treaty="서비스 이용약관,개인정보 취급 방침에 동의합니다.";SpannableString spannableString=new SpannableString(treaty);spannableString.setSpan(new UnderlineSpan(),0,8,0);spannableString.setSpan(new UnderlineSpan(),8,17,0);mTreatyCheckBox.setText(spannableString);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.user_details_list_row, parent,false);
holder = new ViewHolder();
holder.mCaptionTextView = (TextView)convertView.findViewById(id.user_detail_row_caption);
holder.mWatcher = new MutableWatcher();
holder.mDetailEditText = (EditText)convertView.findViewById(id.user_detail_row_value);
holder.mDetailEditText.addTextChangedListener(holder.mWatcher);
convertView.setTag(holder);
} else{
holder = (ViewHolder) convertView.getTag();
}
holder.mCaptionTextView.setText(mUserCaptions.get(position));
holder.mWatcher.setActive(false);
holder.mDetailEditText.setText(mUserDetails.get(position),BufferType.EDITABLE);
holder.mWatcher.setPosition(position);
holder.mWatcher.setActive(true);
return convertView;
}
static class ViewHolder{
public TextView mCaptionTextView;
public EditText mDetailEditText;
public MutableWatcher mWatcher;
}
class MutableWatcher implements TextWatcher {
private int mPosition;
private boolean mActive;
void setPosition(int position) {
mPosition = position;
}
void setActive(boolean active) {
mActive = active;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void afterTextChanged(Editable s) {
if (mActive) {
mUserDetails.set(mPosition, s.toString());
}
}
}
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+android:id/background" android:drawable="@mipmap/img_rating_off" /> 这个需要注意的是 如果想显示一半的话 需要加下面内容 <item android:id="@+android:id/secondaryProgress" android:drawable="@mipmap/img_rating_off"> </item> <item android:id="@+android:id/progress" android:drawable="@mipmap/img_rating_on" /> </layer-list>
<style name="ManagerRatingStyle" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/ratingbar_drawable</item> <item name="android:numStars">5</item> <item name="android:minHeight">34px</item> <item name="android:maxHeight">34px</item></style>
<RatingBar android:layout_marginTop="@dimen/dp5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:id="@+id/ratingbar" style="@style/ManagerRatingStyle" android:numStars="5" android:rating="3.5" android:stepSize="0.5" />
IabHelper.OnIabPurchaseFinishedListener
这方法当中有个 Purchase 。这个是 订单完成时候回调过来的订单信息signingConfigs { debug{ storeFile file('D:/project/android-play-billing-master/TrivialDrive/kirstore.jks') keyAlias 'kirsong' keyPassword "china123" storePassword "china123" } }
signingConfigs {
release {
storeFile file('D:/project/android-play-billing-master/TrivialDrive/kirstore.jks')
keyAlias 'kirsong' keyPassword "china123" storePassword "china123" }
}
buildTypes {
release {
/**使用 以下命名方式*/ signingConfig signingConfigs.release } }